制御オプション EXPROPTS(*ALWBLANKNUM)
は、V7R5 V7R3 から使用可能になっているオプション。(※IBM i 7.5 での変更点にありますが、TR等のPTFでV7R3以降使える様です)
外部(Webやインタフェースのアップロード)とのやりとりをする場合、受け取るフィールドが数値タイプでも、相手のDBがOpne系だとNULL値(≒空文字)だったりする事はよくある話。
そこで出番となるのは%DEC関数
で数値変換をするのだが、今まで *BLANK
を渡すとエラーになって *ZERO
に置き換えてから実行しないとエラーになっていた。しかし、制御オプション EXPROPTS(*ALWBLANKNUM)
を H仕様書 に記述すれば、無問題!ゼロの結果を返してくれます。
以下、使用例
QII0170R.rpgle
H*- ブランクを数値変換の引数として許可する
H EXPROPTS(*ALWBLANKNUM)
D*- ---<< 変数定義 >>-----*
D STR1 S 63A
D DEC1 S 9S 0
D MSG S 40A
C*- ***************************************************************
C*- * メインロジック **
C*- ***************************************************************
C MONITOR
C*- 数値変換
C EVAL STR1 = *BLANK
C EVAL DEC1 = %DEC(STR1 : 63 :15 )
C EVAL MSG = ' 数値1… '
C + %EDITC(DEC1 : '3')
C MSG DSPLY
C ON-ERROR *ALL
C EVAL MSG = '[ERROR:*ALL]'
C + %CHAR(%STATUS)
C + '*ALL 監視エラー '
C MSG DSPLY
C ENDMON
C*
C SETON LR
C RETURN