平成9年度 春期 第二種 午後 問8

                        [更新日]1997.05.30
問8 次のCOBOLプログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 データを“," で区切ったCSV(Comma Separated Value)形式のファイルを読み 込んで,指定されたタブ位置に合わせて印字するプログラムである。 (1)このCSV形式のファイルCSV-FILEのレコード長は80けたであり,各レコード には“,”で区切られた文字列データが格納されている。レコード内容の例 を次に示す。 例:CSV-FILEのレコード内容 ┌─────────────────────────────────────┐ │105,トウキョウトミナトク,ジョウホウショリギジュツシャシケンセンター,001001│ └─────────────────────────────────────┘ ��1. 1レコードに格納されている文字列データの個数は,1〜5個である。 ��2. 1レコード中の“,”を含むデータの長さが80けたに満たない場合,余白のけ たにはLOW-VALUEが格納されている。 ��3. 文字列データは,長さが0〜80けたであり,“,”及びLOW-VALUEを含まない。 (2)タブ位置(各文字列データの印字開始けたの位置)の指定は,標準入力装置から ACCEPT文で読み込む。入力様式は,次のとおりである。
��1. 指定できるタブ位置の数は,1〜5個である。 2. タブ位置の値は,“01”〜“99”であり,次の条件を満たす。 タブ位置1<タブ位置2<タブ位置3<タブ位置4<タブ位置5 ��3. タブ位置の指定例を,次に示す。 例:タブ位置の指定 ┌─┬─┬─┬─┬─┬─┐ │ 3│01│08│40│ │ │ └─┴─┴─┴─┴─┴─┘ (3)印字は,次のように行う。 ��1. CSV-FILEの各文字列データを,指定されたタブ位置から順に印字する。 ��2. 文字列データの個数が,指定されたタブ位置の個数よりも多い場合には,指定 されたタブ位置の個数分だけの文字列データを印字する。例えば,文字列データ が5個あるにもかかわらずタブ位置が3個しか指定されなかった場合には,5個 の文字列データのうち最初の3個のデータだけを印字する。 ��3. 文字列データが,次のタブ位置までに入りきらない場合には,次のタブ位置の 1けた前まで印字する。 ��4. 印字位置が120けたを超えてしまう場合には,120けた目まで印字する。 ��5. (2)の3.のようにタブ位置が指定されたときの印字例を,次に示す。
〔プログラム〕 DATA DIVISION. FILE SECTION. FD CSV-FILE. Ol CSV-REC. 03 C-KETA PIC X(1) OCCURS 80. FD PRINT-FILE. O1 PRINT-REC PIC X(120). WORKING-STORAGE SECTION. O1 EOF-FLAG PIC X(1) VALUE SPACE. O1 HENSYU-AREA. 03 H-KETA PIC X(1) OCCURS 120. O1 TAB-SET. 03 TAB-CNT PIC 9(1). 03 TAB PIC 9(2) OCCURS 5. O1 T-POS PIC 9(1). O1 C-POS PIC 9(2). O1 P-POS PIC 9(3). PROCEDURE DIVISION. MAIN-RTN. ACCEPT TAB-SET. OPEN INPUT CSV-FILE OUTPUT PRINT-FILE. READ CSV-FILE AT END MOVE "E" TO EOF-FLAG. PERFORM UNTIL EOF-FLAG = "E" MOVE SPACE TO HENSYU-AREA MOVE 1 TO T-POS MOVE [ a ] TO P-POS PERFORM VARYNG [ b ] FROM 1 BY 1 UNTIL C-POS > 80 OR C-KETA (C-POS) = LOW-VALUE OR P-POS > 120 IF C-KETA (C-POS) = [ c ] THEN COMPUTE T-POS = T-POS + 1 IF T-POS > TAB-CNT THEN MOVE 121 TO P-POS ELSE MOVE TAB (T-POS) TO P-POS END-IF ELSE IF T-POS = TAB-CNT OR P-POS NOT = [ d ] THEN MOVE C-KETA (C-POS) TO H-KETA (P-POS) COMPUTE P-POS = P-POS + 1 END-IF END-IF END-PERFORM WRITE PRINT-REC FROM HENSYU-AREA AFTER 2 READ CSV-FILE AT END MOVE "E" TO EOF-FLAG END-READ END-PERFORM. CLOSE CSV-FILE PRINT-FILE. STOP RUN. 設問 プログラム中の[ ]に入れる正しい答えを,解答群の中から選ベ。 解答群 ア 1 イ 120 ウ“,” エ C-POS オ P-POS カ P-POS + 1 キ TAB(T-POS) ク TAB(T-POS + 1) ケ TAB-CNT コ T-POS + 1

戻る  前頁:問7  次頁:問9