COBOL言語の初期化処理に重宝する「INITIALIZE文」とは? | 用語辞典

COBOL(コボル)言語の予約語INITIALIZEを使った命令文の書き方とは

辞典・辞書-INITIALIZE-イメージ

COBOL(コボル)言語のINITIALIZE文とは?

COBOL(コボル)におけるINITIALIZE文は、データ項目を初期化するときに使用する命令文です。初期化対象のデータ項目を指定すると、基本項目を初期化することができます。

基本書式は、数値型のデータ項目は0で初期化し、文字列などの英数字型のデータ項目はスペースで初期化します。

基本的には出力するデータレコードを編集する前に、レコードの内容をまとめて初期化するときに使うのが一般的です。

本記事では、INITIALIZE文の基本的な使い方やルール、注意点などをご紹介します。

書き方1:(データ項目の内容を初期化する)

INITIALIZE [初期化項目].

INITIALIZE使い方はとてもシンプルです。INITIALIZEの後に初期化する項目を指定するだけで、項目を初期化することができます。

以下にデータ項目を初期化する基本的な方法を紹介します。

使用例1:

辞典・辞書-INITIALIZE-使用例1:

実行結果1:

辞典・辞書-INITIALIZE-実行結果1:

サンプルでは英数字型のデータ項目TEST-STRを定義し、英数字の項目をMOVE文を使用して文字列"ABC"を転記しています。

次にINITIALIZE文でデータ項目TEST-STRを指定し、初期化しています。

DISPLAYで実行結果を確認すると、データが空白で初期化されているのがわかります。

書き方2:(データ項目の内容を複数初期化する)

INITIALIZE [初期化項目1] [初期化項目2] [初期化項目n...].

INITIALIZE文は、データ項目を複数指定して一括でデータを初期化することが可能です。

以下に複数のデータ項目を指定して、初期化する方法を紹介します。

使用例2:

辞典・辞書-INITIALIZE-使用例2:

実行結果2:

辞典・辞書-INITIALIZE-実行結果2:

サンプルでは英数字型のデータ項目TEST-STRと数値型のデータ項目TEST-NUM文を定義して、MOVE文で文字列"ABC"と数値の1を転記しています。

次にINITIALIZE文でデータ項目TEST-STRとTEST-NUMを連続して指定しています。

DISPLAYで実行結果を確認すると、英数字型のデータは空白、数値型は0で初期化されていることがわかります。

REPLACINGを使用した初期化方法

REPLACING句を使用すると、初期化用の値を種類に応じた定数やデータ項目を指定することができます。

書き方:(REPLACINGを指定した初期化)

INITIALIZE [初期化項目1] [初期化項目2...] REPLACING 種類 DATA BY 値.

REPLACINGで指定する種類一覧

 

種類

種類

ALPHABETIC

英字項目(Aタイプ)

ALPHANUMERIC

英数字項目(Xタイプ)

NUMERIC

数値(9タイプ)

ALPHANUMERIC-EDITED

英数字編集項目(XXX/XX/XXなど)

NUMERIC-EDITED

数値編集項目(ZZZ.ZZ9など)

NATIONAL

日本語項目(Nタイプ)

NATIONAL-EDITED

日本語編集項目(NN9-129-12など

以下にREPLACINGを使用した、INITIALIZEの初期化方法を記述します。

使用例

辞典・辞書-INITIALIZE-使用例:

実行結果

辞典・辞書-INITIALIZE-実行結果:

サンプルでは数値型のデータ項目TEST-NUM1、TEST-NUM2を定義し、MOVE文でそれぞれ値を転記しています。

次にINITIALIZE文で数値型変数に対して、REPLACINGでNUMERIC(9タイプ)を指定し、初期化用の値に5を指定します。

DISPLAYで実行結果を確認すると、5で初期化されていることがわかります。

INITIALIZE文のCOBOL(コボル)言語における基本事項やルールについて

  1. 初期化項目の値は数値型定数、文字定数、データ項目などを記述します。
  2. REPLACING指定に記述する種類は、初期化項目の型と同じでなければいけません。
  3. 同じ種類をREPLACING指定で繰り返し記述してはいけません。
  4. 初期化項目にOCCURS句のDEPENDING指定を含んではいけません。
  5. 初期化項目にRENAMES句を含んではいけません。

COBOL(コボル)言語のINITIALIZE文を扱う上での注意点

INITIALIZE文でREPLACINGを使用する場合は、基本事項やルールで記述しているように、初期化するデータ項目と、REPLACINGで指定する種類は、同じ型でなければいけません。

例えば、英数字型の項目を定義し、REPLACINGで数値型のNUMERIC(9タイプ)を指定してみます。

辞典・辞書-INITIALIZE-指定例

実行結果:

辞典・辞書-INITIALIZE-実行結果:

サンプルでは英数字型の項目を定義し、値を設定後にINITIALIZE文でREPLACINGのNUMERIC(9タイプ)を指定しています。

しかし、初期化する項目の型が英数字で、初期化で指定する値の型が数値型のため、初期化が失敗して値はそのままとなっています。

MOVE文同様に型が異なると、意図した処理を実行しませんので注意が必要です。

INITIALIZE文を使ったCOBOL(コボル)プログラムの活用法

データ項目を初期化するのに便利なINITIALIZE文ですが、データ項目をまとめて初期化したい場合があります。

そんなときは、集団項目を指定すれば集団項目配下のデータ項目を、一括して初期化することができます。

以下にINITIALIZE文で集団項目を指定して、一括で初期化するプログラムを紹介します。

   
  1. *> INITIALIZE_SAMPLE04
  2. IDENTIFICATION DIVISION.
  3. PROGRAM-ID. INITIALIZE_SAMPLE05.
  4.  
  5.  
  6. *>文字列と数字を扱うデータ項目を定義する
  7. DATA DIVISION.
  8. WORKING-STORAGE SECTION.
  9. 01 TEST-WORK-AREA.
  10. 05 TEST-STR1 PIC x(3).
  11. 05 TEST-STR2 PIC x(3).
  12. 05 TEST-NUM1 PIC 9(2).
  13. 05 TEST-NUM2 PIC 9(2).
  14.  
  15.  
  16. PROCEDURE DIVISION.
  17. MAIN SECTION.
  18.  
  19. *>項目に数値を設定
  20. MOVE "ABC" TO TEST-STR1.
  21. MOVE "CDF" TO TEST-STR2.
  22. MOVE 1 TO TEST-NUM1.
  23. MOVE 2 TO TEST-NUM2.
  24.  
  25. INITIALIZE TEST-WORK-AREA
  26.  
  27. *>初期化後の結果を出力
  28. DISPLAY "[TEST-STR1 : "TEST-STR1"]" UPON CONSOLE.
  29. DISPLAY "[TEST-STR2 : "TEST-STR2"]" UPON CONSOLE.
  30. DISPLAY "[TEST-NUM1 : "TEST-NUM1"]" UPON CONSOLE.
  31. DISPLAY "[TEST-NUM2 : "TEST-NUM2"]" UPON CONSOLE.
  32.  
  33.  
  34. STOP RUN.

実行結果:

辞典・辞書-INITIALIZE-実行結果:

サンプルでは集合項目TEST-WORK-AREAを定義し、その配下に英数字型と数値型のデータ項目を定義しています。

次に英数字型と数値型のデータ項目にMOVE文で値を転記したあとに、INITIALIZE文で集合項目TEST-WORK-AREAを指定しています。

実行結果を確認すると、集合項目配下のデータ項目が全て初期化されていることがわかります。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門