*SUB( )/*ENDSUB
SUB 構造により、ユーザはロジックの読込と更新がより簡単に行えるように、ロジックのボディのどこにでも再使用可能なロジックセクションを定義することができます。
*SUB( ) 構造は、以下の構文を使用して、複数行 *FUNCTION( ) 構造のように宣言されます。
*SUB {SubName}({Param1,[,{Param2}…])
{body text}
{body text}
{body text}
[…]
*ENDSUB
SUB がロジックのどこか別の場所で使用されると、適切に置換されたパラメータに受け渡されたすべての値と一緒にボディ行がロジックに挿入されます。
SUB は、パラメータの受渡しがいくつでも可能な組込ファイルと同じように動作します。ロジックがチェックされると、*INCLUDE 命令で SUB が組み込まれたかのように、SUB がロジックのボディに挿入されます。ただし、SUB 構造を使用するのに特殊なキーワードは不要です。SUB は、SUB という名称の後にパラメータへの割当値を括弧で囲んで記述した行を挿入して呼び出します。組込ファイルとのその他の重要な相違点は、SUB は独自のファイルに書き込む必要はなく、FUNCTION と同様に、ロジックのどの部分にも書き込むことができる点です。
ここで SUB が定義されます。
*SUB MYSUB(Param1,Param2,Param3,Param4)
[%ACCOUNT_DIM%].[#Param1]=[%ACCOUNT_DIM%].[Param2]+[%ACCOUNT_DIM%].[Param3]
[%ACCOUNT_DIM%].[#Param4]=[%ACCOUNT_DIM%].[#Param1]*[%ACCOUNT_DIM%].[Factor_Param4]
*ENDSUB
ここで SUB が使用されます。
MySub(A1,B1,C1,D1)
MySub(A2,B2,C2,D2)
MySub(A3,B3,C3,D3)
FUNCTION と同様に、SUB は位置を区別しないため、ロジックのどの場所でも定義することができ、また必要であれば、INCLUDE 命令を使用して、ロジックにマージする必要がある個々のライブラリファイルに格納することができます。
セクションごとの再定義は必要なく、SUB をロジックのどのコミットセクションでも使用できます。ただし、SUB がロジックファイルで再定義されると、その新規定義は再定義した後に続くすべての行に適用されます。
パラメータのない SUB もサポート対象ですが、その後には常に括弧を置く必要があります。
この文書に含まれるソフトウェアコーディングおよびコード行/文字列 (以下 "コード" という) は例として示されるものであり、本稼動システム環境で使用することを意図するものではありません。コードは、特定のコーディングの構文とフレージングルールを分かりやすく説明し、視覚化することを目的としています。SAP は、ここで提供されるコードの正確性や完全性を保証せず、コードの使用によって生じたエラーまたは損害に対して責任を負いません。ただし、当該損害が SAP の故意または重大な過失によって生じた場合は除くものとします。