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

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

よく使うマニュアルです

Wiki

updated on 2004.06.23

9.35.SFLMSGを使ってみる

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


SFLMSGを使って、何か、アプリケーションに使えないかな。というわけで、試してみました。大抵は、メニューなどでプログラムメッセージを表示するのに使うものですね。まあ、なにに応用するかは、アナタ次第です。指定は簡単です。

zzi0601.gif (12362 バイト)

画面ファイル:ZZI060D

わざと、メッセージの表示行を変更して、13行目からにしました。普通は、b_upd.gif (238 バイト)25 24行目ですね。

     A                                      CA03
     A*-------------------------------------*
     A          R HED01
     A*-------------------------------------*
     A  80                                  ALARM
     A                                      KEEP
     A                                      BLINK
     A                                      OVERLAY
     A                                      PUTOVR
     A                                  8 18'THIS IS A TEST OF SUBFILE MESSAGE -
     A                                      FUNCTION '
     A*-------------------------------------*
     A          R SFLMSG                    SFL
     A*-------------------------------------*
     A                                      SFLMSGRCD(13)
     A            KEYVAR                    SFLMSGKEY
     A            SFPGMQ                    SFLPGMQ(10)
     A*-------------------------------------*
     A          R CTLMSG                    SFLCTL(SFLMSG)
     A*-------------------------------------*
     A                                      OVERLAY
     A                                      SFLDSP
     A                                      SFLDSPCTL
     A  65                                  SFLEND
     A                                      SFLINZ
     A                                      SFLSIZ(0011)
     A                                      SFLPAG(0010)
     A            SFPGMQ                    SFLPGMQ      

RPG:ZZI060

エラーメッセージはわざと、CPFメッセージから出しました。また、メッセージ識別子をしてしないで、固定情報を表示する事も可能です。

     H            Y/                                    1
     FZZI060D CF  E                    WORKSTN
     F                                              KINFDS INFDSP
     I******************************************************
     I*     D E F I N E    D A T A  - S T R U C T U R E    *
     I******************************************************
     IINFDSP      DS
     I                                      369 369 PUSHED
     I*
     IMSGF        DS
     I I            'QCPFMSG'                 1  10 MSGFIL
     I I            '*LIBL'                  11  20 MSGFLB
     I*
     I           IDS
     I                                    B   1   40MSGLEN
     I                                    B   5   80TOPGCT
     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 ERRDTA
     I           SDS
     I                                        1  10 PGMID
     I******************************************************
     I*     D E F I N E    C O N S T A N T                 *
     I******************************************************
     I              X'33'                 C         F3
     C******************************************************
     C*             M A I N -  R O U T I N E               :
     C******************************************************
     C                     MOVE 'CPF0001' MSGID            :
     C                     MOVEL'TEST'    MSG       P      :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0002' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0003' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0005' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0006' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0007' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0008' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0010' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0011' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0190' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0191' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C                     MOVE 'CPF0192' MSGID            :
     C                     EXSR @SNDPM                     :
     C*                                                    :
     C           F3        DOUEQPUSHED                     :
     C*                                                    :
     C                     WRITECTLMSG                     :MSG SFL
     C                     EXFMTHED01                      :OPTION ENTRY
     C                     EXSR @RMVPM                     :
     C*                                                    :
     C                     END                             :
     C*                                                    :
     C                     MOVE *ON       *INLR            :
     C                     RETRN                           :
     C******************************************************
     C*             S U B   -  R O U T I N E               :
     C******************************************************
     C*----------------------------------------------------*
     C           *INZSR    BEGSR                           :
     C*----------------------------------------------------*
     C                     MOVE *ON       *IN65            :
     C                     MOVELPGMID     SFPGMQ           :FOR MSG SFL
     C*                                                    :
     C                     ENDSR                           :
     C*----------------------------------------------------*
     C           @SNDPM    BEGSR                           :
     C*----------------------------------------------------*
     C                     CALL 'QMHSNDPM'                 :
     C                     PARM           MSGID   7        :
     C                     PARM           MSGF             :
     C                     PARM           MSG    78        :
     C                     PARM 78        MSGLEN           :
     C                     PARM '*INFO'   MSGTYP 10        :
     C                     PARM '*'       TOPGMQ 10        :
     C                     PARM 0         TOPGCT           :
     C                     PARM           KEYVAR  4        :
     C                     PARM           PBERR            :
     C*                                                    :
     C                     MOVE *BLANK    MSG              :
     C*                                                    :
     C                     ENDSR                           :
     C*----------------------------------------------------*
     C           @RMVPM    BEGSR                           :
     C*----------------------------------------------------*
     C                     CALL 'QMHRMVPM'                 :
     C                     PARM '*'       TOPGMQ           :
     C                     PARM 0         TOPGCT           :
     C                     PARM *BLANK    KEYVAR           :
     C                     PARM '*OLD  '  CLEAR  10        :
     C                     PARM           PBERR            :
     C*                                                    :
     C                     ENDSR                           :
      

最初は、アプリのプログラムでエラーメッセージを出す部分に、使おうとしていたのですが、「重大度」をメッセージファイルから取り出せないので、利用価値が余り無かったです。まあ、RTVMSGDもAPIから実行しても、問題ないのですけど。「重大度」は、エラー音(ALARM)を鳴らすか否かに使いたかったのです。仕方ないので、今までの、外サブで行きます。この外サブは、RTVMSGDして、メッセージの合成をしたデータと、アラームを鳴らすかいなか、のフラグを戻すものでした。これでいいや。このほかのエラーメッセージ関係のDDSキーワードも、今度試してみよう。

本来、コマンドSNDPGMMSGのCLPを作るところですが、(このコマンドはQCMDEXCで実行出来ないので)、でもそれでは面倒なので、APIを使ってみました。@SNDPMの中のQMHSNDPMです。

また、@RMVPMは、プログラムメッセージの消去です。ここは、気をつけないと、大事なメッセージまで消してしまうかもしれないので、注意して下さい。このサンプルは「修正」したほうが良いですね。このままでは、危険です。送信時のKEYVARを取って置いて、それを使って、CLEARに*BYKEYをセットして、消していくのが、安全ですね。

使えないと分かってしまい、なんかやる気を無くしました。この@RMVPMの修正は、また、気が向いたときにね。

1998/10/14


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

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

 

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