The conventions for passing parameters, and other details of the interface between the two programs.
COBOL プログラムと他の言語で作成されたプログラムは、相互に呼び出すことができます。ただし、COBOL とは異なる方法で呼び出しを処理する言語もあります。たとえば、COBOL プログラムで予測される順序とは逆の順序でパラメータを渡す言語があります。COBOL および非 COBOL プログラムで相互に呼び出せるようにするために、COBOL プログラムで使用する、または使用すると予測される呼び出し機構を調整できます。
必要な呼び出し機構を指定するには、必要な機構を作成する呼び出し規約番号を、最初に作成します。呼び出し規約番号は、次のように定義されている 16 ビット の番号です。
- Bit 0
-
0
|
右から左にパラメータを処理します
|
1
|
左から右にパラメータを処理します
|
- Bit 1
-
0
|
呼び出し側プログラムがスタックからパラメータを削除します
|
1
|
呼び出されたプログラムがスタックからパラメータを削除します
|
- Bit 2
-
0
|
終了時に返却コードを更新します
|
1
|
終了時に返却コードは更新しません
|
どの RETURNING 句もこのビットの影響を受けません
- Bit 3
-
0
|
通常のリンク動作
|
1
|
呼び出しはリンク時に解決されます
|
- Bits 4 and 5
- R予約済み (常に 0)
- Bit 6
-
0
|
呼び出しは Windows 標準呼び出し規約に従いません
|
1
|
呼び出しは Windows 標準呼び出し規約に従います
|
これは動的呼び出しには影響しません。
- Bit 7
- 予約済み (常に 0)
- Bit 8
-
0
|
個々のエントリポイントのパラメータ数を調べます。
|
1
|
個々のエントリポイントのパラメータ数は調べません。
|
- Bit 9
-
0
|
プログラムまたは呼び出し名の大文字小文字は区別しません
|
1
|
プログラムまたは呼び出し名の大文字小文字を区別します。
|
この呼び出し規約は、リットリンクしている場合に、引用符で囲まれたプログラム名または呼び出し名のテキスト処理方法をジェネレータへの指示です。このビットが 0 の場合でも、CASE ジェネレータ指令によりプログラムまたは呼び出し名の大文字小文字を区別したり、区別しなかったりします。
- Bit 10
-
0
|
通常のCALL動作
|
1
|
RM(GIVING) を使用するとき、第一パラメタは常に CALL文のRETURNING 項目となる
|
- Bits 11-15
- 予約済み (常に 0)
呼び出し規約番号をすでに作成している場合は、それを 10 進数に変換して、次に特殊名段落で定義して変換された 10 進数を名前に割り当てます。次に、CALL 文で呼び出し規約名を使用します。
たとえば、次の呼び出し規約を定義するとします。
SPECIAL-NAMES.
CALL-CONVENTION 0 IS Microsoft-c
CALL-CONVENTION 3 IS Pascal.
次のように C プログラムを呼び出す際に、規約を 1 つ使用することができます。
CALL Microsoft-c "routine-name" USING parameter-1,parameter-2
また、Pascal プログラムからの呼び出しを受け取る場合は、次のように他の規約を使用します。
PROCEDURE DIVISION Pascal USING parameter-1,parameter-2
呼び出し規約を指定しない場合は、標準 COBOL 規約 (呼び出し規約 0) が想定されます。