平成20年 秋期 基本情報技術者 午後 問11
問11 COBOL次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。 〔プログラムの説明〕 論理式評価プログラム EVAL-EXP の動作検証のため,論理式を構成するすべての パターンの文字列を生成するプログラム GEN-EXP である。 (1) GEN-EXP は,1文字から7文字までの論理式文字列を自動生成して EVAL-EXP を 呼び出し,図1のような結果を印字する。検証はこの結果リストを使って目視で行う。 見出しは印刷済とする。
図1 結果の例 CALL "EVAL-EXP" USING パラメタ1 パラメタ2 ここで,パラメタ1は8けたで,空白で終了する1文字から7文字の論理式を指定する。 パラメタ2は評価結果であり,真のときは T,偽のときは F, 構文エラーがあるときは E が返る。パラメタ1は EVAL-EXP の実行によって変更されることはない。 (3) EVAL-EXP で扱う論理式は,次の仕様とする。
A 論理式の評価の順序は,括弧でくくられた内側が先に評価され, 括弧でくくられていないか又は括弧が同じ順位の場合は & が | よりも優先順位が高い。 同じ優先順位が並ぶ場合は左から右に評価される。 (4) 論理式の自動生成は,数字1〜6からなる長さ1〜7の数字列を, 作業領域 NUM-TBL に生成し,数字1〜6に6種類の文字 T,F,(,&, |,) を 対応させて変換する(図2)。
図2 作業領域 NUM-TBL に生成された数字列と対応する論理式文字列 〔プログラム GEN-EXP 〕 (行番号) 1 DATA DIVISION. 2 FILE SECTION. 3 FD EXP-F. 4 01 EXP-REC PIC X(08). 5 FD PRINT-F. 6 01 P-REC PIC X(13). 7 WORKING-STORAGE SECTION. 8 01 CONSTANT-CHARS. 9 05 CONS-VALUE PIC X(06) VALUE "TF(&|)". 10 05 FILLER REDEFINES CONS-VALUE. 11 10 CONS-TBL PIC X OCCURS 6. 12 01 NUM-BUF. 13 05 NUM-TBL PIC 9 0CCURS 10. 14 01 EXIT-SW PIC 9. 15 01 EXP-L PIC 99. 16 01 RESULT-SW PIC X. 17 01 WK-I PIC 99. 18 01 WK-TEMP PIC 99. 19 PROCEDURE DIVISION. 20 MAIN-CTL. 21 OPEN OUTPUT EXP-F. 22 PERFORM GENERATE-EXP VARYING EXP-L FROM 1 BY 1 23 UNTIL EXP-L > 7. 24 CLOSE EXP-F. 25 * 26 OPEN INPUT EXP-F. 27 OPEN OUTPUT PRINT-F. 28 PERFORM EVAL-EXP-PRINT. 29 CLOSE EXP-F PRINT-F. 30 * 31 STOP RUN. 32 GENERATE-EXP. 33 MOVE SPACE TO EXP-REC. 34 * 作業領域初期化 35 MOVE ALL "T" TO EXP-REC(1:EXP-L). 36 PERFORM VARYING WK-I FROM 1 BY 1 UNTIL WK-I > EXP-L 37 38 END-PERFORM. 39 MOVE EXP-L TO WK-I. 40 * 数字列の生成と論理式への変換 41 PERFORM 42 WRITE EXP-REC 43 MOVE EXP-L TO WK-I 44 MOVE O TO EXIT-SW 45 PERFORM UNTIL WK-I < 1 OR EXIT-SW = 1 46 47 * けた上がりのチェック 48 IF NUM-TBL(WK-I) > 6 THEN 49 MOVE 1 TO NUM-TBL(WK-I) 50 MOVE CONS-TBL(1) TO EXP-REC(WK-I:1) 51 SUBTRACT 1 FROM WK-I 52 ELSE 53 MOVE NUM-TBL(WK-I) TO WK-TEMP 54 MOVE CONS-TBL(WK-TEMP) TO EXP-REC(WK-I:1) 55 MOVE 1 TO EXIT-SW 56 END-IF 57 END-PERFORM 58 END-PERFORM. 59 * 60 EVAL-EXP-PRINT. 61 MOVE 0 TO EXIT-SW. 62 PERFORM UNTIL EXIT-SW = 1 63 READ EXP-F AT END MOVE 1 TO EXIT-SW 64 NOT AT END 65 CALL "EVAL-EXP" USING EXP-REC RESULT-SW 66 STRING RESULT-SW ": " EXP-REC 67 DELIMITED BY SIZE INTO P-REC 68 WRITE P-REC AFTER 1 69 END-READ 70 END-PERFORM. 設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。 解答群 ウ MOVE 1 TO NUM-TBL(WK-I) エ SUBTRACT 1 FROM WK-I オ UNTIL EXIT-SW = 1 力 UNTIL WK-I < 1 キ UNTIL WK-I > EXP-L
設問2 GEN-EXP では,論理式を構成するすべてのパターンの文字列を生成しているので, 評価結果のほとんどが構文エラーであった。そこで,EVAL-EXP での論理式評価が 効率よく実行できるよう,CEN-EXP で論理式生成後に論理式の構文チェックを行い, 構文エラーでないものだけを検査対象とするように変更することとなった。 論理式の構文チェックは次の@,Aに従う。
表1 記述の順序
このためにプログラムを次のとおりに変更する。 表2中の に入れる正しい答えを,解答群の中から選べ。 表2 プログラムの変更内容
ウ "T" OR "F" OR ")" エ ADD 1 TO NEST-LEVEL オ SUBTRACT 1 FROM NEST-LEVEL
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| ||||||||||||||||||