Hitachi

SEWB+/標準サブルーチン ライブラリリファレンス


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:パラメータ構文誤り

処理基準

  1. O-PARM-TBL,O-RTN-CDをSPACEで初期化する。

  2. I-PARMを(文字コードチェック:LXRPIA01)を用いてチェックする。

    2.1 LXRPIA01のリターンコードが'LXREA007'の時,O-RTN-CDに'LXREA012'を返す。

    2.2 そのほかの時,O-RTN-CDにSPACEを返す。

  3. 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'

注意事項

  1. 入力パラメータの構文が下記以外の場合はリターンコードに'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個以下の英大文字並び)

  2. O-NAME-1,O-VALUEの重複チェックは行わない。例4のように処理する。

  3. このサブルーチンから(文字コードチェック:LXRPIA01),(文字列左詰め:LXRPIA06),(文字列有効桁数算出:LXRPIA09)を呼び出す。