Hitachi

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


LXRPIA27 数字範囲チェック/数値変換

サブルーチンID

機能分類

サブルーチン名

テーブル名

LXRPIA27

項目編集

数字範囲チェック/数値変換

LXRCIA27

〈このページの構成〉

インタフェース

入力(区分:INPUT-PARM=I,CONSTANT=C)

レベル

項目名

属性

説明および設定値

区分

03

I-LENG

P(2)

長さ

IL

03

I-STR-NU

X(18)

文字列(数字)

I

03

I-CHK-PARM

X(50)

チェック条件パラメータ

C

'ENT=入力モード指定'

(詳細はLXRPIZ11およびLXRPIA27の補足説明を参照のこと)

03

I-RNG-PARM

X(50)

範囲パラメータ

C

'1:3,11:13,99'の形式で指定

(詳細は処理基準,注意事項参照のこと)

出力(区分:OUTPUT-PARM=O,RTN-CODE=R)

レベル

項目名

属性

説明および設定値

区分

03

O-NUM

9(18)

数値

O

03

O-RTN-CD

X(10)

リターンコード

R

SPACE:正常終了

LXREA028:範囲パラメータエラー

LXREA029:数値が指定範囲外

(そのほかの内容はLXRPIA26の項を参照のこと)

処理基準

  1. 注意事項1.と2.に従ってチェックする。

  2. I-LENG,I-STR-NU,I-CHK-PARMの値をそのまま渡して(数字チェック/数値変換:LXRPIA26)を呼び出す。

  3. LXRPIA26の出力数値(O-NUM)をO-NUMに転送する。

  4. LXRPIA26のリターンコード(O-RTN-CD)がSPACEの時,次の処理を行う。

    4.1 I-RNG-PARMの値が次の範囲パラメータの文法に合っているかをチェックする。

      範囲パラメータ=範囲〔,範囲〕...

      範囲=数字並び〔:〔数字並び〕〕または

        :数字並び

      数字並び=1個以上18個以下の数字(0〜9)の並び

    4.2 チェック結果がエラーの時,O-RTN-CDに'LXREA028'を返す。

    4.3 チェック結果がエラーでない時,次の処理を行う。

      4.3.1 O-NUMの値が範囲パラメータで指定する範囲に含まれていればO-RTN-CDにSPACE

         を返す。

      4.3.2 そのほかの時,O-RTN-CDに'LXREA029'を返す。

  5. そのほかの時,LXRPIA26のリターンコード(O-RTN-CD)をそのままO-RTN-CDに返す。

例1

 I-LENG    :6
 I-STR-NU  :'△123△△'
 I-CHK-PARM:'ENT=MENT'
 I-RNG-PARM:'1:200,999'
 ↓
 O-NUM     :123
 O-RTN-CD  :SPACE

例2

 I-LENG    :2
 I-STR-NU  :'△123△△'
 I-CHK-PARM:'ENT=MNENT'
 I-RNG-PARM:':99'
 ↓
 O-NUM     :123
 O-RTN-CD  :'LXREA029'

注意事項

  1. I-LENGについてNUMERICチェックを行い,数値でないときはリターンコード(O-RTN-CD)に'LXREA024'を返す。O-NUMには0を返す。

  2. 1≦I-LENG≦18でなければ,リターンコードに'LXREA020'を返す。O-NUMには0を返す。

  3. 範囲パラメータで指定する範囲の例を次に示す(O-NUMの値xとする)。

    3.1 I-RNG-PARM='1:3,11:13,90'の時 1≦x≦3 OR 11≦x≦13 OR 90≦x

    3.2 I-RNG-PARM=':5,9'の時      x≦5 OR x=9

    3.3 I-RNG-PARM=':9,5:'の時     x≦9 OR 5≦x

  4. 範囲が重複していてもエラーにはならない。

  5. 範囲'a:b'は,aとbの大小関係に係わらず,常にa≦x AND x≦bと解釈される。

  6. このサブルーチンから(数字チェック/数値変換:LXRPIA26),(文字列有効桁数算出:LXRPIA09)を呼び出す。

補足説明

  1. チェック条件パラメータ

    1.1 'ENT=入力モード指定'

      入力必須,全桁入力の区分を指定する。

     1.1.1 入力モード指定

       MNENT 空白可  入力データがSPACEの時,エラーにしない。

       MENT  入力必須 入力データがSPACEの時,エラーにする。

       MFILL 全桁入力 入力データの有効桁数がI-LENGで指定した長さより短い場合,

                エラーにする。

    1.2 'CHK=(文字指定〔,文字指定〕)'

      文字種別で指定した文字だけで構成されているかチェックする。チェックの範囲は,

      SPACE以外の最初の文字からSPACE以外の最後の文字までとする。

      文字指定を2つ指定した場合,1つ目の文字指定は先頭1文字に,2つ目の文字指定は

      2文字目以降に適用する。

      文字指定を1つ指定した場合,この指定を全文字に適用する。

     1.2.1 文字指定

       ALNUM  英数字       A-Z,a-z,0-9 (62文字)

       ALPHA  英字        A-Z,a-z   (52文字)

       CAPS   英大文字      A-Z     (26文字)

       SMLS   英小文字      a-z     (26文字)

       NUM   数字        0-9     (10文字)

       CAPSNUM 英大文字または数字 A-Z,0-9   (36文字)

       SMLSNUM 英小文字または数字 a-z,0-9   (36文字)

    1.3 デフォルト値

      'ENT=MNENT,CHK=(ALNUM,ALNUM)'

  2. 編集条件パラメータ

    2.1 'CHG=変換指定'

      文字変換を指定する。

     2.1.1 変換指定

       NOCHG 変換しない

       STOC  英小文字を英大文字に変換

       CTOC  英大文字を英小文字に変換

    2.2 'SFT=シフト指定'

      左詰め,右詰めするかを指定する。

     2.2.1 シフト指定

       NOSFT シフトしない

       LEFT  左詰めする

       RIGHT 右詰めする

    2.3 デフォルト値

      'CHG=NOCHG,SFT=NOSFT'

注意事項

  1. キーワード(CHK,ENT,CHG,SFT)の指定がない時,あるいは等号の右側の値が上記以外の場合,デフォルト値が指定されたと解釈する。

  2. 各サブルーチンの入力パラメータとして必要としないキーワードが入力されても無視する。エラーとしない。

  3. キーワードを重複して指定した場合,エラーとしないで次の例のように解釈する。

    'CHK=ALNUM,CHK=ALPHA'  →'CHK=(ALNUM,ALPHA)'と同等

    'CHK=ALNUM,CHK=(CAPS,NUM)→'CHK=(ALNUM,CAPS)'と同等

     (CHKの場合,括弧の付き方に関係なく,前から2つが有効となる)

    'SFT=(LEFT,RIGHT)'  →'SFT=LEFT'と同等

    'SFT=LEFT,SFT=RIGHT'→'SFT=LEFT'と同等

     (ENT,CHG,SFTの場合,括弧の付き方に関係なく,前から1つが有効となる)