自由形式のプロシージャー・ステートメント
自由形式のプロシージャー開始ステートメントは、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;
