変更の始まり

自由形式プロシージャー・インターフェース定義

プロシージャー・インターフェースは DCL-PI ステートメントで始まります。

DCL-PI ステートメントの後には、ゼロ個またはそれ以上のパラメーター が続き、その後に END-PI ステートメントが続きます。

プロシージャー・インターフェースを始めるための DCL-PI ステートメント

最初のステートメントは DCL-PI で始まり、その後にプロシージャーの 名前が続くか、プロシージャーの名前を繰り返したくない場合は *N が続き、 さらにその後にキーワードが続き、最後はセミコロンで終わります。

プロシージャー・インターフェースのパラメーター

自由形式のパラメーター定義を参照してください。

プロシージャー・インターフェースを終了するための END-PI ステートメント

自由形式のプロシージャー・インターフェースの例

  1. プロトタイプのないサイクル・メイン・プロシージャーのプロシージャー・インターフェース。 プロシージャー・インターフェース名に *N が指定されています。 このプロシージャー・インターフェース内には 1 つのパラメーター name が指定されています。 (この例は、サイクル・メイン・プロシージャーが指定されている完全なプログラムを示しています)
       CTL-OPT OPTION(*SRCSTMT);
    
       DCL-PI *N;  1 
          name CHAR(10) CONST;
       END-PI;
    
       DSPLY ('Hello ' + name);
       RETURN;
  2. プロトタイプのないリニア・メイン・プロシージャーのプロシージャー・インターフェース。 EXTPGM キーワードがパラメーターなしで指定されています。 (この例は、リニア・メイン・プロシージャーが指定されている完全なプログラムを示しています)
       CTL-OPT MAIN(sayHello) OPTION(*SRCSTMT);
    
       DCL-PROC sayHello;
          DCL-PI *N EXTPGM;  2 
             name CHAR(10) CONST;
          END-PI;
    
          DSPLY ('Hello ' + name);
       END-PROC;
  3. 3 つのパラメーターがあるプロシージャー・インターフェース。 END-PI ステートメントは名前なしで指定されています。
       DCL-PROC addNewOrder;
          DCL-PI *N;
             id INT(10) VALUE;
             quantity INT(10) CONST;
             price PACKED(7 : 2) CONST;
          END-PI;  3 
          ...
       END-PROC;
  4. END-PI ステートメントに名前が指定されています。
       DCL-PROC addNewOrder;
          DCL-PI *N;
             id INT(10) CONST;
             quantity INT(10) CONST;
             price PACKED(7 : 2) CONST;
          END-PI addNewOrder;  4 
          ...
       END-PROC;
  5. DCL-PI ステートメントの一部として END-PI が指定されています。 (この例は、完全なプロシージャーを示しています)
      DCL-PROC getCurrentUser;
         DCL-PI *N CHAR(10) END-PI;  5 
    
         DCL-S currentUser CHAR(10) INZ(*USER);
         RETURN currentUser;
      END-PROC;
  6. DCL-PARM を使用して一部のサブフィールドを定義しているプロシージャー・インターフェース。
    1. パラメーター select は、 自由形式演算内で使用を許可されている命令コードと同じ名前です。 このパラメーターには DCL-PARM が必要です。 表 1を参照してください。
    2. パラメーター name は、命令コードと同じ名前ではないため、DCL-PARM は不要です。
    3. パラメーター address は、命令コードと同じ名前ではないため、 DCL-PARM は必要ありませんが、あっても有効です。
      DCL-PI *N;
         DCL-PARM select CHAR(10);  6a 
         name CHAR(10);  6b 
         DCL-PARM address CHAR(25);  6c 
      END-PI;
  7. 別の例については、外部名としての *DCLCASE の指定を参照してください。
変更の終わり