| # 関数 この文書では、交換モジュールで使用できる、事前定義関数について説明します。 使用可能な関数は以下のとおりです。 get.xch.scheme() get.batch() get.batch.line() get.default.dateformat() qdb.search() read.table() read.table.once() read.table.company() log.mess() do.not.log.condition() do.not.export.record() get.xch.scheme() 書式 domain daxch.cxch get.xch.scheme() 説明 この関数は、現在交換されている交換スキームコードを返します。 get.batch() 書式 domain daxch.cbat get.batch() 説明 この関数は、現在交換されているバッチコードを返します。 get.batch.line() 書式 domain daxch.batl get.batchline() 説明 この関数は、現在交換されているバッチ行の ID を返します。 get.default.dateformat() 書式 domain daxch.dfor get.default.dateformat() 説明 この関数は、現行のエクスポート/インポート実行の交換スキームのデフォルト日付フォーマットを取得します。 qdb.search() 書式 qdb.search("table", index, keyfield1, ...) 使用条件: qdb.search() の前にはスペースしか入力できません (タブは不可)。 qdb.search と最初の括弧の間には、スペースを入れません。 テーブルのフォーマットは ppmmmnnn です。ここで、pp=パッケージ、mmm=モジュール、nnn=テーブル番号です。テーブル名は二重引用符 (") の間に書く必要があります。 インデックスは数値定数でなければなりません。 値を区切るには、カンマを使用します。 値を 2 行にわたって分割しないでください。ただし、カンマの後ろで構文全体を分割することはできます。 構文内でコメントを使用しないでください。 式は入力可能ですが、式でカンマを使用することはできません。したがって、qdb.search(daxch010, 1, max(200, 300)) のような例は入力できません。このため、変数または定義を使用して、この問題を回避することをお勧めします。 文字列定数にはカンマを含めることができます。 行の最後の文字が閉じ括弧文字 ｢)｣ である場合は、qdb.search() 呼出の引数の終了とみなされます。qdb.search() 呼出引数が次の行まで続く場合には、カンマはその後ろ (行末) に置き、次の行の先頭には置かないようにしてください。 例 誤: qdb.search(daxch002, 1, get.xch.scheme() ascii.file) 正: qdb.search(daxch002, 1, get.xch.scheme(), ascii.file) 文字列定数を式で使用しないでください。 説明 qdb.search 関数呼出は、生成中に以下に拡張されます。 db.change.order() 複数のキーフィールド割当 db.eq() call すべてのキーフィールドに引数を入力できない場合、残りのキーフィールドは空になり (set.min() を使用します)、db.eq() ではなく db.ge() 呼出が実行されます。 変数 e を検査すると、qdb.search() 呼出の結果をテストできます。 read.table() 関数名 READ.TABLE - テーブルを読み込む関数 書式 long READ.TABLE(const string tablename, long index.no, key.field1 [, key.field2, key.field3, ...]) 説明 この関数を使用して、バッチごとに 1 回、つまりバッチ行ごとに 1 回、テーブルからレコードを読み込みます。引数 tablename はテーブル名であり、別に宣言します。前に文字 ｢t｣ を付けないでください。テーブル名をリテラルで付ける場合は、二重引用符で囲む必要があります。引数 index.no は、テーブルが読み込まれるインデックス番号です。残りの引数は、各順番のキーフィールドの値です。このように、テーブルの読込には最低 3 つの引数が必要です。この関数は、インポートまたはエクスポート会社 (それぞれインポートまたはエクスポートデータ用) に、引数 ｢tablename｣ で指定されたテーブルを読み込みます。この関数では、引数で定義したキー値を使用してテーブルが読み込まれます。キーフィールド値を指定しない引数に対しては、キーフィールド値は空となります。 例: read.ret = READ.TABLE("tiitm001", 1, item)。ここで、｢read.ret｣ は長整数として定義し、｢item｣ は ascii ファイルのフィールド名にします。 この関数の返値は、0 : OK - 読込成功、1 : エラー - 読込失敗、となります。 read.table.once() 関数名 READ.TABLE.ONCE - バッチ行の処理中に 1 回だけテーブルを読み込む関数 書式 long READ.TABLE.ONCE(string tablename(), long index.no, key.field1 [, key.field2, key.field3, ...]) 説明 この関数では、テーブルからレコードを読み込むことができます。これによって、(READ.TABLE 関数のように) ascii ファイルのレコードごとにテーブルが読み込まれることがないので、処理速度が向上します。このテーブルは、バッチ行ごとに 1 回だけ読み込まれます。これをパラメータテーブルに使用できます。引数 tablename はテーブル名であり、別に宣言します。前に文字 ｢t｣ を付けないでください。テーブル名をリテラルで付ける場合は、二重引用符で囲む必要があります。引数 index.no は、テーブルが読み込まれるインデックス番号です。残りの引数は、各順番のキーフィールドの値です。このように、テーブルの読込には最低 3 つの引数が必要です。インポートまたはエクスポートが実行されている会社のデータが読み込まれます。 例: read.ret = READ.TABLE.ONCE("tcmcs095", 1, "PUR", 5, 0, "hisp") または read.ret = READ.TABLE.ONCE("tiitm001", 1, item)。ここで ｢read.ret｣ は長整数として定義し、｢item｣ は ascii ファイルのフィールド名にします。 この関数の返値は、0 : OK - 読込成功、1 : エラー - 読込失敗、となります。 read.table.company() 関数名 READ.TABLE.COMPANY - 特定の会社のテーブルを読み込む関数 書式 long READ.TABLE.COMPANY(string tablename(), long company.no, long index.no, key.field1 [, key.field2, key.field3, ...]) 説明 この関数で、特定の会社のテーブルからレコードを読み込むことができます。引数 tablename はテーブル名であり、別に宣言します。前に文字 ｢t｣ を付けないでください。テーブル名をリテラルで付けない場合でも、二重引用符で囲む必要があります。引数 company.no は、読み込む必要のある会社テーブルです。引数 index.no は、テーブルが読み込まれるインデックス番号です。残りの引数は、各順番のキーフィールドの値です。引数 company.no に現行会社番号が含まれている場合は、この関数は READ.TABLE 関数と同じになります。このように、テーブルの読込には最低 4 つの引数が必要です。 例: read.ret = READ.TABLE.COMPANY("tccom000", 000, 1, comp)。ここで、｢read.ret｣ は長整数として定義し、｢comp｣ は ascii ファイルのフィールド名にします。 この関数の返値は、0 : OK - 読込成功、1 : エラー - 読込失敗、となります。 log.mess() 関数名 log.mess 書式 void log.mess(string messcode, ...) 引数は、関数 ｢mess｣ に対する通常の呼出用の引数と同じにします。ただし、2 番目の引数 (mode) だけは省略します。 説明 この関数で、メッセージを画面に表示し、ログファイルにメッセージを記録します。データのインポート(非標準) (daxch0223m000)、データのインポート(標準) (daxch0224m000)、データのエクスポート(非標準) (daxch0233m000) またはデータのエクスポート(標準) (daxch0234m000) の各セッションで [メッセージで <CR> を待つ] フィールドがオンになっている場合、この関数は <Return> を待ちます。 do.not.log.condition() 関数名 do.not.log.condition() 書式 void do.not.log.condition() 説明 この関数は、レコードレベルに関して利用される条件で使用して、特定のデータベース処理 (たとえば 追加条件) を実行するかどうかを指定します。このような条件から false が返された場合は、処理は実行されず、レコードがログファイルに記録されます。false を返す前にこの関数を呼び出すと、やはり処理は実行されませんが、ログにも記録されません。そこで、条件によってレコードが拒否された場合は、｢条件拒否｣ ではなく ｢スキップ｣ としてログに記録されます。つまり、ログファイル内のレコード数が少なくなります。 追加条件で処理が行われると常に false が返される場合に、この関数を使用します。 do.not.export.record() 定義名 do.not.export.record() 書式 do.not.export.record() 使用条件: この関数はエクスポート時にのみ呼び出すことができます。daxch0132m000 で指定した条件に追加することができます。監査を基準にしてエクスポートする場合には、この関数は使用できません。 説明 この関数で、レコードがエクスポートされるのを防止します。レコードはスキップされます。これによってエクスポートファイルのサイズが制限され、インポート時のパフォーマンスが向上します。 注意: レコードがエクスポートされなくても (つまり ascii ファイルに書き出されなくても)、フィールドの関係 (エクスポート) で指定したすべての条件が実行されます。 ｢ranges｣ を使用するとより効果的なので、可能な限り使用するようお勧めします。 スキップされたレコードは再処理できません。これらはログテーブルで ｢スキップ｣ と見なされますが、ログファイルには書き出されません。 関連トピック ライブラリ 変数 |