最初のページに戻ります。

総合の目次があるページに戻ります。

よく使うマニュアルです

Wiki

updated on 2004.06.23

19.2.API数字編集(編集語)

[ Previous ] [ HOME ] [ Upper ] [ Next ]


使用上の注意

  1. HF仕様書はありません。
  2. そもそも、このAPIでは、編集語は、シングルコーテーション「無し」で渡すものです。つまり、O仕様書のように、'    ,   , 0 -'ではなくて、   ,   , 0 -と渡します。しかしながら、実際、ユーティリティでは、シングルコーテーションで、括ることが多いので、この部品に渡すデータは、シングルコーテーション付きにして、このプログラム内部で、そのシングルコーテーションをはずしています。
  3. もし、シングルコーテーション無しにする場合は、それで括られた、編集語の長さを割り出さねばなりません。シングルコーテーションがあると、その長さは判定できるのですが、それがなければ、自分で設定しなくてはなりません。
  4. *ENTRYのパラメータ PIINTLは、2桁文字です。もし、ここに一桁の数字をい与える場合は、先行0を必ずつけてください。たとえば 5ではなく、05という形です。PIINTLは数字全体の長さの指定です。これと、編集語の桁数のつじつまは、正しいこと。
  5. PONTYP(10)には、通常は、*ZONEDですが、ファイル上のデータを切り出して、ここにそのままセットする場合は、数字タイプにより、パックなら*PACKED,バイナリならば*BINARYを与えてください。この場合、たぶん、データを持つファイルは、内部記述で、I仕様書で、文字として、切り出すことになるでしょう。
  6. APIでエラーがあると、???????が戻ります。b_upd.gif (283 バイト)

RPGコード(桁位置正しいので、このまま画面コピーできます)

1998/5/11少し、短くなりました。b_upd.gif (283 バイト)前のでも、結果は同じですが、@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                           :               

テスト画面

edw1.gif (8214 バイト)edw2.gif (7996 バイト)


[ Previous ] [ HOME ] [ Upper ] [ Next ]

You are at K's tips-n-kicks of AS/400

 

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送