Example of a Generic Exit Point Program
The following is an example of an RPG ILE application program that incorporates a Exit Point Manager Generic Exit Point program.
H Copyright ('Copyright (c)2015 The Powertech Group. +
H All Rights Reserved.')
This example is provided 'as is' with no warranties either expressed or implied.
H* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
H* */
H* Copyright (c)2015 The Powertech Group. */
H* All Rights Reserved. */
H* THE POWERTECH GROUP CONFIDENTIAL INFORMATION. */
H* (For the full text execute command LCOPYRIGHT). */ H* */
H* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
H*
H* Program : Use_Gexit
H* Description: Example of calling of the default exit program.
H*
H* Purpose : This module is an example of the use of the default
H* exit program. It is an update engine for the file
H* TestFile. It checks to see if the user is allowed to
H* update or add records to the file and checks the
H* key to be update/added against memorized transactions.
H*
H*---------------------------------------------------------------------
H*
H* Compile Instructions: H*
H* This module is first compiled as a module. It is then bound with
H* the following modules to create program Use_Gexit. H*
H* Module Name Description
H* ----------- -----------------------
H* Use_Gexit Driving module
H*
H* Command CRTPGM is used to create executable program Use_Gexit.
H*
H* Parameter Setting
H* --------- ---------------------------------------------------------
H* MODULE Use_Gexit
H* ENTMOD Use_Gexit
H* ACTGRP *CALLER H*
H*---------------------------------------------------------------------
h
FTestFile uf a e k disk
D*---------------------------------------------------------------------
D*
D*
D* Procedure Definition
D*
D Use_gexit PR EXTPGM('USE_GEXlT')
D lnboundKey 12
D lnboundUpdate 32060
D*
D* Procedure lnterface
D*
D Use_gexit Pl
D lnboundKey 12
D lnboundUpdate 32060
D*
D* Generic Exit Point Prototype
D*
D PLKR107GEP PR ExtPgm('PLKR107GEP')
D ReturnAllow 9b 0
D ServerNameln 10
D SrvFunctionln 10
D UsrProfileln 10
D Locationln 15
D FormatNameln 10
D LengthDataln 9b 0
D OperDataln 32767
D ProfileHandle 12
D*
D ReturnAllow S 9b 0
D ServerNameln S 10
D SrvFunctionln S 10
D UsrProfileln s 10
D Locationln S 15
D FormatNameln S 10
D LengthDataln S 9b 0
D OperDataln S 32767
D ProfileHandle s 12
d* copy the program status data structure d/copy @pgsds
D*---------------------------------------------------------------------
c*
c lnboundKey chain testfile
c if %found
c eval SrvFunctionln = 'UPDATE'
c else
c eval SrvFunctionln = 'ADD '
c endif
C
c eval ServerNameln = 'TESTFlLEUP'
c eval UsrProfileln = @pgusr
c eval OperDataln = %trim(lnboundKey)
c eval LengthDataln = %len(%trim(lnboundKey))
c
c call (E) 'PLKR107GEP'
c Parm ReturnAllow
c Parm ServerNameln
c Parm SrvFunctionln
c Parm UsrProfileln
c Parm Locationln
c Parm FormatNameln
c Parm LengthDataln
c Parm OperDataln
c Parm ProfileHandle
c*
c if ReturnAllow = 1
c if SrvFunctionln = 'ADD '
c eval tfkey = lnboundKey
c eval tfdata = lnboundUpdate
c write tstf
c else
c eval tfdata = lnboundUpdate
c update tstf
c endif
c endif
c return