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
この時点で、コンポーネントとトランザクションテンプレートが導入されました。このテンプレートに従って、実際に使用されるモジュールプログラムを記述し、トランザクションマスターにハングして実行できます。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Dreamweaver Mac版
ビジュアル Web 開発ツール
