RFIDataSourceService Example
This LANSA function is the host program for the client RFIExample example program.
********** Beginning of RDML commands **********
FUNCTION OPTIONS(*DIRECT)
DEFINE FIELD(#JSMSTS) TYPE(*CHAR) LENGTH(20)
DEFINE FIELD(#JSMMSG) TYPE(*CHAR) LENGTH(255)
DEFINE FIELD(#JSMCMD) TYPE(*CHAR) LENGTH(255)
DEFINE FIELD(#EMPNO) TYPE(*CHAR) LENGTH(5)
DEFINE FIELD(#SURNAME) TYPE(*CHAR) LENGTH(20)
DEFINE FIELD(#GIVENAME) TYPE(*CHAR) LENGTH(20)
DEFINE FIELD(#ADDRESS1) TYPE(*CHAR) LENGTH(25)
DEFINE FIELD(#ADDRESS2) TYPE(*CHAR) LENGTH(25)
DEFINE FIELD(#ADDRESS3) TYPE(*CHAR) LENGTH(25)
DEFINE FIELD(#SKILCODE) TYPE(*CHAR) LENGTH(10)
DEFINE FIELD(#DATEACQR) TYPE(*DEC) LENGTH(6) DECIMALS(0)
DEFINE FIELD(#GRADE) TYPE(*CHAR) LENGTH(1)
DEFINE FIELD(#COMMENT) TYPE(*CHAR) LENGTH(20)
DEF_LIST NAME(#SKILL) FIELDS((#SKILCODE) (#DATEACQR) (#GRADE) (#
COMMENT)) TYPE(*WORKING)
DEFINE FIELD(#SNAME) TYPE(*CHAR) LENGTH(10)
DEFINE FIELD(#LNAME) TYPE(*CHAR) LENGTH(30)
DEF_LIST NAME(#MAPLST) FIELDS((#SNAME) (#LNAME)) TYPE(*WORKING)
DEF_LIST NAME(#FLDLST) FIELDS((#SNAME)) TYPE(*WORKING)
DEFINE FIELD(#SOURCE) TYPE(*CHAR) LENGTH(50)
********** Build Map
EXECUTE SUBROUTINE(BLDMAP)
********** 'Open service'
USE BUILTIN(JSM_OPEN) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 'Load service'
CHANGE FIELD(#JSMCMD) TO('SERVICE_LOAD SERVICE(RFIDATASOURCESERVICE)
SERVICE_LIST(SNAME,LNAME) BIND(*FIELD)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS
#JSMMSG #MAPLST)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** Check for inbound data source
USE BUILTIN(JSM_COMMAND) WITH_ARGS('CHECK OBJECT(*DATASOURCE)')
TO_GET(#JSMSTS #JSMMSG)
IF COND('#JSMSTS *EQ OK')
********** Get employee id from data source
CHANGE FIELD(#JSMCMD) TO('GET OBJECT(*FIELD) NAME(EMPNO) SERVI
CE_LIST(SNAME)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS
#JSMMSG #FLDLST)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
CHANGE FIELD(#JSMCMD) TO('GET OBJECT(*TABLE) NAME(SKILLS) SERV
ICE_LIST(SKILCODE,DATEACQR,GRADE,COMMENT)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS
#JSMMSG #SKILL)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
ENDIF
********** Create data source
USE BUILTIN(JSM_COMMAND) WITH_ARGS('CREATE DATASOURCE(EMPLOYEE)
') TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** Add skills to data source
EXECUTE SUBROUTINE(SKILL)
CHANGE FIELD(#JSMCMD) TO('PUT OBJECT(*TABLE) NAME(SKILLS) SERV
ICE_LIST(SKILCODE,DATEACQR,GRADE,COMMENT)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS
#JSMMSG #SKILL)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** Add fields to data source
CHANGE FIELD(#EMPNO) TO(A1001)
CHANGE FIELD(#GIVENAME) TO(JOANNE)
CHANGE FIELD(#SURNAME) TO(JONES)
EXECUTE SUBROUTINE(FIELDS)
CHANGE FIELD(#JSMCMD) TO('PUT OBJECT(*FIELD) SERVICE_LIST(SNAM
E)')
USE BUILTIN(JSM_COMMAND) WITH_ARGS(#JSMCMD) TO_GET(#JSMSTS
#JSMMSG #FLDLST)
********** Send data source to client
USE BUILTIN(JSM_COMMAND) WITH_ARGS('SEND OBJECT(*DATASOURCE
)') TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** 'Close service'
USE BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG)
EXECUTE SUBROUTINE(CHECK) WITH_PARMS(#JSMSTS #JSMMSG)
********** SUB ROUTINES
SUBROUTINE NAME(CHECK) PARMS((#JSMSTS *RECEIVED) (#JSMMSG *RECEIVE
D))
IF COND('#JSMSTS *NE OK')
********** Close service and send the HTTP response
USE BUILTIN(JSM_CLOSE) TO_GET(#JSMSTS #JSMMSG)
ENDIF
ENDROUTINE
SUBROUTINE NAME(FIELDS)
CHANGE FIELD(#SNAME) TO(EMPNO)
ADD_ENTRY TO_LIST(#FLDLST)
CHANGE FIELD(#SNAME) TO(GIVENAME)
ADD_ENTRY TO_LIST(#FLDLST)
CHANGE FIELD(#SNAME) TO(SURNAME)
ADD_ENTRY TO_LIST(#FLDLST)
ENDROUTINE
SUBROUTINE NAME(BLDMAP)
CHANGE FIELD(#SNAME) TO(EMPNO)
CHANGE FIELD(#LNAME) TO(EMPLOYEE_ID)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(SURNAME)
CHANGE FIELD(#LNAME) TO(*BLANK)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(GIVENAME)
CHANGE FIELD(#LNAME) TO(FIRST_NAME)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(SKILCODE)
CHANGE FIELD(#LNAME) TO(SKILL)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(DATEACQR)
CHANGE FIELD(#LNAME) TO(ACQUIRED)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(GRADE)
CHANGE FIELD(#LNAME) TO(*BLANK)
ADD_ENTRY TO_LIST(#MAPLST)
CHANGE FIELD(#SNAME) TO(COMMENT)
CHANGE FIELD(#LNAME) TO(*BLANK)
ADD_ENTRY TO_LIST(#MAPLST)
ENDROUTINE
SUBROUTINE NAME(SKILL)
CHANGE FIELD(#SKILCODE) TO(RPG)
CHANGE FIELD(#DATEACQR) TO(991202)
CHANGE FIELD(#GRADE) TO(A)
CHANGE FIELD(#COMMENT) TO('Good knowledge')
ADD_ENTRY TO_LIST(#SKILL)
CHANGE FIELD(#SKILCODE) TO(CL)
CHANGE FIELD(#DATEACQR) TO(981102)
CHANGE FIELD(#GRADE) TO(B)
CHANGE FIELD(#COMMENT) TO('Improvement required')
ADD_ENTRY TO_LIST(#SKILL)
ENDROUTINE
********** End of RDML commands **********