This exercise uses a simple enquiry WAM. When running in the browser, an employee number is requested via WebRoutine begin. A second WebRoutine details is invoked which displays employee data.
Using X_RUN the details WebRoutine is invoked, passing employee number as a parameter so that the web page containing data for the requested employee can be written to a file.
To execute a WAM, the parameters required by the X_RUN command for Windows are as follows:
Argument | Value |
|---|---|
PROC | *WAMSP is the value to activate the "output to file" function |
WMOD | WAM Name |
WRTN | WebRoutine Name |
WAML | Mark up language, e.g. LANSA:HTML |
PART | Partition |
LANG | Language, e.g ENG |
USER | User. Optional for some platforms |
WASP | Output file path where the output will be saved. Format depends on platform. e.g. for Windows c:\temp\wam_output.html |
The format of the X_RUN command for Windows is:
X_RUN PROC=*WAMSP WMOD=IIIEmpEnqToFile WRTN=DETAILS . . . . etc.
The X_RUN command does not have a parameter to input a field and value. X_RUN does have a user defined parameter UDEF, which is a 256 long character field. To use the UDEF parameter, a simple modification to the WebRoutine is required to retrieve the UDEF value using the Built-in Function GET_SESSION_VALUE. If the value returned by the BIF is non blank, the details WebRoutine can retrieve employee data using the session value as employee number.
Group_By Name(#empgroup) Fields((#SURNAME *OUT) (#GIVENAME *OUT) (#ADDRESS1 *OUT) (#ADDRESS2 *OUT) (#ADDRESS3 *OUT) (#POSTCODE *OUT) (#PHONEHME *OUT) (#PHONEBUS *OUT) (#DEPTMENT *OUT) (#SECTION *OUT) (#SALARY *OUT) (#STARTDTE *OUT) (#TERMDATE *OUT))
Webroutine Name(begin) Desc('Select Employee')
Web_Map For(*output) Fields(#empno)
Endroutine
Webroutine Name(DETAILS) Desc('Employee Details')
Web_Map For(*BOTH) Fields((#EMPNO *OUTPUT))
Web_Map For(*OUTPUT) Fields(#empgroup)
Fetch Fields(#empgroup) From_File(PSLMST) With_Key(#EMPNO) Val_Error(*NEXT)
If_Status Is_Not(*OKAY)
Message Msgtxt('Employee not found')
Endif
Endroutine
Define Field(#retcode) Type(*char) Length(2)
Use Builtin(get_session_value) With_Args(UDEF) To_Get(#STD_QSEL #retcode)
If (#std_qsel *NE *blanks)
#empno := #std_QSEL.trim
Endif