COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

18.2.1 復帰コードと返却項目の使用方法

復帰コードと返却項目の使用方法について説明します。

<この項の構成>
(1) 返却項目の規則
(2) 復帰コードの規則

(1) 返却項目の規則

規則
  • 呼び出し元プログラムと呼び出し先プログラムが両方ともCOBOLプログラムの場合,呼び出し先プログラムで手続き部見出しのRETURNINGに指定したデータ項目の値が,呼び出し元プログラムのCALL文RETURNINGに指定したデータ項目に格納されます。このとき,CALL文のRETURNING指定のデータ項目と,呼び出し先プログラムの手続き部見出しのRETURNING指定のデータ項目の長さ,および用途は同じでなければなりません。同じでない場合,動作は保証しません。
  • 呼び出し先プログラムで手続き部見出しのRETURNINGのデータ項目に設定された戻り値は,呼び出し元プログラムのRETURN-CODE特殊レジスタでは参照できません。同様に,呼び出し先プログラムのRETURN-CODE特殊レジスタに設定された復帰コードは,呼び出し元プログラムのRETURNING指定のデータ項目では参照できません。
  • 呼び出し元プログラムと呼び出し先プログラムのRETURNINGに指定されたデータ項目の型が異なってはなりません。
  • RETURNINGでデータ項目に可変長項目を設定した場合,常に最大長のデータが返却項目として受け渡されます。

返却項目の受け渡しの例
CALL文のRETURNING指定による返却項目の受け渡しの例を次に示します。
呼び出し元プログラム
       WORKING-STORAGE SECTION.
       01 RTC PIC S9(9) USAGE COMP.
       PROCEDURE DIVISION.
           :
           CALL 'SAMPLE1' RETURNING RTC.
           IF RTC = 12345 THEN
           :
呼び出し先プログラム
       IDENTIFICATION DIVISION.
       PROGRAM-ID. SAMPLE1.
           :
       LINKAGE SECTION.
       01 RTC PIC S9(9) USAGE COMP.
       PROCEDURE DIVISION RETURNING RTC.
           :
           MOVE 12345 TO RTC.
           EXIT PROGRAM.

(2) 復帰コードの規則

COBOLプログラムでは,RETURN-CODE特殊レジスタに値を設定することで,C言語のプログラムのように復帰コードを設定できます。復帰コードの規則について,次に示します。

(a) 復帰コードの設定方法

呼び出し先プログラムでRETURN-CODE特殊レジスタに値を設定できます。

呼び出し先プログラムで復帰コードに0を設定する例を,次に示します。

(呼び出し先プログラムがCOBOLプログラムの場合)
MOVE 0 TO RETURN-CODE.

(呼び出し先プログラムがCプログラムの場合)
return(0);
(b) 復帰コードの値
(c) 復帰コードの参照方法

呼び出し先プログラムでRETURN-CODE特殊レジスタに設定された復帰コードを,呼び出し元プログラムで参照する方法を,次に示します。

COBOLプログラムの場合
ほかのプログラムから制御が戻ってきたとき,呼び出し先プログラムで設定したRETURN-CODE特殊レジスタの値を参照できます。
(例)
CALL 'SAMPLE1'.
IF RETURN-CODE = 20 THEN
    :

Cプログラムの場合
復帰コードは,関数の戻り値として参照できます。
(例)
int  rtn_value;
    :
rtn_value  =  SAMPLE1();
if  (rtn_value  ==  20)  {
(d) 注意事項