COBOL言語の「SET文」の使い方について理解しよう! | 用語辞典

COBOL(コボル)言語において、さまざまな場合に使用される予約語「SET」の代表的な使い方、SEARCH文と合わせた表内検索とは

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

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

SET(英語)は、日本語に訳すると「(特定の場所に固定して)置く」、「(部署などに)配置する」、「(ある関係に)位置づける」という意味です。一般的にも何か道具を用意して配置するときに、「セットする」などと言いますよね。

COBOL(コボル)言語のSET文は、表要素の指標(インデックス)、条件変数の値、外部スイッチなどを設定する機能があります。

この章では、SET文の代表的な使い方として、表内検索を行う場合の検索開始位置を示す指標(インデックス)の設定方法を解説します。

SET文の形式:SET~TO~

SET~TO~では、表内検索を開始する指標(インデックス)を設定します。

■書式

 SET 検索用インデックス項目 TO 要素番号.

■構文規則

<検索用インデックス項目>

検索対象の表の定義で、「INDEXED BY」によって指定されている検索用インデックス項目を記述します。

<要素番号>

検索を開始する要素番号を整数値で記述します。整数値には、数値定数、または数値形式のデータ項目を記述することができます。

■使用例

 SET文で検索開始位置を設定し、表検索を行うプログラム例をご紹介します。

 プログラム例では、コンソールに商品番号の入力を促すメッセージを表示し、入力された商品番号を商品テーブルから検索し、商品名と値段を表示するプログラムです。該当する商品番号がない場合は、商品コードの再入力を促します。SET文は検索開始直前の59行目にあり、商品テーブルの検索開始位置に「1」を設定しています。

辞典・辞書-SET-使用例

■実行結果

はじめに商品番号入力を促すメッセージが表示されます。

辞典・辞書-SET-実行結果

数字の2を入力してみます。

辞典・辞書-SET-入力例

「りんご (200円)」が表示され、プログラムが終了しました。

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

COBOL言語において、SET文は、何かを「設定する」ために使用します。設定の対象は、表のインデックス、条件変数、外部スイッチなど多岐にわたります。

SET文には、主に表1に示す9つの機能がありますが、COBOL言語を学び始めたばかりの方は、まず表のインデックスを設定する機能と、条件変数に値を設定する機能があることを覚えておくといいでしょう。

          表1 SET文の主な機能

番号

機能

1

表の指標(インデックス)を設定し、表の参照位置を定める。

2

外部スイッチの状態を設定(変更)する。

3

条件変数の値を設定(変更)する。

4

ファイル名を割当に使用する特殊レジスタ「FILE-PREFIX」
を設定する。

5

構成変数を設定する。

6

データ項目のアドレスを設定する。

7

データ項目の長さを設定する。

8

カレントウィンドウ、または活性中のウィンドウを制御する。

9

スレッドの優先順位を設定する。

COBOL(コボル)言語のSET文を使うときの注意点

SET文で表のインデックスを設定する場合は、表を定義したときに「INDEXED BY」で指定した検索用のインデックス項目を指定しなければなりません。

また、SET文で条件変数に値を設定(変更)する場合、88レベルで条件名と値を定義する必要があります。条件変数に値を設定する方法は、次章の「SET文を使ったCOBOL(コボル)プログラムの活用方法」に、プログラム例として記載していますので参考にしてください。

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

SET文を使用すると、条件変数の値を変更することができます。条件変数の値を変更するためには、変更する値を88レベルで定義し、条件変数と関連づけておく必要があります。

以下のプログラム例では、表示するメッセージの内容を88レベルで定義し、コンソールから入力された値により、メッセージを変更しています。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. SET-SAMPLE2.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. * コンソール入力バッファ
  14. 03 CONSOLE-INPUT PIC X(1).
  15. 88 HANI VALUE 0 THRU 8.
  16. 88 OWARI VALUE 9.
  17. 03 DSP-BUF PIC X(30).
  18. 88 MSG-INPUT VALUE "Please Input 0 to 9 (9:EXIT)".
  19. 88 MSG-ERROR VALUE "Input Error".
  20. 88 MSG-END VALUE "Program was stoped".
  21.  
  22. *-------------------------------------------
  23. * 主手続
  24. *-------------------------------------------
  25. PROCEDURE DIVISION.
  26. MAIN-PROCEDURE.
  27. * コンソール入力エリアの初期化
  28. MOVE SPACE TO CONSOLE-INPUT.
  29.  
  30. EXEC-DISPLAY-INPUT-PROC.
  31. * 入力メッセージ表示&入力
  32. SET MSG-INPUT TO TRUE.
  33. DISPLAY DSP-BUF.
  34. ACCEPT CONSOLE-INPUT FROM CONSOLE.
  35.  
  36. * 入力値が範囲内なら、コンソール表示&入力を繰り返す
  37. IF HANI THEN
  38. GO TO EXEC-DISPLAY-INPUT-PROC
  39. END-IF.
  40.  
  41. * 9が入力された場合、プログラムを終了する
  42. IF OWARI THEN
  43. SET MSG-END TO TRUE
  44. DISPLAY DSP-BUF
  45. GO TO END-PROC
  46. END-IF.
  47.  
  48. * 数字以外が入力された場合、エラーメッセージを表示し、再入力
  49. SET MSG-ERROR TO TRUE.
  50. DISPLAY DSP-BUF.
  51. GO TO EXEC-DISPLAY-INPUT-PROC.
  52.  
  53. END-PROC.
  54. STOP RUN.
  55. END PROGRAM SET-SAMPLE2.

■実行結果

はじめに0~9までの数字の入力を促すメッセージが表示されます。

辞典・辞書-SET-実行結果

英字のAを入力します。

辞典・辞書-SET-入力例

エラーメッセージが表示され、再入力を促されました。

数字の1を入力します。

辞典・辞書-SET-入力例

再入力が促されました。

数字の9を入力します。

辞典・辞書-SET-入力例

終了メッセージが表示され、プログラムが終了しました。

SET文による表の検索開始位置の設定は、SEARCH文を使用した表検索にはつきものです。また、SET文を使用した条件変数の値の設定(変更)も、COBOL言語でよく使用されるテクニックです。どちらの使い方もしっかり覚えておきましょう。

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

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

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

COBOL入門のカテゴリー

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