• 03-6869ー4694
  • info@market-interface.co.jp

COBOL QUIZ

COBOL QUIZ

Welcome to your COBOLクイズ

これからCOBOLのクイズを始めます。
まず あなたのメールアドレスを入力してください。

第1章 数値操作

000400 WORKING-STORAGE SECTION.
000500  01 数値.
000501  05 数値1 PIC  9(5) VALUE "12345".
000502  05 数値2 PIC  9(2) VALUE "23".
000503 01 結果.
000504   05 結果1 PIC   9(3).
000505  05 結果2 PIC  9(3).

問題 数値1を数値2で割ったときの余りを求める命令文を記載してください。あまりの値は結果1にいれてください。
命令文の数は複数でもかまいません。
 

第2章 文字列操作

000400 WORKING-STORAGE SECTION.
000500  01 連結元.
000501  05 転記1 PIC X(5) VALUE "ABCDE".
000502  05 転記2  PIC X(4) VALUE "xyz".
000502  01 連結先.
000503   05 連結1      PIC x(15) VALUE All "#".

002000 PROCEDURE DIVISION.

002200 文字列の連結.
002400 STRING 転記1 転記2  DELIMITED BY SIZE
002600 INTO 連結1
002700 END-STRING.

問題 連結1の結果を記載してください。

第3章 ファイル操作

処理概要
人事ファイル(KSDSを想定)に対して、処理を行います。人事ファイルは、従業員番号、所属コード、氏名で
従業員コードが主キーになっています。

000500 FILE-CONTROL.
000600 SELECT 人事ファイル ASSIGN TO "JINJJ76.DAT"
000800 ORGANIZATION IS ■■■■■■■■         (1)
000900 ACCESS MODE   IS ■■■■■        (2)
001000 RECORD KEY IS 従業員番号
001001■■■■■■■■■■■■■■                  (3) 
001100 FILE STATUS IS 人事状態. 

問題1 KSDSファイルを読む際に所属コードで検索できるように上の(1)、(2)、(3)を埋めてください。
(3)は所属コードで読み込むための設定です

第3章-2 ファイル操作(前問の続き)

処理概要
人事ファイル(KSDSを想定)に対して、処理を行います。人事ファイルは、従業員番号、所属コード、氏名で
従業員コードが主キーになっています。

問題2 人事ファイル(KSDS)の開始位置を002以降に位置付ける命令を記載してください。

1109800 MOVE "002" TO 所属コード.
1109900*所属コード002番以降のレコードに位置づけ

0100000 ■■■■■ 人事ファイル ■■■ >= 所属コード   (1)レコード位置づけ
0081010   INVALID KEY
0102000         DISPLAY N"所属コードが002以上の従業員はいません"
0810300 GO TO 範囲終了;
1818400         NOT INVALID KEY
1814001 CONTINUE;
1814002 END-■■■■■.

第3章-3 ファイル操作

下記の表はVSAM順編成(ESDS)、VSAM相対編成(RRDS)のFILE-CONTROL句です。それぞれの命令文
埋めてください。

順編成(ESDS)の場合

000500 FILE-CONTROL.
000600 SELECT 順編成ファイル ASSIGN TO "JUNJJ76.DAT"
000800 ORGANIZATION IS ■■■■          (1)
000900 ACCESS MODE   IS ■■■■■         (2)
001100 FILE STATUS IS F-STATUS.

相対編成(RRDS)の場合

000500 FILE-CONTROL.
000600 SELECT 相対編成ファイル ASSIGN TO "SOUJJ76.DAT"
000800 ORGANIZATION IS ■■■■          (3)
000900 ACCESS MODE   IS ■■■■■          (4)
000910 ■■■■-KEY IS 所属コード.
001100 FILE STATUS IS F-STATUS. 

第4章 分岐命令

003001 選択処理.
007200 DISPLAY N"処理選択" "(1" N"新規" ",2" N"全件" ・・・・)" N" UPON CONSOLE. 
003500 ACCEPT 処理番号.  

問題 下の分岐は、処理番号の内容によって人事ファイルのOPENの仕方を変えています。
それぞれの■行に入る処理分岐に関わる命令文を記載してください。

003600 ■■■■■■■■ 処理番号       (1)受けっとた値で処理分岐
003700 ■■■■ 1            (2)“1”の時は~  
003800 OPEN OUTPUT人事ファイル;
003900 ■■■■ 2 THRU 3 
004000 OPEN INPUT 人事ファイル;
004100 ■■■■ 4 THRU 5 
004200 OPEN I-O 人事ファイル;
004300 ■■■■ OTHER 
004400 GO TO ブログラム終了;
004500 END-■■■.~~~~~

第5章 テーブル操作
社員情報テーブルを作成して、40歳以上の人間の人数をカウントするアプリです。   
指示に従って命令文を埋めてください。

001111 WORKING-STORAGE SECTION.
001120 01 社員情報.
001130 05 従業員 OCCURS 30 INDEXED BY K.
001140  10 氏名 PIC N(20).
001150  10 年齢 PIC 9(2).
001160 77 人数 PIC 9(2) VALUE ZERO.

001170 PROCEDUER DIVISION.
001180 開始 SECTION.


001190 初期化.
***表「従業員」

問題1 従業員テーブルを初期化する命令文を埋めてください。命令文は複数でもOKです。

第5章-2 テーブル操作(前問の続き)
社員情報テーブルを作成して、40歳以上の人間の人数をカウントするアプリです。

問題2 下記の処理は従業員テーブルから40歳以上を探索して人数を求めています。
それぞれ命令文を埋めてください。

******逐次表引き.

001250 SET K TO 1.
002200 PERFORM UNTIL K > 30
******40歳以上の人を探索する命令を記載してください。
002308 ■■■■■■■ 従業員 ■■■■■■■■■ ■    (1)テーブルを探索する命令を記載
002400 AT END
002500 CONTINUE ;
002600 ■■■■■■■■■■■■■■           (2)40歳以上であれば・・・ 
002700 ADD 1 TO 人数;
002800 SET K UP BY 1;
002900 END-SEARCH
003000 END-PERFORM.

第6章 制御文
問題 下記のJCLはVSAMの操作に関わるJCLです。
作業内容に応じて、下記のブランクにコマンドを埋めてください。
回答は番号記載の上、記入してください。

JCL
// JOB Statement
//*********************************************************************
//* Sample JCL - IDCAMS
//* ===================
//*********************************************************************
//IDCAMS EXEC PGM=IDCAMS,REGION=4096K
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
制御文→これが下の作業で変わります。

問題1 カタログされているデータセットをリストアップする命令文を記載してください。
//SYSIN DD *
■■■■■■■ ENTRY(MY.MASTER.*)    (1)リストアップ

問題2.VSAMデータセットの作成をする命令文を記載してください。
//SYSIN DD *
■■■■■ ■■■■■-            (2)作成
(NAME(TEST.VSAMFILE) -
VOLUMES(WRKVOL) 
RECORDS(100 10) -
RECORDSIZE(80 80) -
NONINDEXED)

問題3.VSAMデータセットのアンロード
//SYSUT1 DD DISP=SHR,DSN=TEST.VSAMFILE
//SYSUT2 DD DISP=(,CATLG),DSN=TEST.VSAMFILE.UNLOAD,
// UNIT=SYSDA,VOL=SER=WRKVOL,SPACE=(TRK,(10,10)),
// DCB=(RECFM=FB,BLKSIZE=0,LRECL=80)
//SYSIN DD *
■■■■■  INFILE(SYSUT1) OFILE(SYSUT2)   (3)アンロード
//