関数

この文書では、交換モジュールで使用できる、事前定義関数について説明します。

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」 を使用するとより効果的なので、可能な限り使用するようお勧めします。
  • スキップされたレコードは再処理できません。これらはログテーブルで 「スキップ」 と見なされますが、ログファイルには書き出されません。

関連トピック