非 COBOL プログラムへのパラメーターの受け渡し順序

呼び出し元のプログラムは、呼び出し先のプログラムが予測する順序でパラメーターを渡さない可能性があるため、必要に応じてパラメーターを渡す順序を明示的に指定します。

CALL 文の USING 句でパラメーターを指定して、COBOL プログラムへ渡す場合と同じ方法で非 COBOL プログラムへパラーメータを渡します。次に使用例を示します。

CALL call-convention "program-name" USING parameter-1, parameter-2

COBOL プログラムを呼び出すときと同じように、パラメーターの順序は重要です。ただし、Pascal などの言語では、パラメーターの順序が COBOL プログラムで予測される順序とは逆になります。呼び出し規則を使用して、パラメーターを渡す順序を定義することができます。

COBOL プログラムは、パラメーターをスタックに入れてからサブプログラムを呼び出しパラメーターを渡します。右から左 (逆の順序) または左から右 (指定した順序) のどちらかで、パラメーターをスタックに入れることができます。最初の方法は、COBOL および C で使用する規則です。 2 番目は、Pascal などの言語で使用します。

たとえば、次の文を使用して呼び出されるサブプログラムのエントリでパラメーターを渡します。

CALL "sub-prog" USING  parameter-1
                       parameter-2
                        ...
                       parameter-n-1
                       parameter-n

スタックは次の例のいずれかになります。いずれの場合でも、パラメーターはアドレスの大きいメモリからアドレスの小さいメモリへと、スタックに入れられます。スタックポインターは、スタックの次の空きスロットを指すレジスタです。

Figure 1. *
*