使用上の注意
- HF仕様書はありません。
- そもそも、このAPIでは、編集語は、シングルコーテーション「無し」で渡すものです。つまり、O仕様書のように、'
, , 0 -'ではなくて、 , , 0 -と渡します。しかしながら、実際、ユーティリティでは、シングルコーテーションで、括ることが多いので、この部品に渡すデータは、シングルコーテーション付きにして、このプログラム内部で、そのシングルコーテーションをはずしています。
- もし、シングルコーテーション無しにする場合は、それで括られた、編集語の長さを割り出さねばなりません。シングルコーテーションがあると、その長さは判定できるのですが、それがなければ、自分で設定しなくてはなりません。
- *ENTRYのパラメータ PIINTLは、2桁文字です。もし、ここに一桁の数字をい与える場合は、先行0を必ずつけてください。たとえば
5ではなく、05という形です。PIINTLは数字全体の長さの指定です。これと、編集語の桁数のつじつまは、正しいこと。
- PONTYP(10)には、通常は、*ZONEDですが、ファイル上のデータを切り出して、ここにそのままセットする場合は、数字タイプにより、パックなら*PACKED,バイナリならば*BINARYを与えてください。この場合、たぶん、データを持つファイルは、内部記述で、I仕様書で、文字として、切り出すことになるでしょう。
- APIでエラーがあると、???????が戻ります。
RPGコード(桁位置正しいので、このまま画面コピーできます)
1998/5/11少し、短くなりました。前のでも、結果は同じですが、@EWDの中が小さくなって、配列も一個になりました。
E****************************************************
E* A R R A Y T A B L E *
E****************************************************
E EWD 50 1 :FOR EDIT WORD
I******************************************************
I* D E F I N E D A T A - S T R U C T U R E *
I******************************************************
IDSEWRD DS
I 1 50 EWD
I*
I DS
I I 0 B 1 40PIMKLN
I I 0 B 5 80PBRVLN
I I 0 B 9 120POMKLN
I I 0 B 13 160POITLN
I I 0 B 17 200POEDWL
I*
IPBERR DS
I I 116 B 1 40BYTPRV
I I 0 B 5 80BYTAVA
I 9 15 ERRID
I 16 16 ERR###
I 17 116 INSDTA
C******************************************************
C* DEFINITION MODULE ( PLIST FIELD KLIST ) *
C******************************************************
C* :
C* DEFINE ENTRY :
C* :
C *ENTRY PLIST :
C PARM PIINTL 2 :整数+小数長さ
C PARM PIFIGR 30 :数字
C PARM PIEWRD 50 :編集コード
C PARM POEDTD256 :編集済み数字
C******************************************************
C* M A I N - R O U T I N E
C******************************************************
C MOVE PIEWRD DSEWRD :
C MOVE *BLANK POEDWD :
C MOVE *BLANK PBMASK256 :
C* :
C EXSR @EWD :編集後の長さ
C* :
C Z-ADDW1EDWL POEDWL :
C MOVELDSEWRD POEDWD :
C* :
C CALL 'QECCVTEW' 32 :
C PARM PIMASK256 :編集マスク
C PARM PIMKLN :編集マスク長
C PARM PBRVLN :受取変数長
C PARM POEDWD 50 :編集語
C PARM POEDWL :編集後の長さ
C PARM PBERR :エラー
C*数字の編集 :
C* :
B001 C BYTAVA IFEQ 0 ;
001 C* :
001 C MOVE PIMASK POMASK256 :
001 C MOVE PIMKLN POMKLN :
001 C MOVE PIINTL POITLN :整数桁数
001 C* :
001 C MOVE *BLANK PONTYP :
001 C MOVEL'*ZONED ' PONTYP 10 P :
001 C** SELECT *** MOVEL'*BINARY' PONTYP 10 P :
001 C** SELECT *** MOVEL'*PACKED' PONTYP 10 P :
001 C* :
001 C CALL 'QECEDT' 90 :
001 C POEDTD PARM PIEDTD256 :受取変数
001 C PARM PBRVLN :受取変数長
001 C PARM PIFIGR POFIGR 30 :ソース変数
001 C PARM PONTYP :変数クラス
001 C PARM POITLN :整数+小数長さ
001 C PARM POMASK :編集マスク
001 C PARM POMKLN :編集マスク長
001 C PARM X'00' POZRSP 1 :ゼロ平衡充填
001 C PARM PBERR :エラー
E001 C END :
C* :
B001 C BYTAVA IFNE 0 ;
001 C MOVE *ALL'?' POEDTD :編集済み数字
E001 C END :
C* :
C MOVE *ON *INLR :
C RETRN :
C******************************************************
C* S U B - R O U T I N E
C******************************************************
C*----------------------------------------------------*
C @EWD BEGSR :
C*----------------------------------------------------*
C Z-ADD0 LL 30 :
C Z-ADD0 RR 30 :
C Z-ADD0 W1EDWL 30 :
C* :
C ' ' CHECKPIEWRD:1 LL :
C '''' CHECKPIEWRD:LL LL :
C ' ' CHEKRPIEWRD:50 RR :
C '''' CHEKRPIEWRD:RR RR :
C* :
C RR SUB LL W1EDWL :
C ADD 1 W1EDWL :
C* :
B001 C LL DO RR II 30 :
001 C ADD 1 JJ 30 :
001 C MOVE EWD,II EWD,JJ :
E001 C END :
C*
001 C ADD 1 JJ
001 C MOVEA*BLANK EWD,JJ :
C* :
C ENDSR : |
テスト画面
|