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.と2.に従ってチェックする。
-
I-LENG,I-STR-NU,I-CHK-PARMの値をそのまま渡して(数字チェック/数値変換:LXRPIA26)を呼び出す。
-
LXRPIA26の出力数値(O-NUM)をO-NUMに転送する。
-
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'を返す。
-
そのほかの時,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'
注意事項
-
I-LENGについてNUMERICチェックを行い,数値でないときはリターンコード(O-RTN-CD)に'LXREA024'を返す。O-NUMには0を返す。
-
1≦I-LENG≦18でなければ,リターンコードに'LXREA020'を返す。O-NUMには0を返す。
-
範囲パラメータで指定する範囲の例を次に示す(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
-
範囲が重複していてもエラーにはならない。
-
範囲'a:b'は,aとbの大小関係に係わらず,常にa≦x AND x≦bと解釈される。
-
このサブルーチンから(数字チェック/数値変換:LXRPIA26),(文字列有効桁数算出:LXRPIA09)を呼び出す。
補足説明
-
チェック条件パラメータ
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.1 'CHG=変換指定'
文字変換を指定する。
2.1.1 変換指定
NOCHG 変換しない
STOC 英小文字を英大文字に変換
CTOC 英大文字を英小文字に変換
2.2 'SFT=シフト指定'
左詰め,右詰めするかを指定する。
2.2.1 シフト指定
NOSFT シフトしない
LEFT 左詰めする
RIGHT 右詰めする
2.3 デフォルト値
'CHG=NOCHG,SFT=NOSFT'
注意事項
-
キーワード(CHK,ENT,CHG,SFT)の指定がない時,あるいは等号の右側の値が上記以外の場合,デフォルト値が指定されたと解釈する。
-
各サブルーチンの入力パラメータとして必要としないキーワードが入力されても無視する。エラーとしない。
-
キーワードを重複して指定した場合,エラーとしないで次の例のように解釈する。
'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つが有効となる)