基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成17年 秋期 基本情報技術者 午後 問11
問11   COBOL

次の COBOL プログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラムの説明〕

渡された会員 ID を基に,会員ファイルから会員情報を検索し, 画面データとして返却する呼ばれるプログラム(以下,副プログラムという)である。

(1) 呼ぶプログラム(以下,主プログラムという)は,会員 ID を読み取り, 検索結果を画面に表示する。 主プログラムが副プログラムへ渡す情報は,次のとおりである。 現在の年月は,YYYYMM の形式である。

会員 ID
  6 けた
現在の年月
  6 けた

(2) 副プログラムでは,主プログラムから受け取った会員 ID で会員ファイルを検索し, 見つかった会員情報を画面データに格納して主プログラムに返す。 画面データに格納する情報は,見つかった会員のレコード項目のうち会員 ID 以外のすべての項目である。 このとき,新規入会サービスの対象者であるかどうかを調べ,フラグをセットする。 新規入会サービスの対象者は,特別会員及び一般会員のうち,会員期間が, 入会月を基準に月単位で数えて,12 か月以内の会員である。 例えば,10 月入会の場合は,翌年の 9 月までがサービス対象期間となる。

(3) 会員ファイルのレコード様式は,次のとおりである。

会員 ID
  6 けた
氏名
  20 けた
区分
  1 けた
入会年月日
  8 けた
その他の会員情報
  205 けた

@ 会員 ID をキーとした索引ファイルであり,会員 ID は数字 0 〜 9 の組合せからなる。

A 区分には会員区分が記録されている。 会員区分には,特別会員,一般会員,学生会員があり,次のとおりコード化されている。

1:特別会員  2:一般会員  3:学生会員

B 入会年月日には,その会員の入会した年月日が YYYYMMDD の形式で記録されている。

(4) 画面データ(L-SCREEN)のデータ様式は,次のとおりである。

フラグ1
  1 けた
フラグ2
  1 けた
会員情報
  234 けた

フラグ1及びフラグ2は,次の決定表に従って値が決まる。

 条件部での“Y”は条件が真,“N”は条件が偽,“-”は真偽に関係ないことを表す。 動作部での“X”は条件がすべて満たされたとき,その行で指定した動作の実行を表し, “-”は動作を実行しないことを表す。

〔プログラム〕

(行番号)
 1  DATA DIVISION.
 2  FILE SECTION.
 3  FD  MEMBER-F.
 4  01  MEMBER-R.
 5      03  M-ID        PIC X(6).
 6      03  M-DATA.
 7          05  M-NAME  PIC X(20).
 8          05  M-CLASS PIC X(1).
 9          05  M-DATE  PIC X(8).
10          05          PIC X(205).
11  WORKING-STORAGE SECTION.

14  LINKAGE SECTION.
15  01  L-ID           PIC X(6).
16  01  L-YEAR         PIC 9(6).
17  01  L-SCREEN.
18      03  S-F1       PIC X(1).
19      03  S-F2       PIC X(1).
20      03  S-DATA     PIC X(234).
21  PROCEDURE DIVISION USING L-ID, L-YEAR, L-SCREEN.
22  MAIN-RTN.
23      OPEN INPUT MEMBER-F.
24      MOVE SPACE TO L-SCREEN.
25      MOVE L-ID TO M-ID.
26      READ MEMBER-F INVALID
27         MOVE "1" TO S-F1
28      NOT INVALID
29         MOVE M-DATA TO S-DATA
30         PERFORM CHECK-RTN
31      END-READ.
32      CL OS E MEMBER-F.
33      EXIT PROGRAM.
34  CHECK-RTN.
35      MOVE M-DATE TO W-YEAR1.
36      IF L-YEAR - W-YEAR2 <  THEN
37         IF M-CLASS = "1" OR "2" THEN
38            MOVE "1" TO S-F2
39         END-IF
40      END-IF.

設問1 決定表及びプログラム中の に 入れる正しい答えを,解答群の中から選べ。 ここで,決定表のフラグ1,フラグ2は,プログラムの S-F1,S-F2 に対応している。

a に関する解答群

フラグ1に“1”を転記
フラグ1に空白を転記
フラグ2に“1”を転記
フラグ2に空白を転記
    
フラグ1に“1”を転記
フラグ2に“1”を転記
フラグ1に空白を転記
フラグ2に空白を転記
フラグ1に空白を転記
フラグ2に空白を転記
フラグ1に“1”を転記
フラグ2に“1”を転記
    
フラグ1に空白を転記
フラグ1に“1”を転記
フラグ2に空白を転記
フラグ2に“1”を転記

b に関する解答群

ア 01 W-YEAR1          PIC X(6).

  01 W-YEAR2 REDEFINES W-YEAR1 PIC 9(6).

イ 01 W-YEAR1          PIC 9(6).

  01 W-YEAR2 REDEFINES W-YEAR1 PIC X(6).

ウ 01 W-YEAR1          PIC X(6).

  01 W-YEAR2          PIC 9(6).

c に関する解答群

ア 0      イ 1      ウ 12

エ 99     オ 100     カ 101

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

基本情報技術者試験


設問2 次の記述中の に入れる正しい答えを, 解答群の中から選べ。

このシステムでは,会員 ID の最後の1文字だけの入力ミスが非常に多いことが経験上分かっている。 そこで,主プログラムから渡された会員 ID と一致する会員情報が見つからなかったとき, 会員 ID の最後の1文字だけが異なるすべての会員の会員 ID と氏名を修正候補として 主プログラムに戻すように,次のとおり変更した。

処置プログラムの変更内容
行番号 5 を置換   03 M-ID.
    05  M-NUM   PIC 9 OCCURS 6.
行番号 13 と 14 の
間に追加

01 X         PIC 9(2).
01 Y         PIC 9(2).
行番号 15 を置換 01 L-ID.
  03 L-NUM     PIC 9 OCCURS 6.
行番号 20 を置換   03 S-DATA.
    05 S-CORR OCCURS 9.
      07 S-ID  PIC X(6).
      07 S-NAME PIC X(20).
行番号 27 と 28 の
間に追加
  PERFORM CORR-RTN

行番号 40 の後に
追加
CORR-RTN.
  MOVE 1 TO Y.
  PERFORM VARYING X FROM 0 BY 1 UNTIL
    IF X NOT = L-NUM(6) THEN
     
     READ MEMBER-F INVALID
       CONTINUE
     NOT INVALID
       MOVE M-ID TO S-ID()
       MOVE M-NAME TO S-NAME()
       COMPUTE Y = Y + 1
     END-READ
    END-IF
  END-PERFORM.

d に関する解答群

ア X = 6    イ X > 6    ウ X = 9    エ X > 9    オ X > 10

e に関する解答群

 MOVE L-ID TO M-ID     イ MOVE L-ID TO M-ID
                 MOVE X TO M-ID(6:)
                 
 MOVE L-ID TO M-ID    エ MOVE L-ID TO M-ID
  MOVE X TO M-NUM(6)    MOVE X TO M-NUM(X)
                 
 MOVE X TO M-NUM(6)    カ MOVE X TO M-NUM(X)

f に関する解答群

ア X    イ X + 1    ウ Y    エ Y + 1

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます

解答 f ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]