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

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

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

〔プログラムの説明〕

 製品出荷指示ファイルを読み込み,在庫を調べ,部品展開表を使って製造に必要な部品の 個数を計算し,部品注文ファイルを作成するプログラムである。 製品は幾つかの部品から構成され,製造工程で組み立てられる。 図に部品展開表の例を示す。 括弧内の数字は,親の製品を1個製造するために必要な子の部品の個数(以下,所要個数という)である。 この例では,製品 S1 を1個製造するために,部品 B1 を2個, 部品 B2 を2個,部品 B3 を1個必要とすることを示す。

図 部品展開表の例

 例えば,製品 S2 の在庫が 75 個,部品 B1 の在庫が 30 個,部品 B3 の在庫が 60 個あるとき, 製品 S2 を 100 個出荷するためには,製品 S2 の在庫 75 個では不足であり, 25 ( = 100 − 75 ) 個を新たに製造する必要がある。 そのために必要な 25 個の部品 B1 は,在庫から割り当てることができる。 また,部品 B3 は 75 ( = 25 × 3 ) 個必要であり,在庫の 60 個では不足なので, 15 ( = 75 − 60 ) 個を注文する必要がある。

(1) 在庫数のうち出荷又は製造のために割り当てた個数を,割当て済み数という。 また,在庫数から割当て済み数を引いた個数を,有効在庫数という。

(2)  製品出荷指示ファイルは順ファイルで,そのレコード様式は次のとおりである。

出荷番号
5 けた
製品コード
8 けた
出荷数
10 けた

(3) 在庫ファイルは索引ファイルで,そのレコード様式は次のとおりである。

資材コード(製品コード
又は部品コード)
8 けた
在庫数
10 けた
割当て済み数
10 けた

資材コード(製品コード又は部品コード)をキーとする。製品コードは先頭

1けたが“S”,部品コードは先頭1けたが“B”である。

(4) 部品展開ファイルは索引ファイルで,そのレコード様式は次のとおりである。

部品展開キー 所要個数
5 けた
製品コード
8 けた
部品コード
8 けた

@ 製品コードと部品コードの組合せをキーとする。

A 所要個数は,製品コードと部品コードの組合せごとに設定される。 先の部品展開表の例の図に対応する部品展開レコードの例を,表に示す。

<

表 図に対応する部品展開レコードの例

 S1   B1   2  
 S1 B2 2  
 S1 B3 1  
 S2 B1 1  
 S2 B3 3  

(5) 部品注文ファイルは順ファイルで,そのレコード様式は次のとおりである。

出荷番号
5 けた
部品コード
8 けた
発注数
10 けた

製品出荷指示ファイルの1レコードごとに必要な部品注文レコードが出力される。

(6) すべてのデータに誤りはないものとする。

〔プログラム〕

