平成7年度 秋期 第二種 午後 問8

                        [更新日]1994.10.25
問8 次のCOBOLプログラムの説明及びプログラムを読んで、設問に答えよ。 [プログラムの説明]  講演会の参加申込者ファイルを読み込んで、各申込者に講演会場の座席割当 てを行い、割り当てた座席番号を参加者座席ファイルに格納して出力するプロ グラムである。 (1) 参加申込者ファイル(MOSHIKOMI-FILE)のレコード様式は、次のとうりで ある。 ┌───────┬──────────┬────────────┐ │ 受付番号  │    氏 名   │     連絡先    │ │  4けた  │   20けた   │    30けた    │ └───────┴──────────┴────────────┘   参加申込者ファイルは、受付番号の昇順に整列されている。 (2) 参加者座席ファイル(ZASEKI-FILE)のレコード様式は、次のとおりである。 ┌──────┬───────┬───────────┐ │ 受付番号 │  氏 名  │    座席番号   │ │      │       ├─────┬─────┤ │      │       │  列  │  番  │ │      │       │     │     │ │  4けた │  20けた │ 1けた │ 2けた │ └──────┴───────┴─────┴─────┘ (3) 講演会会場の座席は、図1の例に示すとうりである。  1. 座席はA〜Z列からなる。列によって座席数は異なっている。  2. 座席番号は、列と番からなる。番とは、各列について舞台に向かって左 から何番目の座席であるかを示す番号のことである。例えば、"D列5番"の 座席とは、D列の舞台に向かって左から5番目の座席を指す。  3. 座席の一部は、招待席とする。 (4) 処理の手順は、次のとうりである。  1. 参加申込者ファイルを読み込んで、前方の列から順に座席を割り当てて いく。   例えば、A列の座席が12番まであるとすれば、A列1番、A列2番、…、A列12 番、B列1番、B列2番、… の順に割り当てる。  2. 各列の座席数は、プログラムの内部テーブル(ZASEKI-TABLE)に格納され ている。ZASEKI-TABLEの格納例を図2に示す。   列   座席数 ┌───┬─────┐ │ A │ 12  │ ├───┼─────┤ │ B │ 14  │ ├───┼─────┤ │ C │ 16  │ ├───┼─────┤ │ : │  :  │ ├───┼─────┤ │ Z │ 16  │ └───┴─────┘   図2 ZASEKI-TABLE  3. 招待席は、参加申込者を割り当てないようにする。例えば、G列4番から 12番までが招待席であったとすると、G列3番の次にG列13番を割り当てる。  4. 招待席の座席番号は、データとして指定される。招待席座席番号データ (SHO-TAI-DATA)の様式は、次のとおりである。 ┌───┬─────────────┬────────────────────┐ │列の数│     列1      │     列2   … 列12     │ │   ├───┬────┬────┼───┬────┬─────┬─────┤ │   │列  │開始番号│終了番号│列  │開始番号│ …   │終了番号 │ │   │   │    │    │   │    │     │     │ │2けた│1けた│2けた │2けた │1けた│2けた │ …   │2けた  │ └───┴───┴────┴────┴───┴────┴─────┴─────┘   列ごとに、連続する番号の座席の開始番号と終了番号を指定する。指定す る列数は1〜12の範囲である。指定する列の順序は昇順である必要はないが、 同じ列を複数回指定することはないものとする。    SHOTAI-DATAの格納例を図3にしめす。この例では、G列の4番〜12番、H列 の4番〜12番、I列の4番〜11番及びJ列の4番〜11番が招待席として指定され ている。 ┌───┬───────┬───────┬───────┬───────┐ │列の数│  列1   │  列2   │  列3   │  列4   │ │   ├─┬──┬──┼─┬──┬──┼─┬──┬──┼─┬──┬──┤ │04 │G│04│12│H│04│12│I│04│11│J│04│11│ └───┴─┴──┴──┴─┴──┴──┴─┴──┴──┴─┴──┴──┘                図3 SHOTAI-DATAの格納例  5. 割り当てた座席番号を参加者座席ファイルに書き出す。  6. 申込者が多いため、座席を割り当てることのできなかった申込者のデー タは、参加者座席ファイルに書き出さない。  [プログラム] DATA DIVISION. FILE SECTION. FD MOSHIKOMI-FILE. 01 MOSHIKOMI-REC. 03 UKE-M PIC X(4). 03 SHIMEI-M PIC X(20). 03 RENRAKUSAKI-M PIC X(30). FD ZASEKI-FILE. 01 ZASEKI-REC. 03 UKE-Z PIC X(4). 03 SHIMEI-Z PIC X(20). 03 ZASEKI-Z. 05 RETSU PIC X(1). 05 BAN PIC 9(2). WORKING-STORAGE SECTION. 01 EOF-FLAG PIC X(1) VALUE SPACE. 88 EOF VALUE "E". 01 Z PIC 9(2). 01 ZASEKI-TABLE. 03 PIC X(27) VALUE "A12B14C16D16E16F16G15H14I14". 03 PIC X(27) VALUE "J14K14L14M14N14O14P14Q14R14". 03 PIC X(24) VALUE "S14T14U14V15W15X15Y16Z16". 01 REDEFINES ZASEKI-TABLE. 03 OCCURS 26 INDEXED BY X. 05 RETSU-Z PIC X(1). 05 ZASEKISU-Z PIC 9(2). 01 SHOTAI-DATA. 03 RETSUSU-S PIC 9(2). 03 OCCURS 12 INDEXED BY Y. 05 RETSU-S PIC X(1). 05 KAISHI-S PIC 9(2). 05 SHURYO-S PIC 9(2). PROCEDURE DIVISION. MAIN-RTN. ACCEPT SHOTAI-DATA. OPEN INPUT MOSHIKOMI-FILE OUTPUT ZASEKI-FILE. READ MOSHIKOMI-FILE AT END SET EOF TO TRUE END-READ. PERFORM VARYING X FROM 1 BY 1 UNTIL X > 26 OR EOF PERFORM VARYING Y FROM 1 BY 1 UNTIL Y > RETSUSU-S OR RETSU-Z (X) = [ a ] END-PERFORM PERFORM VARYING Z FROM 1 BY 1 UNTIL Z > [ b ] OR EOF IF Y <= RETSUSU-S AND Z = KAISHI-S (Y) THEN COMPUTE Z = [ c ] + 1 IF Z <= ZASEKISU-Z (X) THEN PERFORM WRITE-RTN END-IF ELSE PERFORM WRITE-RTN END-IF END-PERFORM END-PERFORM. CLOSE MOSHIKOMI-FILE ZASEKI-FILE. STOP RUN. WRITE-RTN. MOVE UKE-M TO UKE-Z. MOVE SHIMEI-M TO SHIMEI-Z. MOVE [ d ] TO RETSU. MOVE [ e ] TO BAN. WRITE ZASEKI-REC. READ MOSHIKOMI-FILE AT END SET EOF TO TRUE END-READ. 設問 プログラム中の[   ]に入れる正しい答えを、解答群の中から選べ。 解答群  ア KAISHI-S(Y) イ RETSU-S(X) ウ RETSU-S(Y)  エ RETSU-Z(X) オ RETSU-Z(Y) カ SHURYO-S(Y)  キ Y ク Z ケ ZASEKISU-Z(X)  コ ZASEKISU-Z(Y)