引数リスト
表 1 は、外部関数パラメーター・リストの オフセット +16 (10 進) で、関数やサブルーチン・コードが受け取る 解析済み引数リストのフォーマットを示します。 この表は、3 つの引数の例です。 TSO/E は引数リストに対して、マッピング・マクロ IRXARGTB を提供します。マッピング・マクロは、SYS1.MACLIB にあります。
オフセット (10 進) | バイト数 | フィールド名 | 説明 |
---|---|---|---|
0 | 4 | ARGSTRING_PTR | 引数 1 のアドレス |
4 | 4 | ARGSTRING_LENGTH | 引数 1 の長さ |
8 | 4 | ARGSTRING_PTR | 引数 2 のアドレス |
12 | 4 | ARGSTRING_LENGTH | 引数 2 の長さ |
16 | 4 | ARGSTRING_PTR | 引数 3 のアドレス |
20 | 4 | ARGSTRING_LENGTH | 引数 3 の長さ |
24 | 8 | — | X'FFFFFFFFFFFFFFFF' |
引数リストで各引数は、引数のアドレスとその長さで構成されます。 引数リストは X'FFFFFFFFFFFFFFFF' で終了します。
引数が省略されている場合、引数のアドレスは 0 です。 引数として関数に NULL 文字列がパスされた場合、引数のアドレスはゼロではないですが、引数の長さは 0 です。 たとえば、この発動を使用して、
MYFUNCというアセンブラー・ファンクションを呼び出したとします。
Z = MYFUNC(,'','ABC')
引数リストには、3 つの引数のアドレスと長さ、および最後に X'FFFFFFFFFFFFFFFF' が含まれます。
- 最初の引数は省略された引数 (仮引数とも呼ばれます) なので、アドレス 0 で示されます。
- 2 番目の引数はヌル・ストリングなので、非ゼロのアドレスと長さ 0 で示されます。
- 3 番目の引数はストリング 'ABC' なので、文字 'ABC' へのポインターと長さ 3 で示されます。