AS400銀行基幹システム開発における技術概要 - トランザクションとコンポーネントの作成_PHPチュートリアル
AS400銀行基幹システム開発における技術概要 - トランザクションとコンポーネントの記述方法
* トランザクションとコンポーネントの記述方法
Firebird基幹システムの全体構造は、メインコントロール-トランザクション-コンポーネントで構成されています層の。オンライントランザクションマスタコントロールはCプログラムで記述し、非同期トランザクションマスタコントロールと終日バッチマスタコントロールはCLおよびRPGLEプログラムで記述します。メイン コントロールはトランザクション コードを介して対応するトランザクション RPGLE プログラムを呼び出し、トランザクション プログラムは CALLP を介してさまざまなモジュールのコンポーネント RPGLE プログラムを呼び出し、処理ロジック全体を完了します。トランザクション プログラムとコンポーネント プログラムの両方で、一連のテンプレート サンプルがまとめられています。サンプル プログラムの作成方法を次に示します。
トランザクションとコンポーネントプログラムの記述方法を紹介する前に、まず、/COPY によって導入される統合共通プログラムを紹介します。プログラムのこの部分は DSCPPGM に配置されます。 /COPY は乱用すべきではなく、命名規則と組み合わせる必要があることに注意してください。そうしないと、プログラムの可読性が低下しやすくなります。
まずはHEADです。このファイルは、著作権といくつかの日付 fmt ルールを定義します。
- **始まり******************************************* **** *******************
- **プログラム名: プログラム公開制御ヘッダー*
- **機能説明: プログラム公開制御ヘッダー*
- * * *
- **バージョン: 2014-10-21_1 *
- ** *
- ** デザイナー: PACMAN 開発者: AUTOGEN *
- ** 設計日: 2011-08-30 開発日: 2011-08-30 *
- ** *
- **終了************************************** ********* *************************
- **
- HCOPYRIGHT('Firebird V2.1 コアバンキング システム、CSW SHANGHAI')
- HDATFMT(*ISO ) TIMFMT(*ISO) DATEDIT(*YMD)
次のステップは PGDS です。このファイルは、PSDS および INFDS 構造定義、エラー構造定義、エラー メッセージ配列、インターフェイス配列番号、および各プログラムによって導入される特殊目的の変数を定義します。
- **始まり******************************************** *******************
- **プログラム名: プログラム公開制御ヘッダー*
- **機能説明: プログラム公開制御ヘッダー*
- ** *
- * *バージョン: 2014-11-23_1 *
- ** *
- ** デザイナー: PACMAN 開発者: AUTOGEN *
- ** 設計日: 2011-08-30 開発日: 2011-08-30 *
- ** *
- **終了**************************************** * *************************
- **
- **公開定数
- **出力チケット配列の数
- DC_NBOTVC C CONST (100)
- **クーポン配列の個数を入力
- DC_NBINCS C CONST(30)
- **料金配列の個数を入力
- DC_NBINFE C CONST(30)
- **手数料の個数を出力配列項目
- DC_NBOTFE C CONST( 30)
- **間違ったパラメータの数を置き換えます
- DC_NBMSDS C CONST(9)
- **レコードがロックされているというエラーメッセージ
- DC_MGLOCK C CONST ('レコードはロックされています')
- ************ ************************************ *************** ************
- **エラー処理構造体
- **プログラムステータス構造体
- DRPGPSDS SDS
- D PG_MAINPROC 1 10A
- D PG_STATUS 11 15A
- D PG_PRVSTAT 16 20A
- D PG_SRCLINE 21 28A
- D PG_ROUTINE 29 36A
- D PG_PARMNUM 37 39S 0
- D PG_MSID 40 46A
- D PG_PGMLIB 81 90A
- D PG_EXCPDT 91 1 70A
- D PG_LSERRFL 175 184A
- D PG_JOBDATE 191 198A
- D PG_FLINFO 209 243A
- D PG_JOBNAME 244 253A
- D PG_JOBUSER 254 63A
- D PG_JOBNUM 264 269S 0
- D PG_RUNDATE 276 281S 0
- D PG_RUNTIME 282 287S 0
- D PG_SRCFILE 304 313A
- D PG_SRCLIB 314 323A
- D PG_SRCMBR 324 333A
- D PG_PGMNAME 334 343A
- D PG_MODNAME 344 353A
- D PG_SRCLNADD 354 355B 0
- D PG_FLILNADD 356 357B 0
- D PG_USRPRF 358 367A
- D PG_EXTERR 368 371I 0
- **ファイルステータス構造体
- DFILESDS DS BASED(FILEDSP)
- D FL_FILE 1 8A
- D FL_OPNIND 9 9A
- D FL_EOFIND 10 10A
- D FL_STATUS 11 15S 0
- D FL_OPCODE 16 21 A
- D FL_ROUTINE 22 29A
- D FL_SRCLINE 30 37A
- D FL_RECORD 38 45A
- D FL_MSID 46 52A
- D FL_SRCLNADD 77 78B 0
- D FL_ODPTYPE 81 82A
- D FL_FILENAME 83 92A
- D FL_LIBRARY 93 102A
- D FL_SPLFILE 103 112A
- D FL_SPLLIB 113 122A
- D FL_RCDLEN 125 126I 0
- D FL_KEYLEN 127 128I 0
- D FL_MEMBER 129 138A
- D FL_TYPE 147 148I 0
- D FL_RCDNUM 156 159I 0
- D FL_SPLNUM 160 163I 0
- D FL_OVERFLOW 188 189I 0
- D FL_BASEDMBRS 211 212I 0
- D FL_OPENID 214 215B 0
- D FL_RCDFMTL EN 216 217I 0
- D FL_CCSID 218 219I 0
- D FL_FBSIZE 367 370I 0
- D FL_KEYNUM 387 388I 0
- D FL_FBKEYLEN 393 394I 0
- D FL_MBRNUM 395 396I 0
- D FL_RRN 397 400I 0
- D FL_KEY 240 0A
- **ファイルステータス構造体ポインタ
- DFILEDSP S *
- ****************** ******************************* ******************* **
- **パブリック構造
- **データディクショナリの導入
- DDICT E DS EXTNAME(DICT) QUALIFIED TEMPLATE
- **パブリック エラー メッセージ インターフェイス
- DPMG E DS EXTNAME(MESG) QUALIFIED
- **エラー メッセージ 配列を置き換えます
- DA_MSDS S DIM(C_NBMSDS) LIKE(DICT.@@MSDS)
- ********** ******************** ***************************** ************
- **特殊変数
- **エラー処理プログラムが実行されているかどうか
- DPG_ERYNFG S LIKE(DICT.@@YNFG) INZ(YNFG_NO)
- **プログラムが初期化されているかどうか
- DPG_FRYNFG S LIKE(DICT.@@YNFG) INZ (YNFG_YES)
- **始まり******************************************** *** ******************
- **プログラム名: プログラム公開サブルーチン*
- **機能説明: プログラム公開サブルーチン*
- ** *
- * *バージョン: 2014-10-21_1 *
- ** *
- ** デザイナー: PACMAN 開発者: AUTOGEN *
- ** 設計日: 2011-08-30 開発日: 2011-08-30 *
- * * *
- **終了***************************************** * **************************
- **
- ***************** ****** ******************************************* *****
- ** #EXIT リターン
- ************************************ ****** **************************************
- C #EXIT BEGSR
- **
- C EVAL PG_FRYNFG = YNFG_NO
- C/IF DEFINED(USELR)
- C EVAL *INLR = *ON
- C/ENDIF
- C RETURN
- **
- C ENDSR
- ********** ******** ***************************************** ********* **
- ** #ERR エラーメッセージを取得
- **************************** ************ **********************************
- C #ERR BEGSR
- **
- C EVAL PMG.MSFLNM +
- * ********************************* *************************************
- ** #CHKMSGチェッカー返却情報
- *** ********************* ***************************** ********************** *
- C #CHKMSG BEGSR
- **
- C IF PMG.BKMSID *BLANKS
- C EXSR #EXIT
- C ENDIF
- **
- C ENDSR
- ********* *************************** *********************** ***********
- ** *PSSRプログラム例外処理
- ***** ************************* ************************ *****************
- C *PSSR BEGSR
- **
- C IF PG_ERYNFG = YNFG_NO
- C EVAL PG_ERYNFG = YNFG_YES
- C EVAL PMG.MSFLNM = PG_SRCMBR
- C EVAL PMG.MSCDLN = PG_SRCLINE
- C EVAL PMG.BKMSID = 'F' + PG _MSID
- C EVAL PMG.BKMSDS = PG_EXCPDT
- C Eval PMG.OTMSDS = PG_STATUS+'+PG_PGMLIB+'+
- PGMNAMNAME
- EXIT
- C ENDIF
- **
- *** * **************************** ********************* ****************
- ** #FLEX ファイル例外処理
- ** ************************** *********************** *************************
- C #FLEX BEGSR
- **
- C EVAL PMG.MSFLNM = PG_SRCMBR
- C EVAL PMG。 MSCDLN = FL_SRCLINE
- C EVAL PMG.BKMSID = 'F' + FL_MSID
- C IF FL_STATUS = 1218
- C CALL ' GETOBJTXT'
- C PARM FL_LIBRARY V_FLEXLIB 10
- C PARM FL_FILENAME EXOBJ 10
- C PARM '*ファイル' V_FLEXTYP 7
- C PARM *BLANKS V_FLEXTEXT 50
- C EVAL PMG.BKMSDS = %TRIM(V_FLEXTEXT) +
- C %TRIM(FL_FILENAME) + '.' +
- C %TRIM(FL_MEMBER) + C_MGLOCK +
- C ',' + PG_EXCPDT
- C ELSE
- C EVAL PMG.BKMSDS = PG_EXCPDT
- C ENDIF
- C EVAL PMG.OTMSDS = PG_FLINFO
- C EXSR #EXIT
- **
- CエンドSR
-
トランザクション プログラムの例では、6 桁のトランザクション コード 000000 を例に挙げています。トランザクション プログラムの名前は T000000A で、2 つの入力 T000000I1 と T000000I2 と 2 つの出力 T000000O1 と T00000O2 があります。ここで、I2 と O2 は配列です。
T000000I1のプログラムは以下の通りです。- A REF(DICT)
- A R RT000000I1
- A BKBRNO R REFFLD(@@BRNO)
- A COLHDG('organization')
- A TEXT('organization')
- A REF(DICT)
- A R RT000000I2
- A BKTLNO R REFFLD(@@TLNO)
- A COLHDG('Teller')
- A TEXT('Teller')
- A REF(DICT)
- A R RT000000O1
- A BKTRWB R REFFLD(@@TRWB)
- A COLHDG('トランザクションシリアル番号')
- A TEXT('トランザクションシリアル番号')
- A REF(DICT)
- A R RT000000O2
- A BKACNO R REFFLD(@@ACNO)
- A COLHDG('account')
- A TEXT('account')
- **始まり******************************************** *******************
- **プログラム名:取引プログラムテンプレート*
- **機能説明:取引プログラム開発仕様書*
- ** *
- ** デザイナー: CSWWM 開発者: CSWWM *
- ** 設計日: 2011-08-30 開発日: 2011-08-30 *
- **-------------- -------------------------------------------------- - -*
- **メンテ者:CSWYJ *
- **メンテ日:2014-10-17 *
- **メンテ内容:新仕様に合わせて書き換え*
- ** *
- **END*** * ************************************************ ** *************
- H/COPY DSCPPGM,HEAD
- ************************* ***** ********************************************
- ** データディクショナリ列挙型定数の導入
- D/COPY DSCPPGM,ENUM
- **パブリックプログラム本体の導入
- D/COPY DSCPPGM,PGDS
- ************** ********** *************************************** *********
- * **LR=*ON で終了するかどうかを決定し、活性化グループ管理を一律に使用してコメントを保持する
- D*/DEFINE USELR
- **定数を定義する
- DC_I1 C CONST('取引プログラムテンプレート')
- DC_MGBRNO C CONST('組織番号')
- DC_NBI2 C CONST(20)
- DC_NBO2 C CONST(20)
- ************* *****************
- **呼び出しサービスのプロトタイプの紹介
- D/COPY CETPEXP、SCETPSVP
- D/COPY CNCMSVC、SCNCMTAP
- ** 構造体と配列を定義する外部構造を参照する
- DT_INHD E DS EXTNAME(INHD) QUALIFIED TEMPLATE
- DT_INFE E DS EXTNAME(INFE) QUALIFIED TEMPLATE
- DT_INCS E DS EXTNAME(INCS) QUALIFIED TEMPLATE
- DT_OTHD E DS EXTNAME(OTHD) QUALIFIED TEMプレート
- DT_OTVC E DS EXTNAME(T000000I1) 修飾されたテンプレート
- DT_I2 E DS EXTNAME(T000000I2) 修飾されたテンプレート
- DT_O1 E DS EXTNAME(T000000O1) 修飾されたテンプレート
- DT_O2 E EXTNAME(T000000O2) 修飾されたテンプレート
- ***** ********** **********
- ** 内部構造体と変数を参照する構造体と配列を定義する (LIKE)
- DPIN DS QUALIFIED
- D INHD LIKEDS(T_INHD) )dim(c_nbinfe)likeds(t_infe)
- dincs dim(c_nbincs)likeds(t_i1)likeds(t_i1)
- di2 dim(c_nbi2)likeds(t_i2)
- **
- DPOT DS 認定済み
- D OTHD LIKE DS(T_OTHD )
- D OTVC DIM(C_NBOTVC) LIKEDS(T_OTVC)
- D O1 LIKEDS(T_O1)
- D O2 DIM(C_NBO2) LIKEDS(T_O2)
- * ** ************ **********
- **一時変数の構造(参照定義不可)
- DD_VARS DS
- **参照する変数の定義データ辞書へ(LIKE)
- D V_BKTRWB LIKE(DICT.@ @TRWB)
- **参照できない一時変数を定義(カスタマイズ)
- D V_NUM 5P 0
- ********* ******************* ****************************** **************
- **定義 プログラム入口
- C *エントリーリスト
- C PARM PMG
- C PARM PIN
- C PARM POT
- /無料
- EXSR @INIT;
- EXSR @CHEK;
- EXSR @MAIN;
- EXSR @RETN;
- EXSR #EXIT;
- //---------------- ---- ----
- //プログラムの初期化
- //------ ------------------------- ---
- BEGSR @INIT;
- //公的に定義された構造体を初期化します
- CLEAR PMG;
- CLEAR A_MSDS;
- //トランザクション自身の出力インターフェイスを初期化します。OTHD と OTVC はオーバーライド メソッドで初期化されていることに注意してください。
- CLEAR POT.O1;
- CLEAR POT.O2;
- //カスタム構造を初期化します
- CLEAR D_VARS;
- ENDSR;
- //---------- ---------------------- ----------
- //入力インターフェースの値が正しいことを確認してください
- //------ ------- ----------------
- BEGSR @CHEK;
- //組織番号が失われているはずです
- IF PIN.I1.BKBRNO = *BLANKS;
- EVAL PMG.BKMSID = 'EIOND';
- EVAL A_MSDS(1) = C_I1;
- EVAL A_MSDS(2) = C_MGBRNO;
- EXSR #ERR;
- ENDIF;
- //------------------------------------------
- / /プログラムの主な流れ
- //------------------------------------- -----
- BEGSR @MAIN;
- //Change
- CLEAR TPSVF1;
- CLEAR TPSVF2;
- EVAL TPSVF1.BKBRNO = PIN.I1.BKBRNO;
- CALLP SCETPSV(PMG:TPSVF1:TPSVF2) ;
- EXSR #CHKMS G;
- //特定のモジュールのアカウンティングサービスを呼び出す
- //CALLP SCETPAC(PMG:TPSVF1:POT.OTVC);
- //EXSR #CHKMSG;
- ENDSR;
- //------ ----------------------------------
- //プログラムリターン処理中
- //------ ----------------------------------
- BEGSR @RETN ;
- //登録は配列項目の数を返します
- CLEAR TPSVF1;
- EVAL CMTAF1.RDYNFG = YNFG_NO;
- EVAL CMTAF1.WTYNFG = YNFG_YES;
- EVAL CMTAF1.FDFLNM = 'O2RECD';
- EVAL CMTAF1 .fdsqnu = v_num;モジュール コンポーネントを呼び出す必要がある場合は、/COPY を使用してコンポーネントの宣言とコンポーネントのパラメーター構造定義の PROTOTYPE を導入します。この部分はコンポーネントの例で紹介されています。 トランザクションのパラメータは3つに統一されます。 1 つ目は PMG (エラー メッセージ構造体) で、メイン コントロールにエラー情報を返し、トランザクションが成功したかどうかを判断し、エラー メッセージを整理するために使用されます。次に PIN です。これは入力複合構造であり、INHD 入力アプリケーション ヘッダー、INFE 入力料金配列、INCS 入力クーポン面配列、I1、I2、およびその他のトランザクション構造自体で構成されます。最後は POT で、複合構造を出力します。複合構造は、OTHD 出力アプリケーション ヘッダー、OTVC 出力会計伝票配列、O1、O2、およびその他のトランザクション構造自体で構成されます。この部分はメッセージ形式のセクションにあります。
- すべての一時変数はプログラム内の D_VARS 構造体で定義されているため、初期化が容易になり、CLEAR D_VARS を使用して直接クリアできます。 コンポーネント プログラム テンプレート SCETPSV は、取引プログラム内で呼び出されます。同様に、最初のパラメーターは PMG である必要があります。このように、#CHKMSG と組み合わせて、エラー情報をレイヤーごとに渡すことができます。次に、コンポーネント自体のパラメータがあります。会計コンポーネントの場合、最後のパラメータは、トランザクションによって生成されたすべての会計伝票を順番に再編成し、印刷のためにフロントエンドに返すために層ごとに渡される伝票配列 POT.OTVC である必要があります。既存のシステムの多くは、トランザクション内のすべての借方および貸方の召喚状を反映することしかできませんが、会計原則に従って最小セットを分類したり、各セットに複数の借入や複数のローンが存在しないことを保証したりすることはできません。これは少しできます。
- 戻り処理プロセス中、出力に配列が含まれている場合は、このセクションで SNCCMTA を呼び出して、出力配列内の実際の値の数を設定する必要があることに特に注意してください。メイン コントロールは、以下に基づいて戻りメッセージを簡素化します。実際の数値。
-
コンポーネントプログラムサンプルSCETPSVには、固定PMGパラメータに加えて、2つの独自パラメータF1とF2があります。コンポーネントは、SCETPSVP コンポーネント宣言、SCETPSVF1 および SCETPSVF2 の 2 つのパラメータ構造体定義、および SCETPSV コンポーネント プログラムで構成されます。
SCETPSVF1パラメータファイルは以下の通りです。- A REF(DICT)
- A R RSCETPSVF1
- A BKBRNO R REFFLD(@@BRNO)
- A COLHDG('組織番号')
- A TEXT('組織番号')
- A REF(DICT)
- A R RSCETPSVF2
- A MTTLNO R REFFLD(@@TLNO)
- A COLHDG('Teller No.')
- A TEXT('Teller No.')
- **始まり******************************************* **** *******************
- **プログラム名:サービスプログラムテンプレートプロトタイプ*
- **機能説明:サービスプログラムテンプレートプロトタイプとパラメータインターフェース定義*
- * * *
- ** バージョン: 2014-10-21_1 *
- ** *
- ** デザイナー: CSWWM 開発者: CSWWM *
- ** 設計日: 2011-08-30 開発日: 2011 -08 -30 *
- **----------------------------------------------------- ------- ------------------------*
- **メンテナ: CSWYJ *
- **メンテ日: 2014 -10-17 *
- * *メンテナンス内容:新仕様に合わせて書き換え*
- ** *
- **END********************* ************** ***********************************
- **定数定義
- DC_NBTPSVF2 C CONST(50)
- *************************
- **パラメータインターフェース定義
- DTPSVF1 E DS EXTNAME(SCETPSVF1) 修飾済み
- DT_TPSVF2 E DS EXTNAME(SCETPSVF2 ) 修飾済みテンプレート
- DTPSVF2 DS 修飾済み
- D RECD LIKE(DICT.@@RECD)
- D ARR DIM(C_NBTPSVF2)いいね(T_TPSVF2)
- ****************** *********
- **プログラムプロトタイプ定義
- DSCETPSV PR EXTPGM('SCETPSV')
- D PMG LIKEDS( PMG)
- D TPSVF1 LIKEDS(TPSVF1)
- D TPSVF2 LIKEDS(TPSVF2)
コンポーネントプログラムSCETPSVファイルは以下の通りです。- **始まり******************************************** *******************
- **プログラム名: コンポーネントプログラムテンプレート*
- **機能説明: コンポーネントプログラム開発仕様書*
- ** *
- ** デザイナー: CSWWM 開発者: CSWWM *
- **設計日: 2011-08-30 開発日: 2011-08-30 *
- **--------------- -------------------------------------------------- - -*
- **メンテナンススタッフ:*
- **メンテナンス日:*
- **メンテナンス内容:*
- ** *
- **END************ * ************************************************ ** *
- H/COPY DSCPPGM,HEAD
- ************************************* ***** ********************************
- **で宣言されたプログラム演算のデータテーブルFテーブル、同時に宣言 データテーブルの動作モード
- **データテーブルの宣言順序は以下の通りです
- **1)、動作モードを読み取り専用(I)としてデータテーブルを宣言します);
- **2)、動作モードを読み取りとして宣言する (I)、書き込みを行うデータ テーブル (A)、動作モードを変更するように宣言するデータ テーブル (U);
- **4)、動作モードが更新(U)、書き込み(A)であることを宣言するデータテーブル
- **5)、動作モードが書き込み専用(O)であることを宣言するデータテーブル; facnbrmf uf e k disk infsr(#flex)infds(s_cnbrmf)
- fqualified
- facntlmfuf a e k disk infsr(#flex)infds(s_cntlmf) ********************************** **************** *****************
- **データディクショナリ列挙定数の導入
- D/COPY DSCPPGM, ENUM
- **プログラムのパブリック構造の導入
- D/COPY DSCPPGM,PGDS
- ******************************
- **ファイル構造定義
- DS_CNBRMF DS LIKEDS(FILESDS)
- DK_CNBRMF DS LIKEREC(ACNBRMF.RACNBRMF:*KEY)
- DR_CNBRMF DS LIKEREC(ACNBRMF.RACNBRMF:*INPUT)
- DW_CNBRMF DS LIKEREC(ACNBRMF.RACNBRMF: *OUTPUT)
- DS_CNTLMF DS LIKEDS(FILESDS)
- DR_CNTLMF DS Lイケレック( ACNTLMF.RACNTLMF:*INPUT)
- ************************
- ** *LR=*ON
- Dで終わるかどうかを決定*/DEFINE USELR
- ** 定数定義
- DC_F1 C CONST ('コンポーネントプログラムテンプレート')
- DC_MGBRMF C CONST ('組織テーブル')
- DC_MGBRNO C CONST ('組織番号')
- **** **************************
- **呼び出しサービスのプロトタイプの紹介
- D/COPY CETPEXP,SCETPSVP
- ** 構造体と外部構造体を参照する配列 (EXTNAME)
- ** 内部構造体と変数を参照する構造体と配列を定義する (LIKE)
- ********************* * ********
- **一時変数構造体
- DD_VARS DS
- **データディクショナリを参照する変数を定義(LIKE)
- D V_BKBRNO LIKE(DICT.@@BRNO)
- * *参照先の一時変数
- D V_NUM 5P 0
- ************************************ を定義できません******* *******************************
- **プログラムエントリー定義
- C *ENTRY PLIST
- C PARM PMG
- C PARM TPSVF1
- C PARM TPSVF2
- /FREE
- EXSR @INIT;
- EXSR @CHEK;
- EXSR @MAIN;
- EXSR #EXIT;
- / /------ -------------------------------------- ------- -
- //プログラムの初期化
- //-------------------------------- ---------- ------------------
- BEGSR @INIT;
- //公開定義された構造体を初期化します
- CLEAR PMG;
- CLEAR A_MSDS;
- //ファイル読み取りを初期化します ファイル例外構造体を除く操作構造体を取得します
- CLEAR K_CNBRMF;
- CLEAR R_CNBRMF;
- CLEAR R_CNTLMF;
- //カスタム構造体を初期化します
- CLEAR D_VARS;
- ENDSR;
- //--- --------------------------------------- ----------- ----
- //インターフェースによって渡された値が正しいか確認してください
- //------ ----------------- ------------------------
- BEGSR @CHEK;
- //組織番号が空です
- IF TPSVF1.BKBRNO = *BLANKS;
- PMG.BKMSID = 'EIOND';
- A_MSDS(1) = C_F1;
- A_MSDS(2) = C_MGBRNO;
- EXSR # ERR;
- ENDIF;
- ENDSR;
- //-- -------------------------------- ------- -----
- //プログラムの主な流れ
- //----------------------------------------------- --- ----------
- BEGSR @MAIN;
- K_CNBRMF.BKBRNO = TPSVF1.BKBRNO;
- FILEDSP = %ADDR(S_CNBRMF);
- CHAIN %KDS(K_CNBRMF) ACNBRMF .RACNBRMF R_CNBRMF;
- IF NOT %FOUND(ACNBRMF);
- PMG.BKMSID = 'ENTRD';
- A_MSDS(1) = C_MGBRMF;
- A_MSDS(2) = C_MGBRNO + K_CNBRMF.BKBRNO;
- EXSR # ERR;
- ENDIF ;
- EVAL-CORR W_CNBRMF = R_CNBRMF;
- UPDATE ACNBRMF.RACNBRMF W_CNBRMF;
- EVAL-CORR TPSVF2.ARR(1) = W_CNBRMF;
- ENDSR;
- /エンドフリー
- C /COPY DSCPPGM ,PGCM
この時点で、コンポーネントとトランザクションテンプレートが導入されました。このテンプレートに従って、実際に使用されるモジュールプログラムを記述し、トランザクションマスターにハングして実行できます。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李

OnePlus の姉妹ブランドである iQOO の製品サイクルは 2023 年から 4 年で、ほぼ終わりに近づいている可能性があります。それにもかかわらず、ブランドはまだZ9シリーズの開発を終えていないと宣言しました。その最終、そしておそらく最高エンドとなる Turbo+ バリアントが、予測どおりに発表されました。 T
