| # dadlllogging DLL 使用法 ライブラリ: dadlllogging: このライブラリには、次の関数のグループが含まれています。 ログテーブル (daxch008 および daxch009) に作用する関数。ログテーブルを使用して、インポートおよびエクスポートプログラムの進捗を追跡します。完全交換または指標にもとづく交換中に、各バッチ行の完了がログに記録されます。監査を基準にした交換中、各トランザクションがログに記録されます。 ログテーブルから情報を取得する関数もこの DLL に表示されており、ログテーブルに関するすべての ｢ロジック｣ はこのライブラリに集約されています。 ログファイルに作用する関数。ログファイルを使用して、インポート実行中に発生したエラーを記録します。以下のいくつかのタイプのエラーをログに記録することができます。 1. 不正にフォーマット設定された文字列などによるエラー。交換エラーです。2. データベースエラーによるエラー 3. 条件によるレコードの不合格 4. 実行が終了する前に stop.processing が true になる (終了条件に起因)。5. 実行条件により、バッチ行 が実行されない。 一般的注釈: ｢company｣ という名前のオプションのパラメータが存在する場合は、応答を探索する会社を指定できます。実際の呼び出しでパラメータを指定しない場合は、現行会社が使用されます。 DLL プロトタイプ
    function extern close.log.1s.transaction( )
    function extern close.log.file( )
    前 : true
    後 : ログファイルが閉じられます (開いていた場合)
    function extern flush.log.file( )
    前 : true
    後 : ログファイルが書き出されます (開いていた場合)

    function extern long get.ascii.file.settings.of.exchange.run( domain daxch.txch xch.type,
    domain daxch.cxch xch.scheme, domain daxch.cbat batch, domain daxch.long run,
    domain daxch.pint try, ref domain daxch.yesno compressed.files, ref domain
    daxch.yesno control, ref domain daxch.sepa separator, ref domain daxch.sepa
    enclosing.char )
    前 : true
    後 : 返値が true (<> 0) である場合、compressed.files、control、separator, enclosing.char にはログテーブル (バッチレベル) から読み取られた値が格納されます。

    返値: ログファイルに、指定された xch.type、xch.scheme、run、try に対応するエントリがあるかどうか。

    function extern long get.batch.lines.of.exchange.run( domain daxch.txch xch.type, domain daxch.cxch
    xch.scheme, domain daxch.cbat batch, domain daxch.long run, domain daxch.pint
    try, ref domain daxch.batl batl(), ref domain daxch.path file() fixed )
    前 : true
    後 : 返値 > 0 ならば、0 <= n <= 返値 であるすべての n について次のとおりです。batl(n) = ログテーブルから読み取られた、xch.scheme、batch に対応するエクスポートバッチ行。file(n) = run/try 中の xch.scheme/batch に対応した batl(n) の実行で作成されたファイルの名前 (パス名を含む)。daxch009 の現行レコード (ログテーブル、バッチ行レベル) は変更されない可能性があります。
    返値: xch.scheme/batchで指定されたバッチに対する標準エクスポートの実行/試行のバッチ行の数。(バッチ行が見つからない場合は 0)

    function extern string get.highest.transno.completed( domain daxch.txch
    xch.type, const domain daxch.cxch xch.scheme, long run.num, long try.num, const
    domain daxch.cbat batch, [ long company ] )
    前 : true
    返値: ログテーブルの中の、パラメータで指定された実行に対応する、完了済の最大トランザクション番号。これらのパラメータに関してログレコードがない場合、返値は 0 です。

    function extern get.latest.batch.completed( domain daxch.txch
    xch.type, const domain daxch.cxch xch.scheme, long run.num, long try.num, ref
    domain daxch.pint seqn, ref domain daxch.cbat batch, [ long company ] )
    前 : true
    後 : seqn および batch には、指定された試行で完了した最新のバッチが格納されます。(これらの値は、継続のために必要です)。見つからない場合は、次のとおりになります。
    seqn = 0 および batch = ""

    説明 : 完了したバッチは終了日 > 0 となります。

    function extern long get.latest.batl.completed(
    domain daxch.txch xch.type,
    const domain daxch.cxch xch.scheme,
    long run.num,
    long try.num,
    const domain daxch.cbat batch,
    [ long company ] )

    前 : true

    返値: パラメータで指定された実行に関するログテーブルにある、バッチ連番の値が最も大きいバッチ行。パラメータに関してログレコードが見つからない場合は、0 が返されます。

    function extern long get.next.run.num( const
    domain daxch.cxch xch.scheme, domain daxch.txch xch.type )
    返値: (この交換スキームおよびタイプに関して見つかった最も大きい実行番号) + 1。ログテーブルに組合せが存在しない場合は 1

    function extern long get.next.try.num( const domain
    daxch.cxch xch.scheme, domain daxch.txch xch.type, long run.num )
    返値: (この実行に関して見つかった最も大きい試行番号) + 1。この組合せのログファイルに実行番号がない場合は 1

    function extern get.original.ttbl.and.casf( ref
    string ttbl(), ref string casf() )
    前 : daxch009 のレコードが設定されていること。
    後 : ttbl および casf には、この記録済バッチ行に属する TRITON テーブルおよび ASCII ファイルがそれぞれ格納されます。
    説明 : 親交換スキームのために、この情報を特定するのは簡単ではありません。
    その上、リンクが削除されていて、リンクされていたテーブルおよび ASCII ファイルを見つけられないかもしれません。見つからない場合、2 つの引数は空になります。
    状況 : daxch021 または daxch031 のレコードが変更される可能性があります。

    function extern long get.previous.run.interval( const domain
    daxch.cxch xch.scheme, domain daxch.txch xch.type, long run.num, ref domain
    daxch.utc date.f, ref domain daxch.utc date.t )
    前 : true
    返値: 指定された実行が '監査に基づく' として記録されているか。
    状況: where 条件を満足するすべてのレコードには、同じ監査間隔が格納されていると想定されます。エクスポートプログラムは、daxch008 が変更されたことをこのフィールドに反映します
    後: ret => date および time 変数には、指定された xch のスキーム、タイプ、および実行に属する監査間隔が格納されます。

    function extern long is.one.without.previous.run.interval( const domain daxch.cxch xch.scheme.f, const domain daxch.cxch xch.scheme.t, domain daxch.txch xch.type )
    返値: 指定範囲に監査に基づく交換スキームが存在するか、およびその前回の実行で監査に基づいてエクスポートされたかどうか。
    説明 : 前回の実行に関する情報が見つからない場合は 'true' が返されます。フィールド daxch008.cntl を使用して、ログデータに間隔の情報があるかどうかが判別されます

    function extern log.1s.transaction( domain daxch.txch xch.type, const domain daxch.cxch xch.scheme, const domain daxch.cbat batch, long run.num, long try.num, long tran.id1, long tran.id2, long first )
    前 : 最初のトランザクションが 1 秒以内ならば、first = true です。open.log.1s.transaction が正常に呼び出されています (つまり、返値が true)。

    後 : トランザクション ID (2 つの長整数) がログファイルに書き出されます。
    説明 : この関数の目的は、1 秒以内に発生した各トランザクションをログファイルに書き出すことです。

    function extern log.batchline( domain daxch.batl batchline, long no.read,
    long no.prcd, long no.erej, long no.crej, long no.skip, domain daxch.path
    asciifile, domain daxch.path sourcefile )
    前: このバッチ行が属するバッチに関して log.start.batch がすでに呼び出されており、まだ log.end.batch が呼び出されていません。
    後 : バッチ行の完了がログテーブルに記録されます。daxch008 の ｢latest completed batchline｣ が更新され、daxch009 に統計が挿入されます。daxch009 の EDUPL では、このレコードは無視されます。
    状況 : コミットされず、新規の再試行ポイントも設定されません。
    説明 : 次の結果が期待されます (ただし、チェックはされません)。
    no.read = no.prcd + no.erej + no.crej + no.skip

    function extern log.end.batch( )
    前 : 以前に log.start.batch が呼出済
    後 : log.start.batch が記録され、それを受けてバッチの終了が記録されます。
    状況 : 再試行ポイントは設定されません。コミットはされます。

    function extern log.error(
    domain daxch.batl batl,
    long error.type,
    const string data.line(),
    ... )

    前 :
    * 前もって open.log.file() が呼び出され、ログファイルが開かれています。
    * error.type は、{e_cond, e_dberr, e_xcherr, e_stop} のどれか。
    * error.type が {e_cond, e_stop} 内の場合、追加の文字列引数 (条件コード) が 1 つ必要
    * error.type = e_xcherr の場合、追加の文字列引数 (メッセージコード) が 1 つ必要
    * error.type = e_dberr の場合、追加の長整数値引数 (errno) が 1 つ必要
    * casf を strip する必要はない点に注意してください

    後 : ログファイル に 1 行追加 ||#err.desc.o
    * 内容: batl, error.type, error.code, data.line
    * 内容: batl, error.type, error.code, |#err.desc.n error.message, data.line |#err.desc.n
    * data.line と同様のフォーマット (separator, encl.char, fixed length: 事前に open.log.file() を呼び出して渡しておく必要があります)。
    * エラーコードは追加引数です (条件名, メッセージコードまたはエラー番号)。

    function extern log.multiline( long fp )

    前 : * 前もって open.log.file() が呼び出され、ログファイルが開かれています。
    * fp は、読込のために開くファイル (ASCII ファイル) へのファイルポインタです
    * 内部ファイルポインタ直前の行は、ログファイルに書き込まれたばかりです

    後 : 記録されたこの行に続く複数行のテキストも、ログファイルに追加されます。ログファイルに書き込まれる複数行テキストの各行には、再処理コントロールデータは追加されません。

    状況 : ファイル fp に関する
    内部ファイルポインタは、複数行テキストの次をポイントしています。

    function extern log.set.sbus.batch( )

    前 : 以前に log.start.batch が呼び出されています

    後 : フィールド daxch008.sbus が、subscription.used の設定に従って更新されます
    状況: retry.point は設定されず、コミットもされていません

    function extern log.start.batch(
    domain daxch.txch xch.type,
    const domain daxch.cxch xch.scheme,
    long run.num,
    long try.num,
    const domain daxch.cbat batch,
    domain daxch.redo redo,
    domain daxch.cntl cntl,
    long processing.company,
    long startup.company,
    const string comb.sepa(),
    domain daxch.sepa ench,
    domain daxch.link link,
    domain daxch.long srun,
    domain daxch.pint stry,
    domain daxch.yesno compressed,
    [ domain daxch.date adat.f ],
    [ domain daxch.time atim.f ],
    [ domain daxch.date adat.t ],
    [ domain daxch.time atim.t ] )

    前 : atim.f および atim.t がパラメータとして渡される場合、それらのフォーマットは hhmmss である必要があります。cntl = audit ならば、省略可能なパラメータに、監査間隔の値が格納される必要があります。
    後 : バッチの開始時点が記録されます。すなわち、固定データと、開始日および開始時刻です。
    この固定データは、後で以下を呼び出す際に使用されます。
    - log.transaction()
    - log.batchline()
    - log.end.batch()
    このログは、会社 <startup.company> に関して行われます。

    状況 : コミットされず、新規の再試行ポイントも設定されません。

    function extern log.transaction( const string trans.num() )

    前 : このトランザクションが属するバッチに関して以前に log.start.batch が呼び出されていますが、log.end.batch はまだ呼び出されていません。

    後 : トランザクションの終了はログテーブル (daxch008) に記録されています。たとえば、フィールド ｢完了トランザクション番号の最高値｣ が更新されます。

    状況 : コミットされず、新規の再試行ポイントも設定されません。

    function extern long open.log.1s.transaction(
    domain daxch.txch xch.type,
    const domain daxch.cxch xch.scheme,
    const domain daxch.cbat batch,
    long run.num,
    long try.num )

    前 : true.

    返値: ログファイルを作成して開くことができた場合に true。
    そのファイルの名前はログファイルと同じですが、拡張子は ｢.tran｣ です。
    注 : この関数および関数 log.1s.transaction() を呼び出した後で、関数 close.log.1s.transaction() を呼び出す必要があります。

    function extern long open.log.file(
    domain daxch.txch xch.type,
    const domain daxch.cxch xch.scheme,
    const domain daxch.cbat batch,
    long run.num,
    long try.num,
    string separator(1),
    string enclosing.char(1),
    [ long company ] )

    前 : xch.scheme が存在している必要あり

    返値: ログファイルを開くことができたかどうか

    後 : エラー記録先のログファイルが開かれています。必要な場合は、ログファイルを置く場所のパスも作成されます。
    説明 : ファイルを開いた後は、log.error を呼び出すたびにエラーを記録することができます。
    このファイルを閉じるときは、close.log.file を呼び出す必要があります。ログファイルの名前は、以下のとおりです。
    * 標準インポート: <daxch001.epth>/<xch.scheme>.<run.num>.i/log.<batch>.<run.num>.<try.num>
    * 非標準インポート: <daxch001.epth>/<xch.scheme>/log.<batch>.<run.num>.<try.num>
    * 標準エクスポート: <daxch001.epth>/<xch.scheme>.<run.num>.e/exp.<batch>.<run.num>.<try.num>
    * 非標準エクスポート: <daxch001.epth>/<xch.scheme>/exp.<batch>.<run.num>.<try.num>
    会社 <company> のテーブル daxch001 が他に使用されている場合、あるいは存在しない場合には、現行会社。

    function extern long try.to.get.previous.run.interval(
    const domain daxch.cxch xch.scheme.f,
    const domain daxch.cxch xch.scheme.t,
    domain daxch.txch xch.type,
    domain daxch.long run.num,
    ref domain daxch.utc date.f,
    ref domain daxch.utc date.t )

    返値: すべての xch スキームが、指定された実行番号に関して間隔の開始日および終了日と時刻が同じか。

    後 : ret = true => interval には、判明した間隔の値が格納されます。
    ret = false => interval は未定義
    説明 : 対象になる交換スキームは、監査にもとづくもの、およびすでに実行番号 run.num と対応するもののみです。

    function extern long try.to.get.run.number(
    const domain daxch.cxch xch.scheme.f,
    const domain daxch.cxch xch.scheme.t,
    domain daxch.txch xch.type,
    ref long next.run.num )

    返値: 指定された xch タイプと対応する使用済実行番号の最高値が、すべての xch スキームに関して同じか。

    後 : ret = true => next.run.num = 見つかった番号 + 1
    ret = false => next.run.num は未定義です。
関連トピック ライブラリ |