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

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

〔プログラムの説明〕

 ユーザ ID の発行順に記録してある顧客情報ファイルを読み込んで, ユーザ ID をキー項目とした二分探索木を作成し,顧客リストとして出力するプログラムである。

 顧客情報ファイル CUSTOM-IN のレコード様式は,次のとおりである。

ユーザ ID
12 けた
顧客情報
200 けた

(1) 順ファイルである。

(2) ユーザ ID は乱数を利用して発行した12けたの英数字列であり,重複はない。

(3) レコードの順序は,ユーザ ID の発行順である。

(4) 顧客数は 2,000 以下である。

顧客リスト CUSTOM-OUT のレコード様式は,次のとおりである。

左ポインタ
4 けた
右ポインタ
4 けた
ユーザ ID
12 けた
顧客情報
200 けた

(1) 順ファイルである。

(2) ユーザ ID が,“左側の子<親<右側の子”の規則で二分探索木を 構成するようにレコードを記録する。


     図1 二分探索木の例

(3) 左ポインタは,自身を親としたときの左側の子のレコードを指し, 右ポインタは,右側の子のレコードを指す。

(4) 子をもたないときのポインタの値は,0とする。 図1のレコードが,10,6,15,1,12,20 の順に記録されるときのポインタ及び ユーザ ID は次のようになる。


    図2 ポインタ及びユーザ ID の例

〔プログラム〕
DATA DIVISION.
FILE SECTION.
FD  CUSTOM-IN.
01  IN-R.
    03  IN-ID   PIC X(12).
    03  IN-DATA PIC X(200).
FD  CUSTOM-OUT.
01  OUT-R       PIC X(220).
WORKING-STORAGE SECTION.
01  W-KENSU     PIC 9(4) VALUE 0.
01  W-1         PIC 9(4).
01  W-2         PIC 9(4).
01  W-TABLE.
    03  W-R OCCURS 2000.
        05  POINT-L  PIC 9(4).
        05  POINT-R  PIC 9(4).
        05  W-ID     PIC X(12).
        05  W-DATA   PIC X(200).
01  END-SW           PIC X VALUE SPACE.
PROCEDURE DIVISION.
HAJIME.
    OPEN INPUT CUSTOM-IN OUTPUT CUSTOM-OUT.
    .
    PERFORM UNTIL END-SW = "E"
        READ CUSTOM-IN
        AT END 
           MOVE "E" TO END-SW
        NOT AT END 
            COMPUTE W-KENSU = W-KENSU + 1
            MOVE IN-ID TO W-ID(W-KENSU)
            MOVE IN-DATA TO W-DATA(W-KENSU)
            IF W-KENSU > 1 THEN
                MOVE 1 TO W-2
                PERFORM UNTIL W-2 = 0
                    MOVE W-2 TO W-1
                    IF IN-ID > W-ID(W-1) THEN
                        MOVE POINT-R(W-1) TO W-2
                    ELSE 
                        MOVE POINT-L(W-1) TO W-2
                    END-IF
                END-PERFORM
                IF IN-ID > W-ID(W-1) THEN
                    MOVE W-KENSU TO POINT-R(W-1)
                ELSE 
                    MOVE W-KENSU TO POINT-L(W-1)
                END-IF
            END-IF
        END-READ
    END-PERFORM.
    PERFORM VARYING W-1 FROM 1 BY 1 UNTIL W-1 > W-KENSU
        
    END-PERFORM.
    CL OS E CUSTOM-IN CUSTOM-OUT.
    STOP RUN.

基本情報技術者試験


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

a に関する解答群

ア INITIALIZE W-TABLE    イ MOVE SPACE TO W-TABLE

ウ MOVE 0 TO W-1 W-2

b に関する解答群

ア WRITE OUT-R          イ WRITE OUT-R FROM IN-R

ウ WRITE OUT-R FROM W-R(W-1)    エ WRITE OUT-R FROM W-R(W-KENSU)

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

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

基本情報技術者試験


設問2 顧客情報ファイルが次のとおりであった場合, このプログラムで出力される顧客リストを解答群の中から選べ。

 CK66527C824W  今井…  
 K24U83458YZ4  鈴木…  
 A35V2294QE78  高橋…  
 JQ3526XNM445  小林…  
 G87E99R32MK3  渡辺…  
 SLB937RR244D  加藤…  
 BDD234L876XA  田中…  

解答群

 0   7   A35V2294QE78   高橋…  
 0   0   BDD234L876XA   田中…  
 3   2   CK66527C824W   今井…  
 0   0   G87E99R32MK3   渡辺…  
 5   0   JQ3526XNM445   小林…  
 4   6   K24U83458YZ4   鈴木…  
 0   0   SLB937RR244D   加藤…  
  
 2   3   CK66527C824W   今井…  
 6   4   K24U83458YZ4   鈴木…  
 7   0   A35V2294QE78   高橋…  
 0   5   JQ3526XNM445   小林…  
 0   0   G87E99R32MK3   渡辺…  
 0   0   SLB937RR244D   加藤…  
 0   0   BDD234L876XA   田中…  
 3   2   CK66527C824W   今井…  
 4   6   K24U83458YZ4   鈴木…  
 0   7   A35V2294QE78   高橋…  
 5   0   JQ3526XNM445   小林…  
 0   0   G87E99R32MK3   渡辺…  
 0   0   SLB937RR244D   加藤…  
 0   0   BDD234L876XA   田中…  
  
 7   0   A35V2294QE78   高橋…  
 0   0   BDD234L876XA   田中…  
 2   3   CK66527C824W   今井…  
 0   0   G87E99R32MK3   渡辺…  
 0   5   JQ3526XNM445   小林…  
 6   4   K24U83458YZ4   鈴木…  
 0   0   SLB937RR244D   加藤…  
解答 ←クリックすると正解が表示されます

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