COBOL言語の「USING句」でパラメータの引渡しをしよう! | 用語辞典
COBOL(コボル)言語の予約語USINGを使ったパラメータの引渡しとは
COBOL(コボル)言語のUSING句とは?
USING(英語)は、USEの現在進行形で、日本語に訳すると「使用している」という意味です。
COBOL(コボル)言語のUSING句には、プログラム間でパラメータを引き渡せる機能があります。
USING句の形式
USING句は、呼び出し元プロフラムと呼び出し先プログラムの両方に指定することにより、プログラム間でパラメータの引渡しができるようになります。
■書式1:呼び出し元プログラム
CALL 呼び出し先プログラム名 USING 受け渡し方法 パラメータ1 [パラメータ2…]
■構文規則
<呼び出し先プログラム名>
呼び出して実行させるプログラムの名前を文字定数、英数字データ項目で指定します。
<受け渡し方法>
受け渡し方法は省略が可能で、「BY CONTENT」、または「BY REFERENCE」を指定することができ、受け渡し方法を省略した場合は、「BY REFERENCE」が指定されたものとみなされます。「BY CONTENT」を指定すると、パラメータが値渡しとなり呼び出し先プログラムで値を変更することはできません。「BY REFERENCE」を指定すると、パラメータが参照渡しとなり呼び出し先プログラムで値を変更することができます。
<パラメータ1 パラメータ2>
呼び出し先プログラムに引き渡すパラメータを指定します。パラメータの定義は01項目、または77項目でなければなりません。パラメータ2以降は省略が可能ですが、各パラメータは呼び出し先プログラムと、データの型や長さが一致している必要があります。
■使用例
USING句を使用し、副プログラムを呼び出すプログラム例をご紹介します。
このプログラムは、値の変更が可能なパラメータを1つ指定して副プログラムを呼び出し、変更されたパラメータの値を表示するプログラムです。
※サンプルプログラムのコンパイル環境は、cobc(GunCOBOL)2.0.0です。コンパイル環境の違いによっては、13行目の定義でコンパイルエラーが発生する場合があります。コンパイルエラーが発生する場合は桁数を増やしてください。
■実行結果
実行結果は、「書式2:呼び出し先プログラム」の実行結果をご参照ください。
■書式2:呼び出し先プログラム
PROCEDURE DIVISION USING パラメータ1 [パラメータ2…]
■構文規則
<パラメータ1 パラメータ2>
呼び出し元プログラムから引き渡されるパラメータを指定します。パラメータはLINKAGE SECTIONで、01項目、または77項目で定義しなければなりません。パラメータ2以降は省略が可能ですが、各パラメータは呼び出し元プログラムと、データの型や長さが一致している必要があります。
■使用例
USING句を使用し、主プログラムから呼び出される副プログラムのプログラム例をご紹介します。
このプログラムは、呼び出されると、2つの整数値(いずれも1桁)の入力を促すメッセージを表示し、入力された2つの整数値を加算し、加算結果をパラメータに格納して、呼び出し元プログラムに制御を戻すプログラムです。
■実行結果
実行結果は、「書式1:呼び出し元プログラム」のサンプルプログラムから、本サンプルプログラムを実行した結果です。
はじめに2個の1桁の整数値の入力を促すメッセージが表示されます。
整数の1と2を入力してみます。
計算結果が表示され、プログラムが終了しました。
USING句のCOBOL(コボル)言語における基本事項やルールについて
USING句は、呼び出し元プログラムと呼び出し先プログラムの間で受け渡すパラメータを指定する句です。パラメータとなるデータ項目は、呼び出し元プログラムではWORKING-STORAGE SECTIONで定義し、呼び出し先プログラムではLINKAGE SECTIONで定義します。
COBOL(コボル)言語のUSING句を使うときの注意点
USING句で指定するパラメータは、呼び出し元プログラムと呼び出し先プログラムで、データ項目の型や長さが一致している必要があり、一致していない場合、実行時にエラーが発生したり、予期しない動作をしたりしますので注意が必要です。
USING句を使ったCOBOL(コボル)プログラムの活用方法
USING句では、呼び出し元プログラムで受け渡し方法をパラメータごとに指定することにより、呼び出し先プログラムの不具合などでパラメータに指定したデータ項目が破壊されることを防ぐことができます。
では、呼び出し元プログラムで受け渡し方法を指定し、1番目と2番目のパラメータをINパラメータとして変更できないようにし、3番目のパラメータをOUTパラメータとして変更可能なプログラム例をご紹介します。
ご紹介するプログラム例は、「COBOL(コボル)言語のUSING句とは?」でご紹介したサンプルプログラムと同じ機能を、異なるコーディングで実現したものです。
■呼び出し元プログラム
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. USING_SAMPLE3.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- 03 DISPLAY-BUF PIC X(30).
- *パラメータ
- 01 SUJI1 PIC 9(1).
- 01 SUJI2 PIC 9(1).
- 01 KEKKA PIC 9(3).
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- PROCEDURE DIVISION.
- MAIN-PROCEDURE.
- * コンソール入力エリアの初期化
- MOVE ZERO TO SUJI1.
- MOVE ZERO TO SUJI2.
- EXEC-DISPLAY-INPUT-PROC.
- * コンソール表示&入力
- DISPLAY "足し算をします。".
- DISPLAY "0から9の整数値を2つ入力してください。".
- * 0~9以外が入力された場合、コンソール表示&入力を繰り返す
- ACCEPT SUJI1 FROM CONSOLE.
- IF (SUJI1 < 0) OR
- (SUJI1 > 9) THEN
- DISPLAY "入力値が誤っています"
- GO TO EXEC-DISPLAY-INPUT-PROC
- END-IF.
- ACCEPT SUJI2 FROM CONSOLE.
- IF (SUJI2 < 0) OR
- (SUJI2 > 9) THEN
- DISPLAY "入力値が誤っています"
- GO TO EXEC-DISPLAY-INPUT-PROC
- END-IF.
- * 入力値の加算(副プログラムの実行)
- CALL "USING_SAMPLE4" USING BY CONTENT SUJI1 SUJI2
- BY REFERENCE KEKKA.
- * 加算結果の表示
- MOVE SPACE TO DISPLAY-BUF.
- STRING "計算結果=" KEKKA DELIMITED BY SPACE INTO DISPLAY-BUF.
- DISPLAY DISPLAY-BUF.
- STOP RUN.
- END PROGRAM USING_SAMPLE3.
※サンプルプログラムのコンパイル環境は、cobc(GunCOBOL)2.0.0です。コンパイル環境の違いによっては、13行目の定義でコンパイルエラーが発生する場合があります。コンパイルエラーが発生する場合は桁数を増やしてください。
■呼び出し先プログラム
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. USING_SAMPLE4.
- DATA DIVISION.
- LINKAGE SECTION.
- 01 SUJI1 PIC 9(1).
- 01 SUJI2 PIC 9(1).
- 01 KEKKA PIC 9(3).
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- PROCEDURE DIVISION USING SUJI1 SUJI2 KEKKA.
- MAIN-PROCEDURE.
- COMPUTE KEKKA = SUJI1 + SUJI2.
- EXIT.
- END PROGRAM USING_SAMPLE4.
■実行結果
はじめに2個の1桁の整数値の入力を促すメッセージが表示されます。
整数の1と2を入力してみます。
「COBOL(コボル)言語のUSING句とは?」でご紹介したサンプルプログラムと全く同じように計算結果が表示され、プログラムが終了しました。
COBOL言語に限らず、どの言語でも1つのプログラムで、お客さまが要求する仕様を実現することは難しく、プログラムの機能分割は必然です。分割した機能(プログラム)間で、データの受け渡しはどうしても発生するため、USING句の習得はCOBOLを学ぶ上での必須事項と言えます。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典