6.4 文字列の変換ルール
ATMIプラットフォームとホスト・アプリケーション間の相互作用を計画する場合、アプリケーションの作成に使用するプログラミング言語を考慮する必要があります。COBOL言語では、文字列はC言語および関連するATMIプラットフォームVIEWバッファとは異なる方法で表現されます。次のリストは、同じ2つの文字列(string1
とstring2
)をコーディングする3つの方法を示しています。
リスト 文字列の3つの表現
C Structure:
struct text
{
char rbufsize[5];
char testnum[2];
char sendnum;
char sysid[4];
char textfld[10];
char string1[10];
char string2[16];
};
VIEW text
#type cname fbname count flag size null
char rbufsize - 5 - - -
char testnum - 2 - - -
char sendnum - 1 - - -
char sysid - 4 - - -
char textfld - 10 - - -
string string1 - 1 - 10 -
string string2 - 1 - 16 -
END
COBOL Record
01 TEXT.
05 RBUFSIZEPIC X(5).
05 TEXTNUMPIC X(2).
05 SENDNUM PIC X.
05 SYSID PIC X(4).
05 STRING1 PIC X(9).
05 STRING2PIC X(15).
リストにおいて、C構造体とVIEWバッファではstring1
とstring2
のサイズがそれぞれ10および16文字として表現されています。これに対して、COBOLレコードでは、これらのサイズはそれぞれ9および15文字です。ソース・コードでこの非互換性に対応しておかないと、CとCOBOLプログラム間でコードのミスアラインメントが発生する可能性があります。
この非互換性を回避するため、ゲートウェイではCとCOBOLアプリケーションの文字列データ間のマッピングを制御するソフトウェア・オプションを用意しています。このオプションを使用すると、2つの言語のnull終了特性および埋め込み特性の違いを自動的に補正することができます。
ノート:
このオプションはATMIプラットフォームのVIEWバッファの文字列フィールドにのみ効果があります。このスイッチはSTRINGバッファには効果がありません。親トピック: データ変換の設定