LXRPIZ11 パラメータ解析
サブルーチンID |
機能分類 |
サブルーチン名 |
テーブル名 |
---|---|---|---|
LXRPIZ11 |
文字列処理 |
LXRCIZ11 |
インタフェース
入力(区分:INPUT-PARM=I,CONSTANT=C) |
||||
---|---|---|---|---|
レベル |
項目名 |
属性 |
説明および設定値 |
区分 |
03 |
I-PARM |
X(50) |
入力パラメータ |
I |
− |
− |
− |
− |
− |
出力(区分:OUTPUT-PARM=O,RTN-CODE=R) |
||||
---|---|---|---|---|
レベル |
項目名 |
属性 |
説明および設定値 |
区分 |
03 |
O-PARM-TBL |
− |
パラメータ(テーブル) |
O |
05 |
O-PARM |
反復 |
OCCURS 10 TIMES. |
O |
− |
− |
− |
出力パラメータ |
− |
07 |
O-NAME-1 |
X(10) |
名前1 |
O |
07 |
O-NAME-2 |
X(10) |
名前2 |
O |
07 |
O-NAME-3 |
X(10) |
名前3 |
O |
07 |
O-VALUE |
X(10) |
値 |
O |
03 |
O-RTN-CD |
X(10) |
リターンコード |
R |
− |
− |
− |
SPACE:正常終了 |
− |
− |
− |
− |
LXREZ012:半角文字コード以外あり |
− |
− |
− |
− |
LXREZ013:パラメータ構文誤り |
− |
− |
− |
− |
− |
− |
処理基準
-
O-PARM-TBL,O-RTN-CDをSPACEで初期化する。
-
I-PARMを(文字コードチェック:LXRPIA01)を用いてチェックする。
2.1 LXRPIA01のリターンコードが'LXREA007'の時,O-RTN-CDに'LXREA012'を返す。
2.2 そのほかの時,O-RTN-CDにSPACEを返す。
-
O-RTN-CDがSPACEで,かつI-PARMがSPACE以外の時,次の処理を行う。
3.1 I-PARMを,','を区切り文字として2つの文字列に分割する。ただし,'('と')'で囲まれた','は区切り
文字として認識しない。
3.2 分割した文字列それぞれを,'='を区切り文字としてさらに分割し,次に従い,
名前1(O-NAME-1),値(O-VALUE)に転送する。
3.2.1 分割の結果,右辺のパラメータが1つの場合
(例:'A=B'を分割→左辺'A',右辺'B')
O-NAME-1(01)に左辺,O-VALUE(01)に右辺のパラメータ
3.2.2 分割の結果,右辺のパラメータが2つの場合
(例:'A=(B,C)'を分割→左辺'A',右辺'(B,C)')
O-NAME-1(01)に左辺,O-VALUE(01)に右辺のパラメータ1
O-NAME-1(02)に左辺,O-VALUE(02)に右辺のパラメータ2
:
3.3 O-PARMの各文字列に対し(文字列左詰め:LXRPIA06)を呼び出すことによって左詰め編集を
行う。
例1
I-PARM :'A=B' ↓ O-NAME-1(01):'A' O-VALUE(01) :'B'
例2
I-PARM :'A=(B,C)' ↓ O-NAME-1(01):'A' O-VALUE(01) :'B' O-NAME-1(02):'A' O-VALUE(02) :'C'
例3
I-PARM :'A=(B,C),D=E' ↓ O-NAME-1(01):'A' O-VALUE(01) :'B' O-NAME-1(02):'A' O-VALUE(02) :'C' O-NAME-1(03):'D' O-VALUE(03) :'E'
例4
I-PARM :'A=B,A=C' ↓ O-NAME-1(01):'A' O-VALUE(01) :'B' O-NAME-1(02):'A' O-VALUE(02) :'C'
注意事項
-
入力パラメータの構文が下記以外の場合はリターンコードに'LXREZ013'を返し,O-PARM-TBLにはSPACEを返す。
1.'A=B' 2.'A=(B,C)' 3.'A=B,C=(D,E)' 4.'A=(B,C),D=E' 5.'A=B,A=C'
(A,B,C,D,E は1個以上10個以下の英大文字並び)
-
O-NAME-1,O-VALUEの重複チェックは行わない。例4のように処理する。
-
このサブルーチンから(文字コードチェック:LXRPIA01),(文字列左詰め:LXRPIA06),(文字列有効桁数算出:LXRPIA09)を呼び出す。