6.4 文字列の変換ルール

ATMIプラットフォームとホスト・アプリケーション間の相互作用を計画する場合、アプリケーションの作成に使用するプログラミング言語を考慮する必要があります。COBOL言語では、文字列はC言語および関連するATMIプラットフォームVIEWバッファとは異なる方法で表現されます。次のリストは、同じ2つの文字列(string1string2)をコーディングする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バッファではstring1string2のサイズがそれぞれ10および16文字として表現されています。これに対して、COBOLレコードでは、これらのサイズはそれぞれ9および15文字です。ソース・コードでこの非互換性に対応しておかないと、CとCOBOLプログラム間でコードのミスアラインメントが発生する可能性があります。

この非互換性を回避するため、ゲートウェイではCとCOBOLアプリケーションの文字列データ間のマッピングを制御するソフトウェア・オプションを用意しています。このオプションを使用すると、2つの言語のnull終了特性および埋め込み特性の違いを自動的に補正することができます。

ノート:

このオプションはATMIプラットフォームのVIEWバッファの文字列フィールドにのみ効果があります。このスイッチはSTRINGバッファには効果がありません。