RPGソケットバッチ処理プログラム

Return

[例]

     H            Y/                                    1
     H*---------------------------------------------------------------*
     H* PROGRAM-ID    :    SOKRPGBCHP                                 *
     H* REMARKS       :    RPG ソケットバッチ処理プログラム           *
     H* AUTHOR        :    Y.IDE                                      *
     H* DATE-WRITEN   :    1999/10/05                                 *
     H* VERSION       :    01.00 ORIGINAL                             *
     H*---------------------------------------------------------------*
     C*
     C*--------------------------------------------------------*
     C                     DO   *HIVAL
     C*ソケット獲得を待つ------------------------------------*
     C                     CALL 'SKTAKE'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C                     PARM 'SOKBCH  'APLID   8
     C           RC        IFEQ 'E'
     C                     LEAVE
     C                     ENDIF
     C*--------------------------------------------------------*
     C                     DO   *HIVAL
     C*--------------------------------------------------------*
     C*ソケットデータ受信------------------------------------*
     C                     CALL 'SKREAD'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C                     PARM '256'     BUFLEN  4
     C                     PARM           BUFIN 256
     C           RC        IFEQ 'E'
     C           BUFLEN    OREQ '0   '
     C                     LEAVE
     C                     ENDIF
     C*--------------------------------------------------------*
     C                     MOVELBUFIN     ENDSW   4
     C                     MOVELBUFIN     BUFOUT
     C           ENDSW     IFEQ 'EXIT'
     C                     LEAVE
     C                     ENDIF
     C           ENDSW     IFEQ 'END '
     C                     GOTO TAG#E
     C                     ENDIF
     C*ソケットデータ送信(もらったデータの折り返し)--------*
     C                     CALL 'SKSEND'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C                     PARM '256'     BUFLEN  4
     C                     PARM           BUFOUT256
     C           RC        IFEQ 'E'
     C                     LEAVE
     C                     ENDIF
     C*
     C*--------------------------------------------------------*
     C                     ENDDO
     C*ソケットクローズ--------------------------------------*
     C                     CALL 'SKCLOS'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C*--------------------------------------------------------*
     C                     ENDDO
     C*--------------------------------------------------------*
     C           TAG#E     TAG
     C*ソケットクローズ--------------------------------------*
     C                     CALL 'SKCLOS'
     C                     PARM           SD      4
     C                     PARM           RC      1
     C*--------------------------------------------------------*
     C                     SETON                     LR
     C                     RETRN

【解説】

他のJOBからSKGIVEで渡されたソケットディスクリプターを使用して、データの送受信を行う。

クライアントから QUIT が送られた場合は、接続をクローズして、次のディスクリプター獲得をまち、 END が渡された場合は、プログラム終了する。

【実行結果】

下記のコマンドを実行
  1. SBMJOB CMD(CALL PGM(SOKRPG/SOKRPGBCHP)) JOB(SOKRPGBCHP)
  2. SBMJOB CMD(CALL PGM(SOKRPG/SOKRPGBCHP)) JOB(SOKRPGBCHP)
  3. SBMJOB CMD(CALL PGM(SOKRPG/SOKRPGBCHP)) JOB(SOKRPGBCHP)
  4. CALL PGM(SOKRPG/SOKRPGBCHD)

3個の BATCH ジョブの SOKRPGBCHP が常駐しているので、同時に3クライアントのまでは処理できます。

それ以上のクライアントを処理したい場合は、さらに SOKRPGBCHP のサブミットが必要になります。

CALL PGM(SOKRPG/SOKRPGBCHD)だけ、対話ジョブで実行していますが、もちろん SBMJOB することも可能です。

注)ユーザー登録されていない環境では確認画面が表示されるため、 バッチ実行の際に画面 I/O エラーが発生し異常終了してしまいます。



[Return]