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
クライアントから QUIT が送られた場合は、接続をクローズして、次のディスクリプター獲得をまち、 END が渡された場合は、プログラム終了する。
3個の BATCH ジョブの SOKRPGBCHP が常駐しているので、同時に3クライアントのまでは処理できます。
それ以上のクライアントを処理したい場合は、さらに SOKRPGBCHP のサブミットが必要になります。
CALL PGM(SOKRPG/SOKRPGBCHD)だけ、対話ジョブで実行していますが、もちろん SBMJOB することも可能です。
注)ユーザー登録されていない環境では確認画面が表示されるため、
バッチ実行の際に画面 I/O エラーが発生し異常終了してしまいます。