commit()

sysLib.commit() システム関数は、特定のファイルやデータベースなどのリカバリー可能リソースに対する更新を保存します。

たいていの場合、EGL は、リカバリー可能なマネージャーに順番に適用されるシングル・フェーズ・コミットを実行します。ほとんどの場合、このコミットにより、すべてのファイルまたはデータベース内の読み取り位置と更新ロックが解放されます。 暗黙的なコミットがいつ実行されるかについて詳しくは、作業論理単位を参照してください。 不要な sysLib.commit() の使用を回避することで、パフォーマンスを強化できます。 詳しくは、このトピック内の『互換性』を参照してください。 また、このトピックの終わりにある『関連参照』リンクで、 さまざまな UI テクノロジーのセグメンテーションに関する考察も参照してください。

構文

  sysLib.commit( )

互換性

表 1. commit() の互換性に関する考慮事項
プラットフォーム 問題
CICS® for z/OS®
  • sysLib.commit() の結果は、すべてのリソース・マネージャー間で調整される 2 フェーズ・コミットを実行する CICS SYNCPOINT です。
  • リモート COBOL プログラムの呼び出しにクライアント制御の作業単位が関与する場合、生成された Java™ プログラムまたはラッパーでは、 リモートの CICS ベース COBOL プログラムによって行われた更新内容 (CICS リカバリー可能ファイルへの更新も含む) も保存します。 詳しくは、「EGL 生成ガイド」の luwControl に関する情報を参照してください。
  • リモートで呼び出されたバッチ・プログラム (呼び出し側プログラムとは異なるシステムに常駐するプログラム) で sysLib.commit() を呼び出すことができます。 luwControl 属性を SERVER に設定すると、コミットが正常に機能します。 この属性を CLIENT に設定すると、EGL によって RuntimeException がスローされます。
  • CICS ファイル定義およびファイル・タイプに応じて、ファイルはリカバリー可能リソースになります。
COBOL 生成 リレーショナル・データベースへのアクセス (SQL) 時に cursorWithHold オプションを使用した場合、 読み取り位置および更新ロックは解放されない可能性があります。詳しくは、SQL の open に関する考慮事項およびSQL の prepare に関する考慮事項を参照してください。
IMS™ BMP
  • トランザクション指向 BMP の場合、sysLib.commit() は無視されます。 暗黙的なコミットが実行される条件について詳しくは、作業論理単位を参照してください。
  • バッチ指向 BMP の場合、sysLib.commit() の結果として DL/I 基本 CHKP 呼び出しが行われます。 これにより、すべてのリソース・マネージャー間で調整される 2 フェーズ・コミットが実行されます。 psbData.psbName の内容は、CHKP 呼び出しでチェックポイント識別子として使用されます。
  • 非特別代替 PCB に関連付けられたシリアル・ファイルへ書き込まれる出力は、リカバリー可能です。
  • GSAM ファイルは、基本 CHKP とともに使用すると、リカバリー不可になります。 GSAM ファイルをリカバリー可能にするには、次のいずれかのシステム関数を使用して DL/I シンボリック・チェックポイント呼び出しを発行します。
    • dliLib.AIBTDLI()
    • dliLib.EIBTDLI()
    • vgLib.VGTDLI()
IMS/VS この環境では、sysLib.commit は無視されます。 暗黙的なコミットが実行される条件について詳しくは、作業論理単位を参照してください。
iSeries® COBOL プログラムが SQL 文を発行した場合、sysLib.commit() によって SQL COMMIT WORK が実行されます。 プログラムが SQL 要求を発行していない場合、sysLib.commit() は iSeries COMMIT コマンドに相当するものになります。 暗黙的なコミットが実行される条件について詳しくは、作業論理単位を参照してください。
Java 生成
  • sysLib.commit() は、リレーショナル・データベース や WebSphere® MQ メッセージ・キューに対する 変更のほか、クライアント制御の作業単位を使用して呼び出されたリモート・サーバー・プログラムに対する変更をコミットします。
JavaScript 生成 sysLib.commit はサポートされていません。
WebSphere MQ メッセージ・キュー
  • メッセージ・キューの更新をリカバリーできるのは、MQRecord パーツの includeMsgInTransaction プロパティーが YES に設定されている場合のみです。
  • メッセージの get 文および add 文はいずれも、リカバリー可能メッセージに対する commit() および rollback() の影響を受けます。 リカバリー可能メッセージに対して、get の後に rollback() を 出した場合は、メッセージが入力キューに戻されるため、トランザクションが正常に完了しない場合にも入力メッセージは失われません。 また、リカバリー可能メッセージに対して add の後に rollback() を 出した場合は、メッセージはキューから削除されます。
z/OS バッチ
  • プログラムが PSB を指定せずに SQL 要求を発行した場合は、sysLib.commit() を呼び出すと、SQL COMMIT WORK が実行されます。
  • プログラムが PSB を指定して sysLib.commit() を呼び出すと、DL/I 基本 CHKP 呼び出しが行われます。 これにより、すべてのリソース・マネージャー間で調整される 2 フェーズ・コミットが実行されます。 psbData.psbName の内容は、CHKP 呼び出しでチェックポイント識別子として使用されます。
  • GSAM ファイルは、基本 CHKP とともに使用すると、リカバリー不可になります。 GSAM ファイルをリカバリー可能にするには、次のいずれかのシステム関数を使用して DL/I シンボリック・チェックポイント呼び出しを発行します。
    • dliLib.AIBTDLI()
    • dliLib.EIBTDLI()
    • vgLib.VGTDLI()

フィードバック