2.7.2 VIEW記述ファイルの作成

VIEW型バッファを使用するには、VIEW記述ファイルにC言語のレコードを定義する必要があります。VIEW記述ファイルには、各エントリのVIEW、およびC構造体のマッピングとFML変換パターンを記述したVIEWが定義されています。VIEWの名前は、C言語の構造体の名前に対応します。

VIEW記述ファイルの各構造体は、次の形式で定義します。

$ /* View structure */
  VIEW viewname
  type    cname     fbname    count    flag    size     null
        

次の表は、VIEW記述ファイルに指定する必要がある各C構造体のフィールドを示しています。

表2-7 VIEW記述ファイルのフィールド

フィールド 説明
type フィールドのデータ型。shortlongfloatdoublecharstring、またはcarrayを指定できます。

ノート:

mbstringデータ型は、VIEW32型付きバッファのみでサポートされます。
cname C構造体のフィールド名。
fbname FMLからVIEW、またはVIEWからFMLへの変換関数を使用する場合、対応するFML名をこのフィールドに指定する必要があります。このフィールド名は、FMLフィールド表ファイルにも必要です。FMLに依存しないVIEWには必要ありません。
count フィールドの反復回数。
flag 次のいずれかのオプション・フラグを指定します。
  • P - NULL値の解釈を変更します
  • S - フィールド化バッファから構造体に一方向のマッピングを行います
  • F - 構造体からフィールド化バッファに一方向のマッピングを行います
  • N - ゼロ方向のマッピングを行います
  • C - 連想カウント・メンバー(ACM)に追加フィールドを生成します
  • L - STRINGCARRAYおよびMBSTRINGに転送されるバイト数を保持します

ノート:

view32コマンドは、MBSTRING型バッファのLオプション・フラグを自動的に追加します。
size STRINGおよびCARRAYバッファ・タイプの場合、バッファの値の最大長を指定します。その他のバッファ・タイプの場合には、このフィールドは無視されます。
null ユーザー指定のNULL値、またはマイナス記号(-)の場合にはフィールドのデフォルト値を示します。VIEW型バッファで使用されるNULL値は空のC構造体メンバーを示します。

数値型の場合、デフォルトのNULL値は0 (dec_tの場合は0.0)になります。文字型の場合、デフォルトのNULL値は\0になります。STRING型、CARRAY型およびMBSTRING型の場合、デフォルトのNULL値は" "になります。

規約により、エスケープ文字として使用される定数にも、NULL値を指定できます。VIEWコンパイラで認識されるエスケープ定数は、\ddd (dは8進数)、\0、\n、\t、\v、\r、\f、\\、\'および\"です。

STRINGCARRAYMBSTRING、およびchar型のNULL値は、二重引用符または一重引用符で囲みます。VIEWコンパイラでは、ユーザー定義のNULL値でエスケープされていない引用符は使用できません。

VIEWメンバー記述のNULLフィールドにキーワードNONEを指定することもできます。このキーワードは、そのメンバーのNULL値がないことを示します。文字列および文字配列メンバーの最大サイズのデフォルト値は2660文字です。詳細については、『Oracle Tuxedo ATMI FML関数リファレンス』を参照してください。

コメント行は、「#」または「$」文字で始めます。行頭に$が挿入されたコード行は、.hファイルに出力されます。

次のリストは、FMLバッファに基づくVIEW記述サンプル・ファイルの一部です。この場合は、fbnameフィールドを指定する必要があり、この値は対応するフィールド表ファイルの値と一致している必要があります。CARRAY1フィールドのオカレンス・カウントが2に設定されていること、Cフラグが設定されて追加のカウント要素の作成が定義されていることに注目してください。また、Lフラグが設定され、アプリケーションがCARRAY1フィールドを格納するときの文字数を示す長さ要素が定義されています。

FML VIEWのVIEW記述ファイルのリスト

$ /* View structure */
  VIEW MYVIEW
  #type                       cname                     fbname     count     flag     size     null
  float                       float1                    FLOAT1       1        -        -       0.0
  double                      double1                   DOUBLE1      1        -        -       0.0
  long                        long1                     LONG1        1        -        -        0
  short                       short1                    SHORT1       1        -        -        0
  int                         int1                      INT1         1        -        -        0
  dec_t                       dec1                      DEC1         1        -       9,16      0
  char                        char1                     CHAR1        1        -        -       '\0'
  string                      string1                   STRING1      1        -        20      '\0'
  carray                      carray1                   CARRAY1      2       CL        20      '\0' 
  bool                        bool1                     BOOL1        1        -        -        0
  signedchar               signedchar1                 SIGNEDCHAR1   1        -        -        0
  unsignedchar             unsignedchar1               UNSIGNEDCHAR1 1        -        -        0
  wchar_t                     wchar_t1                   WCHAR_T1    1        -        -        0
  unsignedint              unsignedint1                UNSIGNEDINT1  1        -        -        0
  unsignedlong             unsignedlong1               UNSIGNEDLONG1 1        -        -        0
  longlong                   longlong1                   LONGLONG1   1        -        -        0
  unsignedlonglong         unsignedlonglong1     UNSIGNEDLONGLONG1   1        -        -        0
  longdouble                 longdouble1              LONGDOUBLE1    1        -        -        0
  struct                     struct1                    STRUCT1      1        -        -        0
END

次のリストは、同じVIEW記述ファイルで非依存型VIEWのものを示しています。

非依存型VIEWのVIEW記述ファイルのリスト

$ /* View data structure */
 VIEW MYVIEW
 #type                     cname             fbname     count     flag     size     null
 float                   float1                 -         1         -        -        -
 double                  double1                -         1         -        -        -
 long                    long1                  -         1         -        -        -
 short                   short1                 -         1         -        -        -
 int                     int1                   -         1         -        -        -
 dec_t                   dec1                   -         1         -       9,16      -
 char                    char1                  -         1         -        -        -
 string                  string1                -         1         -        20       -
 carray                  carray1                -         2         CL       20       -
bool                     bool1
signedchar               signedchar1
unsignedchar             unsignedchar1
wchar_t                  wchar_t1
unsignedint              unsignedint1
unsignedlong             unsignedlong1
longlong                 longlong1
unsignedlonglong         unsignedlonglong1
longdouble               longdouble1
struct struct1
END

ノート:

この形式はFML依存型VIEWと同じです。ただし、fbnameフィールドとnullフィールドには意味がなく、viewcコンパイラで無視されます。これらのフィールドにはプレースホルダーとして値(たとえば、ダッシュ)を入れる必要があります。