In this step, you will create a test function using the template JSMXSKEL to Open and Close the JSM and load the FTPService service.

  1. Using the LANSA development environment, sign on to the partition nominated for the exercises.

  2. Check if fields below are defined in the Repository as these fields are required for this exercise as well as others. If these fields do not exist, you must create them as follows:

      • JSMXCMD STRING(65535) (Must be an RDMLX field)

      • JSMXHDLE1 ALPHA(4)

      • JSMXSTS ALPHA(20)

      • JSMSTS ALPHA(20)

      • JSMXMSG ALPHA(200)

      • JSMMSG ALPHA(200)

  3. Create a new LANSA process named iiiPRO01 JSM Test Process, where iii is your unique 3 characters. (If the process already exists, select a different set of characters for iii.)

  4. Create a new function named iiiFN01 JSM Open/Close, belonging to process iiiPRO01. Make sure that the Enabled for RDMLX checkbox is checked. Specify that the function is to be generated from an application template (from the Template dropdown, select JSMXSKEL).

  5. Answer the template question as shown in the table below.

    Question

    Answer

    Comments

    Do you wish to load a JSM Service?

    FTPSERVICE




  6. Edit your iiiFN01 function and examine the generated RDMLX code.

The function might appear something like the following:

* ====================================================
*  Process ........:  IIIPRO01
*  Function .......:  IIIFN01
*  Created on .....:  16/07/13  at  12:19:30
*  Description ....:  Test 01
*  Template........:  JSMXSKEL
* ====================================================
Function Options(*DIRECT)
*
*  OPEN JSM AND VERIFY STATUS
Use Builtin(JSMX_OPEN) To_Get(#JSMSTS #JSMMSG #jsmxhdle1)
Execute Subroutine(CHECK_STS) With_Parms(#jsmxhdle1)
*
* BUILD THE SERVICE LOAD COMMAND
#JSMXCMD := 'SERVICE_LOAD'
Execute Subroutine(KEYWRD) With_Parms(#JSMXCMD 'SERVICE' 'FTPSERVICE')
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
*
*     YOUR OWN LOGIC HERE
*
* UNLOAD SERVICE
#JSMXCMD := 'SERVICE_UNLOAD'
Use Builtin(JSMX_COMMAND) With_Args(#JSMXHDLE1 #JSMXCMD) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
* CLOSE JSM AND VERIFY STATUS
Use Builtin(JSMX_CLOSE) With_Args(#JSMXHDLE1) To_Get(#JSMSTS #JSMMSG)
Execute Subroutine(CHECK_STS) With_Parms(#JSMXHDLE1)
*
Return
*
* Subroutine to build JSM commands. existing JSM command
*
Subroutine Name(KEYWRD) Parms((#W_CMDX *BOTH) (#W_KEYWRD *RECEIVED) (#W_KEYVAL *RECEIVED))
Define Field(#W_CMDX) Reffld(#JSMXCMD)
Define Field(#W_KEYWRD) Reffld(#STD_TEXT)
Define Field(#W_KEYVAL) Reffld(#STD_TEXTL)
#W_CMDX += ' ' + #W_KEYWRD + '(' + #W_KEYVAL + ')'
Endroutine
*
*  Check the status of the JSM command issued
*
Subroutine Name(CHECK_STS) Parms(#W_HDLE)
*
Define Field(#MSGDTA) Type(*CHAR) Length(132)
Define Field(#W_HDLE) Type(*CHAR) Length(4)
*
If Cond('#JSMSTS *NE OK')
*
#MSGDTA := 'Error Status Code: ' + #JSMSTS
Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
#MSGDTA := 'Error Message: ' + #JSMMSG
Message Msgid(DCM9899) Msgf(DC@M01) Msgdta(#MSGDTA)
Endif
*
Endroutine

    Notice the commands used to Open JSM, Load the FTPService Service, Unload the Service, and Close JSM.

  • Notice the use of the KEYWRD subroutine for an easy way to build the JSM command keywords and their values. Details of the KEYWRD subroutine are explained in INT002 - Using the FTP Service.

  • Notice the use of the CHECK_STS subroutine after each JSM command for error handling. This routine simply formats the error message. It does not ABORT the function when an error occurs.

  • The CHECK_STS subroutine requires a parameter that specifies Handle to check status on, since multiple connections to the JSM server could be open at the same time.

  • No labels