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

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

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

〔プログラムの説明〕

 文字列データが入っているファイルを読み, 段落ごとに分解・結合してファイルに出力するプログラムである。 文字列データは,固定長のレコードに分割されて,順ファイルに格納してある。 このファイルを1レコードずつ読み込み,1段落を1レコードとして再構成し, ファイルに出力する。 ここで,文字列データの各1文字は,入出力レコードの1けたに格納される。

(1) 文字列データの構成は,次のとおりである。

@ 文字列データは一つ以上の段落の集まりである。

A 段落は,英字,数字,空白,コンマ,ピリオド,及びセミコロンで構成される。

B セミコロンは,各段落の終端の文字として必ず出現し,それ以外の位置には出現しない。

C 1段落の長さは可変であり,セミコロンを除いて,0文字以上 1,000 文字以下である。


COBOL △is△an△industry△language.;An△implementation△may△flag△violations△
of△rules.;;This△statement△provides△the△ability△to△tally△or△replace△
occurrences△of△single△characters△or△sequences△of△characters△in△a△
data△item.;

   図1 文字列データの例(△ は空白を示す)

(2) 入力ファイルの様式は,次のとおりである。

@ 1レコード 100 けたの固定長順ファイルである。

A 文字列データの長さが 100 の倍数でないとき,最後の段落のセミコロンの後ろには, 100けたになるように空白が埋められている。

(3) 出力ファイルの様式は,次のとおりである。

@ 1 レコード 1,000 けたの固定長順ファイルである。

A 1 レコードに 1段落が格納されている。

B 段落の終端文字であるセミコロンは出力しない。

C 段落が1レコードに満たないときは,後ろに空白を埋める。

(4) 図1の文字列データに対応する入力ファイル及び出力ファイルを図2,図3に示す。


  図2 入力ファイルの例(△ は空白を示す)


  図3 出力ファイルの例(△ は空白を示す)

(5) プログラム中で使われている INSPECT 文の形式と動作は次のとおりである。

〔形式〕

INSPECT 一意名 1 TALLYING 一意名 2

FOR CHARACTERS BEFORE 一意名 3

〔一意名の制約〕

一意名 1: 用途が明示的又は暗黙的に DISPLAY であるデータ項目

一意名 2: 数字項目

一意名 3: 用途が明示的又は暗黙的に DISPLAY で,長さが1文字のデータ項目

〔動作〕

一意名 1 の内容を最左端文字位置から検査し, 一意名 3 の内容に最初に一致する直前までの文字数を一意名 2 に加える。 一意名 3 の内容が一意名 1 の中に出現しない場合, 一意名 1 の最左端文字位置から最右端文字位置までの文字数を一意名 2 に加える。

〔プログラム〕

DATA DIVISION.
FILE SECTION.
FD  TEXT-FILE.
01  TEXT-CHUNK  PIC X(100).
FD  RECD-PER-PARA-FILE.
01  RECD-PER-PARA-RECD  PIC X(1000).
WORKING-STORAGE SECTION.
01  PARA-DELIMITER-CODE  PIC X(1) VALUE ";".
01  TEXT-LOC    PIC 9(9).
01  RECD-LOC    PIC 9(9).
01  TEXT-LEN    PIC 9(9).
01  TEXT-FILE-EOF-FLG  PIC X(1).
  88  TEXT-FILE-EOF     VALUE "Y".
  88  TEXT-FILE-NOT-EOF VALUE "N".
PROCEDURE DIVISION.
MAIN-PARAGRAPH.
    OPEN INPUT   TEXT-FILE
         OUTPUT  RECD-PER-PARA-FILE.
    SET TEXT-FILE-NOT-EOF TO TRUE.
    MOVE 1 TO RECD-LOC.
    MOVE SPACE TO RECD-PER-PARA-RECD.
    PERFORM UNTIL TEXT-FILE-EOF
       READ TEXT-FILE
          AT END
             SET TEXT-FILE-EOF TO TRUE
          NOT AT END
             PERFORM DECOMPOSE-WRITE
       END-READ
    END-PERFORM.
    CLOSE TEXT-FILE RECD-PER-PARA-FILE.
    STOP RUN.
DECOMPOSE-WRITE.
    .
    PERFORM UNTIL TEXT-LOC > 100
        
       INSPECT TEXT-CHUNK(TEXT-LOC:) TALLYING TEXT-LEN
             FOR CHARACTERS BEFORE PARA-DELIMITER-CODE
       IF TEXT-LEN > 0 THEN
          MOVE TEXT-CHUNK()
               TO RECD-PER-PARA-RECD()
       END-IF
       IF TEXT-LOC + TEXT-LEN  100 THEN
          WRITE RECD-PER-PARA-RECD
          MOVE 1 TO RECD-LOC
          MOVE SPACE TO RECD-PER-PARA-RECD
       ELSE
          COMPUTE RECD-LOC = RECD-LOC + TEXT-LEN
       END-IF
       COMPUTE TEXT-LOC = 
    END-PERFORM.

基本情報技術者試験


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

a,b に関する解答群

ア MOVE 0 TO RECD-LOC     イ MOVE 0 TO TEXT-LEN

ウ MOVE 0 TO TEXT-LOC     エ MOVE 1 TO RECD-LOC

オ MOVE 1 TO TEXT-LEN     カ MOVE 1 TO TEXT-LOC

c,d に関する解答群

ア RECD-LOC : TEXT-LEN     イ RECD-LOC : TEXT-LOC

ウ TEXT-LEN : RECD-LOC     エ TEXT-LEN : TEXT-LOC

オ TEXT-LOC : RECD-LOC     カ TEXT-LOC : TEXT-LEN

e に関する解答群

ア <     イ <=     ウ =

エ >     オ >=

f に関する解答群

ア RECD-LOC           イ RECD-LOC + TEXT-LEN

ウ RECD-LOC + TEXT-LEN + 1    エ TEXT-LOC + TEXT-LEN

オ TEXT-LOC + TEXT-LEN + 1

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

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

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

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

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

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

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