(行番号)

  1  DATA DIVISION.
  2  FILE SECTION.
  3  FD  SHUKKA-F.
  4  01  SHUKKA-R.
  5      05  S-SHUKKA-NO   PIC 9(5).
  6      05  S-SEIHIN-CD   PIC X(8).
  7      05  S-SHUKKA-SU   PIC 9(10).
  8  FD  ZAIKO-F.
  9  01  ZAIKO-R.
 10      05  Z-SHIZAI-CD   PIC X(8).
 11      05  Z-ZAIKO-SU    PIC 9(10).
 12      05  Z-WARIATE-SU  PIC 9(10).
 13  FD  BUHIN-F.
 14  01  BUHIN-R.
 15      05  B-BUHIN-KEY.
 16        10  B-SEIHIN-CD  PIC X(8).
 17        10  B-BUHIN-CD   PIC X(8).
 18      05  B-SHOYO-K OS U   PIC 9(5).
 19  FD  CHUMON-F.
 20  01  CHUMON-R.
 21      05  C-SHUKKA-NO    PIC 9(5).
 22      05  C-BUHIN-CD     PIC X(8).
 23      05  C-CHUMON-SU    PIC 9(10).
 24  WORKING-STORAGE SECTION.
 25  01  W-YUKO-ZSU         PIC S9(10).
 26  01  W-HITSUYO-SU       PIC 9(10).
 27  01  W-SEIHIN-SU        PIC 9(10).
 28  01  W-SHUKKA-EOF       PIC 9.
 29  PROCEDURE DIVISION.
 30  MAIN-CTL.
 31      OPEN INPUT SHUKKA-F BUHIN-F, 
 32           I-O ZAIKO-F, OUTPUT CHUMON-F.
 33      MOVE 0 TO W-SHUKKA-EOF.
 34      PERFORM UNTIL W-SHUKKA-EOF = 1
 35        READ SHUKKA-F
 36             AT END      MOVE 1 TO W-SHUKKA-EOF
 37             NOT AT END  PERFORM MRP-PROC
 38        END-READ
 39      END-PERFORM.
 40      CL OS E SHUKKA-F BUHIN-F ZAIKO-F CHUMON-F.
 41      STOP RUN.
 42 *
 43  MRP-PROC.
 44      MOVE S-SEIHIN-CD TO Z-SHIZAI-CD.
 45      MOVE S-SHUKKA-SU TO W-HITSUYO-SU.
 46      .
 47      IF W-HITSUYO-SU > 0 THEN
 48         MOVE W-HITSUYO-SU  TO W-SEIHIN-SU
 49         MOVE LOW-VALUE     TO B-BUHIN-KEY
 50         MOVE S-SEIHIN-CD   TO B-SEIHIN-CD
 51         
 52         PERFORM UNTIL B-SEIHIN-CD NOT = S-SEIHIN-CD
 53           MOVE B-BUHIN-CD TO Z-SHIZAI-CD
 54           COMPUTE W-HITSUYO-SU = 
 55                     W-SEIHIN-SU * B-SHOYO-K OS U
 56           PERFORM CHECK-ZAIKO
 57           PERFORM READ-BUHIN-NEXT
 58         END-PERFORM
 59      END-IF.
 60 *
 61  CHECK-ZAIKO.
 62      READ ZAIKO-F
 63           INVALID KEY DISPLAY "ZAIKO-INV ERROR"
 64                       STOP RUN
 65      END-READ.
 66      COMPUTE W-YUKO-ZSU = Z-ZAIKO-SU - Z-WARIATE-SU.
 67      IF W-YUKO-ZSU <= 0 THEN
 68         PERFORM CHUMON-PROC
 69      ELSE
 70         IF W-HITSUYO-SU > W-YUKO-ZSU THEN
 71            ADD      W-YUKO-ZSU   TO   Z-WARIATE-SU
 72            PERFORM  REWRITE-ZAIKO
 73            SUBTRACT W-YUKO-ZSU   FROM W-HITSUYO-SU
 74            PERFORM  CHUMON-PROC
 75         ELSE
 76            ADD      W-HITSUYO-SU TO   Z-WARIATE-SU
 77            MOVE     0            TO   W-HITSUYO-SU
 78            PERFORM  REWRITE-ZAIKO
 79         END-IF
 80      END-IF.
 81 *
 82  START-BUHIN.
 83      START BUHIN-F 
 84            INVALID KEY MOVE HIGH-VALUE TO BUHIN-R
 85            NOT INVALID KEY PERFORM READ-BUHIN-NEXT
 86      END-START.
 87 *
 88  READ-BUHIN-NEXT.
 89      READ BUHIN-F NEXT
 90           AT END MOVE HIGH-VALUE TO BUHIN-R
 91      END-READ.
 92 *
 93  CHUMON-PROC.
 94      IF Z-SHIZAI-CD(1:1) = "B" THEN
 95         MOVE S-SHUKKA-NO  TO C-SHUKKA-NO
 96         MOVE Z-SHIZAI-CD  TO C-BUHIN-CD
 97         MOVE W-HITSUYO-SU TO C-CHUMON-SU
 98         WRITE CHUMON-R
 99         MOVE  0 TO W-HITSUYO-SU
100      END-IF.
101 *
102  REWRITE-ZAIKO.
103      REWRITE ZAIKO-R
104              INVALID KEY DISPLAY "ZAIKO-INV ERROR"
105                          STOP RUN
106      END-REWRITE.

設問1 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a,b に関する解答群

ア PERFORM CHECK-ZAIKO    イ PERFORM CHUMON-PROC

ウ PERFORM MRP-PROC     エ PERFORM READ-BUHIN-NEXT

オ PERFORM START-BUHIN

c に関する解答群

ア KEY > B-BUHIN-KEY    イ KEY < B-BUHIN-KEY

ウ KEY = B-BUHIN-KEY      エ KEY NOT = B-BUHIN-KEY

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

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

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

基本情報技術者試験


設問2 このプログラムの環境部のファイル管理記述段落で, BUHIN-F の呼出し法の指定として正しくないものを,解答群の中から選べ。

解答群

ア ACCESS MODE IS DYNAMIC     イ ACCESS MODE IS RANDOM

ウ ACCESS MODE IS SEQUENTIAL

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

基本情報技術者試験


設問3 部品注文ファイルを作成し発注してから, 部品が入庫され製品が組み立てられるまでには,出荷遅延が発生することが考えられる。 また,予定外の出荷指示に対して,すぐに応じられないという問題も考えられる。 これをある程度防ぐため,有効在庫数がある一定の個数(余裕在庫数)以下となった場合に 部品注文ファイルを作成するように,在庫ファイルのレコード様式及びプログラムを変更する。 に入れる正しい答えを,解答群の中から選べ。

処置 変更内容
行番号 12 と 13 の間
に挿入
  05  Z-YOYUU-SU     PIC  9(10).
行番号 66 を置換 COMPUTE W-YUKO-ZSU = .

解答群

ア Z-ZAIKO-SU + Z-WARIATE-SU + Z-YOYUU-SU

イ Z-ZAIKO-SU + Z-WARIATE-SU - Z-YOYUU-SU

ウ Z-ZAIKO-SU - Z-WARIATE-SU + Z-YOYUU-SU

エ Z-ZAIKO-SU - Z-WARIATE-SU - Z-YOYUU-SU

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


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