平成8年度 秋期 第二種 午後 問12

                        [更新日]1996.11.19
問12 次のCOBOLプログラムの説明及びプログラムを読んで、設問に答えよ。 〔プログラムの説明〕 売上伝票のデータを格納した売上ファイルがある。この売上ファイル中の商品コー ドが商品マスタファイル中にあることを検査し、商品マスタファイルにない商品コー ドのデータをエラーリストに印字するプログラムである。 (1)売上ファイル(URI-FILE)のレコード様式は,次のとおりである。 __________________ |伝票番号 | 商品コード| 売上数量 | | 4けた | 5けた | 3けた |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 1. 売上ファイルは,伝票番号,商品コードの昇順に整列されている。 2. 商品コードは,5けたの数字である。 ��3. 同じ伝票番号のレコードで,商品コードが重複することはない。 (2)商品マスタファイル(SYOHIN-MASTER)は,商品コードを主レコードキーとし た索引ファイルであり,レコード様式は次のとおりである。 ________________________ | 商品コード | 商品名 | | 5けた | 20けた |  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (3)エラーリストには,エラーレコードの伝票番号,商品コード及び売上数量を1行 に印字する。エラーリストのタイトル及び見出しは,先頭に1回だけ印字する。印 字例を図1に示す。 〔プログラム〕 1 DATA DIVISION. 2 FILE SECTION. 3 FD URI-FILE. 4 01 URI-REC. 5 03 U-DENPYO PIC X(4). 6 03 U-SYOHIN PIC 9(5). 7 03 U-SURYO PIC 9(3). 8 FD SYOHIN-MASTER. 9 01 SYOHIN-REC. 10 03 S-SYOHIN PIC 9(5). 11 03 S-SYOHIN-MEI PIC X(20). 12 FD PRINT-FILE. 13 01 PRINT-REC PIC X(80). 14 WORKING-STORAG SECTION. 15 01 EOF-FLAG PIC 9(1) VALUE 0. 16 01 P-HYO-MEI. 17 03 PIC X(21) VALUE 18 " ショウヒンコード エラーリスト". 19 01 P-HYO-TO. 20 03 PIC X(27) VALUE 21 "デンピョウ ショウヒンコード スウリョウ" 22 01 P-MEISAI. 23 03 PIC X(1) VALUE SPACE. 24 03 P-DENPYO PIC X(10). 25 03 P-SYOHIN PIC X(ll). 26 03 P-SURYO PIC zz9. 27 PROCEDURE DIVISION. 28 HAJIME. 29 OPEN INPUT URI-FILE SYOHIN-MASTER OUTPUT PRINT-FILE. 30 WRITE PRINT-REC FROM P-HYO-MEI AFTER PAGE. 3l WRITE PRINT-REC FROM p-HYO-TO AFTER 2. 32 READ URI-FILE AT END MOVE 1 TO EOF-FLAG. 33 PERFORM UNTIL EOF-FLAG = 1 34 MOVE U-SYOHIN TO S-SYOHIN 35 READ SYOHIN-MASTER INVALID KEY 36 PERFORM PRINT-ERROR 37 END-READ 38 READ URI-FILE AT END 39 MOVE 1 TO EOF-FLAG 40 END-READ 4l END-PERFORM. 42 OWARI. 43 CLOSE URI-FILE SYOHIN-MASTER PRINT-FILE. 44 STOP RUN. 45 PRINT-ERROR. 46 MOVE U-DENPYO TO P-DENPYO. 47 MOVE U-SYOHIN TO P-SYOHIN. 48 MOVE U-SURYO TO P-SURYO. 49 WRITE PRINT-REC FROM P-MEISAI AFTER 1. 設問 次に示す機能を追加するために、プログラムを修正する。修正内容を表す表中 の〔 〕に入れる正しい答えを、解答群の中から選ベ。 エラーとなった売上ファイル中の商品コードの5けたの数字のうち,いずれか1 けたの数字を変えることによって商品マスタファイルに合致する商品コードが見 つかる場合がある。このような場合に、訂正の候補となる商品コードとその商品 名も一緒に印字する。 (1) エラーとなった一つの商品コードについて、侯補となる商品コードが見つか った場合は、その商品コード及び商品名を次の行に印字する。候補となる商品 コードが二つ以上あるときには、1行に1候補ずつ印字する。 (2) この機能を追加したエラーリストの印字例を図2に示す。 表 機能追加のための修正内容 ┌─────┬────────────────────────────────┐ │ 処理 │ 文 │ ├─────┼──┬─────────────────────────────┤ │ l0行目を │ 前 │03 S-SYOHIN PIC 9(5). │ │ 置換え ├──┼─────────────────────────────┤ │ │ 後 │03 S-SYOHIN. │ │ │ │ 05 S-CODE PIC 9(1) 〔 a 〕. │ ├─────┼──┼─────────────────────────────┤ │ 20〜 │ 前 │03 PIC X(27) VALUE │ │ 21行目 │ │ "デンピョウ ショウヒンコード スウリョウ". │ │ を置換え├──┼─────────────────────────────┤ │ │ 後 │03 PIC X(45) VALUE │ │ │ │ "デンピョウ ショウヒンコード スウリョウ テイセイコウホ". │ │ ├──┴─────────────────────────────┤ │ │ 01 X PIC 9(1). │ │ 26行目と │ 01 Y PIC 9(2). │ │ 27行目の │ 01 P-KOUHO. │ │ に追 │ 03 PIC X(32) VALUE SPACE. │ │ │ 03 P-KOUHO-CODE PIC X(8). │ │ │ 03 P-KOUHO-MEI PIC X(20). │ ├─────┼────────────────────────────────┤ │ │ PERFORM VARYING X FROM 1 BY 1 〔 b 〕 │ │ 49行目の │ PERFORM VARYING Y FROM 0 BY 1 〔 c 〕 │ │ 後に追加 │ MOVE U-SYOHIN TO S-SYOHIN │ │ │ MOVE Y TO S-CODE (X) │ │ │ IF U-SYOHIN NO = S-SYOHIN THEN │ │ │ READ SYOHIN-MASTER 〔 d 〕 │ │ │ MOVE S-SYOHIN TO P-KOUHO-MEI │ │ │ MOVE S-SYOHIN-MEI TO P-KOUHO-MEI │ │ │ WRITE PRINT-REC FROM P-KOUHO AFTER 1 │ │ │ END-READ │ │ │ END-IF │ │ │ END-PERFORM │ │ │ END-PERFORM. │ └─────┴────────────────────────────────┘ 解答群 ア AT END イ INVALID KEY ウ NOT INVALID KEY 工 OCCURS 5 オ OCCURS 10 カ VALUE ZERO キ UNTIL S-SYOHIN NOT = U-SYOHIN ク UNTIL X > 5 ケ UNTIL Y > 9 コ UNTIL Y > 10