平成30年 春期 基本情報技術者 午後 問10
問10 COBOL
次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 Web 上でショッピングサイトを運営している P 社では,注文を受けて入金確認の処理を 待っている商品の注文情報を注文ファイルに格納し,前日に入金された情報を 入金ファイルに格納する。 P 社では毎朝 10 時に入金確認の処理を実行し, 注文ファイルの情報と入金ファイルの情報を突き合わせて結果リストを印字する。 このとき,入金が確認できなかった商品の注文情報は,出荷待ちファイルに格納する。 前処理として,注文ファイルには,前日にプログラムを実行した際に 出力された出荷待ちファイルの情報と,前日に受けた商品の注文情報を格納しておく。 このショッピングサイトでは,代金の支払方法として,銀行振込,コンビニ払い, クレジットカード払い(以下,カード払いという), 商品着払い(以下,着払いという)のいずれかを,注文時に選択できる。 注文時に選択した支払方法と入金方法が異なることはない。 銀行振込及びコンビニ払いによる入金の情報が入金ファイルに格納され, 入金が確認できた注文を出荷対象とする。支払方法にカード払い又は着払いが選択された場合は, 注文を受けた翌日に出荷する。 (1) 注文ファイルは,図1に示すレコード様式の順ファイルである。
図1 注文ファイルのレコード様式
A 注文日時には,西暦の年,月,日と,24 時間表記の時,分,秒が, それぞれ 4 桁,2 桁,2 桁,2 桁,2 桁,2 桁で設定されている。 B 請求金額には,正の整数が設定されている。 C 支払種別には,注文時に選択された支払方法が,銀行振込,コンビニ払い, カード払い,着払いのそれぞれに対応する値,1,2,3,4 で設定されている。 D レコードは,注文番号の昇順に整列されている。 (2) 入金ファイルは,図2に示すレコード様式の順ファイルである。
図2 入金ファイルのレコード様式
A 入金日時には,西暦の年,月,日と,24 時間表記の時,分,秒が, それぞれ 4 桁,2 桁,2 桁,2 桁,2 桁,2 桁で設定されている。 B 入金金額には,正の整数が設定されている。 C 入金種別には,入金方法が,銀行振込,コンビニ払いのそれぞれに対応する値,1,2 で設定されている。 D レコードは,注文番号の昇順に整列されている。同じ注文番号のレコードが複数格納されることはない。 (3) 出荷待ちファイルは,図3に示すレコード様式の順ファイルである。 支払方法に銀行振込又はコンビニ払いが選択された注文のうち, 入金を確認できなかった商品の注文情報が格納される。
図3 出荷待ちファイルのレコード様式
図4 結果リストの印字様式
A 差額欄には,入金金額から請求金額を減算した金額を印字する。 結果欄のコードが 10 の場合は,請求金額欄と差額欄には,0 を印字する。支払方法が カード払い,着払いのいずれかであった場合は,入金金額欄と差額欄には,0 を印字する。 B 判定がエラーの場合は,出荷待ちファイルに情報は出力せず,個別に対処する。 〔プログラム1〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD ORD-FILE. 4 Ø1 ORD-REC PIC X(3Ø). 5 FD RCP-FILE 6 Ø1 RCP-REC PIC X(3Ø). 7 FD WAT-FILE. 8 Ø1 WAT-REC PIC X(3Ø). 9 FD PRT-FILE. 1Ø Ø1 PRT-REC. l1 Ø2 PRT-NO PIC 9(8). 12 Ø2 PIC X(4). 13 Ø2 PRT-RSLT PIC X(2). 14 Ø2 PIC X(6). 15 Ø2 PRT-ORD PIC Z,ZZZ,ZZ9. 16 Ø2 PIC X(4). 17 Ø2 PRT-RCP PIC Z,ZZZ,ZZ9. 18 Ø2 PIC X(4). 19 Ø2 PRT-DIFF PIC --,---,--9. 2Ø WORKING-STORAGE SECTION. 21 Ø1 ORD-DATA. 22 Ø2 ORD-NO PIC 9(8). 23 88 ORD-EOF VALUE 99999999. 24 Ø2 ORD-DT. 25 Ø3 ORD-DATE PIC 9(8). 26 Ø3 ORD-TIME PIC 9(6). 27 Ø2 ORD-AMNT PIC 9(7). 28 Ø2 ORD-CODE PIC 9(1). 29 Ø1 RCP-DATA. 3Ø Ø2 RCP-NO PIC 9(8). 31 88 RCP-EOF VALUE 99999999. 32 Ø2 RCP-DT. 33 Ø3 RCP-DATE PIC 9(8). 34 Ø3 RCP-TIME PIC 9(6). 35 Ø2 RCP-AMNT PIC 9(7). 36 Ø2 RCP-CODE PIC 9(1). 37 PROCEDURE DIVISION. 38 MAIN-PROC. 39 OPEN INPUT ORD-FILE RCP-FILE 4Ø OUTPUT WAT-FILE PRT-FILE. 41 INITIALIZE ORD-DATA RCP-DATA. 42 PERFORM ORD-PROC. 43 PERFORM RCP-PROC. 44 MOVE SPACE TO PRT-REC. 45 PERFORM UNTIL a 46 INITIALIZE PRT-REC 47 MOVE ORD-NO TO PRT-NO 48 EVALUATE TRUE 49 WHEN ORD-NO < RCP-NO 5Ø IF b THEN 51 MOVE "ØØ" TO PRT-RSLT 52 ELSE 53 WRITE WAT-REC FROM ORD-DATA 54 END-IF 55 MOVE ORD-AMNT TO PRT-ORD 56 PERFORM ORD-PROC 57 WHEN ORD-NO = RCP-NO 58 IF c THEN 59 MOVE "ØØ" TO PRT-RSLT 6Ø ELSE 61 MOVE "2Ø" TO PRT-RSLT 62 COMPUTE PRT-DIFF = RCP-AMNT - ORD-AMNT 63 END-IF 64 MOVE ORD-AMNT TO PRT-ORD 65 MOVE RCP-AMNT TO PRT-RCP 66 PERFORM ORD-PROC 67 PERFORM RCP-PROC 68 WHEN ORD-NO > RCP-NO 69 MOVE "1Ø" TO PRT-RSLT 7Ø MOVE RCP-AMNT TO PRT-RCP 71 MOVE RCP-NO TO PRT-NO 72 PERFORM RCP-PROC 73 END-EVALUATE 74 IF PRT-RSLT NOT = SPACE THEN 75 d 76 END-IF 77 END-PERFORM. 78 CLOSE ORD-FILE RCP-FILE WAT-FILE PRT-FILE. 79 STOP RUN. 8Ø ORD-PROC. 81 IF NOT ORD-EOF THEN 82 READ ORD-FILE INTO ORD-DATA AT END SET ORD-EOF TO TRUE 83 END-READ 84 END-IF. 85 RCP-PROC. 86 IF NOT RCP-EOF THEN 87 READ RCP-FILE INTO RCP-DATA AT END SET RCP-EOF TO TRUE 88 END-READ 89 END-IF.
a に関する解答群 ウ ORD-EOF OR RCP-EOF エ RCP-EOF b,c に関する解答群
ウ ORD-AMNT NOT = RCP-AMNT エ ORD-CODE = 1 OR 2 オ ORD-CODE = 3 OR 4 カ ORD-CODE = RCP-CODE d に関する解答群 ウ SET ORD-EOF RCP-EOF TO TRUE エ WRITE PRT-REC
e に関する解答群 ウ 行番号 65 と 66 の間 エ 行番号 71 と 72 の間 f に関する解答群 ウ W-CNT > 7 エ W-CNT NOT = 7
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||