変更の始まり

自由形式のプロシージャー・ステートメント

自由形式のプロシージャー開始ステートメントは、DCL-PROC で始まり、 その後にプロシージャー名が続き、さらにその後にキーワード が続き、最後はセミコロンで終わります。 プロシージャーのプロトタイプがなく、 EXTPROC キーワードのプロシージャー名パラメーターに *DCLCASE が 指定されている場合、 プロシージャーの外部名は、DCL-PROC ステートメントに指定された名前と 同じであり、大/小文字も同じです。

自由形式のプロシージャー終了ステートメントは、END-PROC で始まり、 その後に任意指定のプロシージャー名が続き、 最後はセミコロンで終わります。 名前が指定される場合は、プロシージャー開始ステートメントに指定された 名前と同じでなければなりません。

自由形式のプロシージャー・ステートメントの内部で使用を許可されている指示は、 /IF、/ELSEIF、/ELSE、および /ENDIF のみです。
   DCL-PROC getCustName
       /IF DEFINED(EXPORT_ALL_PROCEDURES)
               EXPORT
       /ENDIF
               ;

プロシージャー・ステートメントの例

  • 次の例では、END-PROC ステートメントには名前は指定されていません。
    ヒント: プロシージャーが大規模であり、DCL-PROC ステートメント と END-PROC ステートメントの両方をエディターで一緒に表示できない場合、 END-PROC ステートメントに名前を指定すると役立つことがあります。
       DCL-PROC cleanup;
          CLOSE *ALL;
          UNLOCK *ALL;
          deleteTempUsrspc();
       END-PROC;
  • 次の例では、プロシージャー getNextOrder がプロトタイプなし で定義されています。 プロシージャー・インターフェースは EXTPROC(*DCLCASE)  2  を指定しています。 したがって、プロシージャーの外部名は、 DCL-PROC ステートメント  1  に指定された名前とまったく同じ「getNextOrder」です。
    注: 実行時に、外部名は、プロシージャーに誤りがあった場合にジョブ・ログ内に 示されるか、または、ジョブを表示したときにプログラム・スタック内に示されます。
       DCL-PROC getNextOrder;            1 
          DCL-PI *N IND
                    EXTPROC(*DCLCASE);   2 
             order LIKEDS(order_t);
          END-PI;
    
          DCL-F orders STATIC;
    
          READ orders order;
    
          RETURN %EOF(orders);
       END-PROC getNextOrder;
変更の終わり