4.7.2 JSMLSAEXT

JSMDIRECTプログラムは、LANSAファンクションを内部でのみ実行できます。LANSAプログラムを呼び出すときに3GLプログラムを実行する必要があるか、柔軟性がさらに必要な場合は、JSMLSAEXTプログラムを作成する必要があります。

この終了プログラムのソース・コードは、JSMライブラリのQCLSRCに保管されます。

 
/* JSM LANSA/3GL終了プログラム*/
 
PGM PARM(&SERVICE &SERVERHOST &HOST &PORT &REMOTEUSER &REMOTEADDR +
         &PROCESS &FUNCTION &PARTITION &LANGUAGE &PROGRAM &RDMLX &CONTINUE &MESSAGE)
 
DCL VAR(&SERVICE)    TYPE(*CHAR) LEN(30)
DCL VAR(&SERVERHOST) TYPE(*CHAR) LEN(80)
DCL VAR(&HOST)       TYPE(*CHAR) LEN(80)
DCL VAR(&PORT)       TYPE(*CHAR) LEN(5)
DCL VAR(&REMOTEUSER) TYPE(*CHAR) LEN(30)
DCL VAR(&REMOTEADDR) TYPE(*CHAR) LEN(45)
 
DCL VAR(&REQUEST)    TYPE(*CHAR) LEN(10) VALUE(RUN)
DCL VAR(&PROCESS)    TYPE(*CHAR) LEN(10)
DCL VAR(&FUNCTION)   TYPE(*CHAR) LEN(10)
DCL VAR(&PARTITION)  TYPE(*CHAR) LEN(3)
DCL VAR(&LANGUAGE)   TYPE(*CHAR) LEN(4)
DCL VAR(&PROGRAM)    TYPE(*CHAR) LEN(32)
DCL VAR(&RDMLX)      TYPE(*CHAR) LEN(1)
DCL VAR(&CONTINUE)   TYPE(*CHAR) LEN(1)
DCL VAR(&MESSAGE)    TYPE(*CHAR) LEN(256)
 
DCL VAR(&PARM01)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM02)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM03)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM04)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM05)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM06)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM07)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM08)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM09)     TYPE(*CHAR) LEN(256)
DCL VAR(&PARM10)     TYPE(*CHAR) LEN(256)
 
DCL VAR(&TASKID)     TYPE(*CHAR) LEN(8)
DCL VAR(&PCTYPE)     TYPE(*CHAR) LEN(1) VALUE(N)
DCL VAR(&DEVELOPER)  TYPE(*CHAR) LEN(1) VALUE(N)
DCL VAR(&ALLOWMSGS)  TYPE(*CHAR) LEN(1) VALUE(N)
DCL VAR(&PCNAME)     TYPE(*CHAR) LEN(10)
DCL VAR(&DATESRC)    TYPE(*CHAR) LEN(1) VALUE(S)
DCL VAR(&BDEBUG)     TYPE(*CHAR) LEN(1) VALUE(N)
DCL VAR(&BDEBUGDEV)  TYPE(*CHAR) LEN(10)
DCL VAR(&BDEBUGMSG)  TYPE(*CHAR) LEN(10)
DCL VAR(&XRUNADPRM)  TYPE(*CHAR) LEN(512)
 
MONMSG MSGID(CPF0000)
 
/* CONTINUEの省略値は'Y' */
/* CHGVAR VAR(&CONTINUE)の値('N') */
/* CHGVAR VAR(&MESSAGE)の値('I do not know you') */
/* 終了*/
 
IF COND(&PROGRAM *NE ' ') THEN(DO)
   /* RPGを呼び出す*/
   CALL &PROGRAM
 
   GOTO END
 
ENDDO
 
IF COND(&RDMLX *EQ 'Y') THEN(DO)
   /* RDMLXを実行する要求を変更する*/
   CHGVAR VAR(&REQUEST) VALUE(X_RUN)
ENDDO
 
IF COND(&PROCESS *NE ' ' *AND &FUNCTION *NE ' ') THEN(DO)
 
   IF COND(&REQUEST *EQ 'RUN') THEN(DO)
      /* LANSA V10またはV11を呼び出す*/
      CALL PGM(LANSA) PARM(&REQUEST &PROCESS &FUNCTION +
                           &PARM01 &PARM02 &PARM03 &PARM04 &PARM05 +
                           &PARM06 &PARM07 &PARM08 &PARM09 &PARM10 +
                           &PARTITION &LANGUAGE &TASKID &PCTYPE +
                           &DEVELOPER &ALLOWMSGS &PCNAME &DATESRC +
                           &BDEBUG &BDEBUGDEV &BDEBUGMSG)
      GOTO END
 
   ENDDO
 
   IF COND(&REQUEST *EQ 'X_RUN') THEN(DO)
      /* LANSA V11を呼び出す - RDMLX */
      CALL PGM(LANSA) PARM(&REQUEST &PROCESS &FUNCTION +
                           &PARM01 &PARM02 &PARM03 &PARM04 &PARM05 +
                           &PARM06 &PARM07 &PARM08 &PARM09 &PARM10 +
                           &PARTITION &LANGUAGE &TASKID &PCTYPE +
                           &DEVELOPER &ALLOWMSGS &PCNAME &DATESRC +
                           &BDEBUG &BDEBUGDEV &BDEBUGMSG &XRUNADPRM)
      GOTO END
 
   ENDDO
 
   GOTO END
 
ENDDO
 
SNDPGMMSG MSG('No program or function specified for execution')
 
END: ENDPGM