平成16年 春期 基本情報技術者 午後 問11
問11 COBOL
〔プログラムの説明〕 社員別業務別の1か月分の作業日報ファイルを読み込み, 社員別業務別の作業時間月計ファイルと社員別の超過時間月計ファイルを作成するプログラムである。 (1) 作業日報ファイル NIPPO-FILE のレコード様式は,次のとおりである。
@ 作業日種別の値は,0 のときは平日出勤日を示し,1 のときは休日出勤日を示す。 A 作業時間は,1 時間単位とする。 B 平日出勤日1日の作業時間の合計は 8 時間以上である。 C 平日出勤日1日の作業時間のうち 8 時間を超えた分と, 休日出勤日の作業時間を超過時間とみなす。 D 各作業日の作業時間の合計は 24 時間以内である。 E 同一社員コードのレコードに現れる業務コードは,100 種類以下である。 F 1人の社員が1日の間に複数の業務を行ったときは,行った業務ごとにレコードがある。 G 1人の社員が連続して複数日にまたがって同一業務を行ったときは, 作業日ごとにレコードがある。 H 作業日報ファイルは,社員コード及び作業日の昇順に整列された順ファイルである。 I ファイルの内容は,すべて正しいものとする。 (2) 作業時間月計ファイル SAGYO-FILE のレコード様式は,次のとおりである。
社員ごとに業務ごとの作業時間を集計した順ファイルである。 (3) 超過時間月計ファイル CHOKA-FILE のレコード様式は,次のとおりである。
@ 社員ごとに各作業日の超過時間を求め,1 か月分を集計した順ファイルである。 A 集計した超過時間が 0 の場合でも,超過時間月計ファイルに書き出す。 (4) 処理の手順は,次のとおりである。 @ 社員ごとに1日分の作業時間を求める。 A 社員ごとに業務ごとの作業時間を集計する。 B 社員ごとに @ で求めた1日分の作業時間のうち, 平日出勤日のときは 8 時間を超えた分を超過時間とし, 休日出勤日のときはすべての作業時間を超過時間として合計する。 C 社員ごとに A で求めた業務ごとの作業時間を,作業時間月計ファイルに書き出す。 D 社員ごとに B で求めた超過時間の合計を,超過時間月計ファイルに書き出す。 (5) このプログラムは未完成で,幾つかの文を挿入したり条件式を修正したりする必要がある。 〔プログラム〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD NIPPO-FILE. 4 01 NIPPO-REC. 5 03 N-SHAIN-CODE PIC X(06). 6 03 N-SAGYO-BI PIC 9(02). 7 03 N-SHUBETSU PIC 9(01). 8 03 N-GYOMU-CODE PIC X(03). 9 03 N-SAGYO-JIKAN PIC 9(02). 10 FD SAGYO-FILE. 11 01 SAGYO-REC. 12 03 S-SHAIN-CODE PIC X(06). 13 03 S-GYOMU-CODE PIC X(03). 14 03 S-SAGYO-JIKAN PIC 9(03). 15 FD CHOKA-FILE. 16 01 CHOKA-REC. 17 03 C-SHAIN-CODE PIC X(06). 18 03 C-CHOKA-JIKAN PIC 9(03). 19 WORKING-STORAGE SECTION. 20 01 EOF PIC X(01). 21 01 SHAIN-CODE PIC X(06). 22 01 SAGYO-BI PIC 9(02). 23 01 SHUBETSU PIC 9(01). 24 01 SAGYO-JIKAN-KEI PIC 9(03). 25 01 GYOMU-SU PIC 9(03). 26 01 GYOMU. 27 03 FILLER OCCURS 100 INDEXED BY N. 28 05 GYOMU-CODE PIC X(03). 29 05 SAGYO-JIKAN PIC 9(03). 30 PROCEDURE DIVISION. 31 MAIN-RTN. 32 OPEN INPUT NIPPO-FILE 33 OUTPUT CHOKA-FILE SAGYO-FILE. 34 MOVE SPACE TO EOF. 35 PERFORM READ-RTN. 36 PERFORM UNTIL EOF = "E" 37 INITIALIZE CHOKA-REC 38 INITIALIZE GYOMU 39 MOVE N-SHAIN-CODE TO SHAIN-CODE 40 PERFORM UNTIL EOF = "E" OR 41 N-SHAIN-CODE NOT = SHAIN-CODE 42 MOVE N-SAGYO-BI TO SAGYO-BI 43 MOVE N-SHUBETSU TO SHUBETSU 44 PERFORM UNTIL N-SAGYO-BI NOT = SAGYO-BI 45 COMPUTE SAGYO-JIKAN-KEI = 46 SAGYO-JIKAN-KEI + N-SAGYO-JIKAN 47 PERFORM VARYING N FROM 1 BY 1 48 UNTIL GYOMU-CODE(N) = N-GYOMU-CODE 49 CONTINUE 50 END-PERFORM 51 IF N > GYOMU-SU THEN 52 MOVE N-GYOMU-CODE TO GYOMU-CODE(N) 53 SET GYOMU-SU TO N 54 END-IF 55 COMPUTE SAGYO-JIKAN(N) = 56 SAGYO-JIKAN(N) + N-SAGYO-JIKAN 57 END-PERFORM 58 IF SHUBETSU = 0 THEN 59 COMPUTE C-CHOKA-JIKAN = 60 C-CHOKA-JIKAN + SAGYO-JIKAN-KEI - 8 61 ELSE 62 COMPUTE C-CHOKA-JIKAN = 63 C-CHOKA-JIKAN + SAGYO-JIKAN-KEI 64 END-IF 65 END-PERFORM 66 PERFORM WRITE-RTN 67 END-PERFORM. 68 CL OS E NIPPO-FILE CHOKA-FILE SAGYO-FILE. 69 STOP RUN. 70 READ-RTN. 71 READ NIPPO-FILE AT END 72 MOVE "E" TO EOF 73 END-READ. 74 WRITE-RTN. 75 MOVE SHAIN-CODE TO C-SHAIN-CODE S-SHAIN-CODE. 76 PERFORM VARYING N FROM 1 BY 1 77 UNTIL N = GYOMU-SU 78 MOVE GYOMU-CODE(N) TO S-GYOMU-CODE 79 MOVE SAGYO-JIKAN(N) TO S-SAGYO-JIKAN 80 WRITE SAGYO-REC 81 END-PERFORM. 82 WRITE CHOKA-REC.
設問 プログラムを完成させるためには,プログラム中の条件式を 表1に示す三つの条件式で置き換えるとともに,表2に示す三つの文を プログラムに挿入する必要がある。 表1,表2の に 入れる置換位置及び挿入位置を,解答群の中から選べ。 ただし,挿入した場合でも,プログラムの行番号は付け直さないものとする。 表1 置き換える条件式
表2 挿入する文
a 〜 c に関する解答群 ア 行番号 36 イ 行番号 40,41 ウ 行番号 44 エ 行番号 48 オ 行番号 51 カ 行番号 58 キ 行番号 77 d 〜 f に関する解答群 ア 行番号 36 と 37 の間 イ 行番号 41 と 42 の間 ウ 行番号 44 と 45 の間 エ 行番号 48 と 49 の間 オ 行番号 49 と 50 の間 カ 行番号 56 と 57 の間 キ 行番号 64 と 65 の間 ク 行番号 66 と 67 の間 ケ 行番号 77 と 78 の間 コ 行番号 80 と 81 の間
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||||||||||||||