/*   **+-------------------------------------------------------------+  +
     ** SYSTEM......: Calculate Advanced Function                     +
     ** MODULE......: Command Processing Program                      +
     ** PROGRAM.....: CLCADVFCNC        -CALLED BY: CLCADVFCN (CMD)   +
     ** PROGRAMMER..: W.Allen          -SPECIFIED: W.Allen          +
     ** DATE........: 87/10/24          -MNT.REF..: *NONE             +
     **         +-------------------------------------+               +
     **+---------BASIC DESCRIPTION OF PROGRAM FUNCTION-------------+  +
     **         +-------------------------------------+               +
     ** Sets up enviroment for calculation. Calls RPG program to      +
     ** write data to a file and then does a OPNQRYF on that file     +
     ** with the required function (*SIN *COS etc). Finally calls     +
     ** the RPG program to retrieve the result.                       +
     **                     +-------+                                 +
     **+---------------------<UPDATES>-------------------------------+  +
     ** PROGRAMMER/DATE     MNT.REF NOTE/NOTE REF I.D./CHGD MARKS   +
     **+---------------------+-------+-------------------------------+  +
     **                                                             +
     **                                                             +
     **+---------------------+-------+-------------------------------+  */
PGM (&FNCTN &ARGUM &RESULT)
DCL &FNCTN *CHAR 8
DCL &ARGUM *DEC (15 5)
DCL &RESULT *DEC (15 5)
DCL &EXPSN *CHAR 30
DCL &DUMMY *DEC (15 5)
DCL &CVTARGUM *CHAR 15
/*   ** REPLACE 'YOURLIB' WITH YOUR OWN LIBRARY NAME IN NEXT LINE */
CRTDUPOBJ AFCTNPF YOURLIB *FILE QTEMP *N *NO /* CREATE TEMP FILE*/
MONMSG CPF0000
CHGVAR &CVTARGUM &ARGUM
CHGVAR  %SST(&FNCTN 1 1) '%'
CHGVAR &EXPSN (&FNCTN<'('<&CVTARGUM<')')
OVRDBF AFCTNPF AFCTNPF.QTEMP SHARE(*YES)
CALL CLCADVFCNR ('A' &ARGUM &DUMMY)          /* ADD TO FILE  */
OPNQRYF    FILE((AFCTNPF.QTEMP)) MAPFLD((RESULT +
            &EXPSN)) +
             OPTIMIZE(*FIRSTIO)
CALL CLCADVFCNR ('R' &ARGUM &RESULT)         /* RETRIVE RESULT */
CLOF AFCTNPF
CLRPFM AFCTNPF.QTEMP
ENDPGM
