Version Routine
Version Routine
Version Routines
Validation Routine
Input Routine
Authorization Routine
Auto Field Routine
Id Routine
Check Record Routine
After Unauth Routine
Before Auth Routine
INPUT
INPUT ROUTINE
ROUTINE
INPUT ROUTINE
Write a routine for the Funds Transfer version , that will check the
DEBIT AMOUNT greater than 100. If not, an error message,
“Debit amount must be grater than 100” needs to be
displayed when the user commits the record
SOLUTION STEPS
SUBROUTINE FT.INP.RTN
$INSERT GLOBUS.BP I_COMMON
$INSERT GLOBUS.BP I_EQUATE
$INSERT GLOBUS.BP I_F.FUNDS.TRANSFER
Y.DEBIT.AMOUNT = R.NEW(FT.DEBIT.AMOUNT)
IF Y.DEBIT.AMOUNT LE 100 THEN
AF=FT.DEBIT.AMOUNT
ETEXT = "Debit amount must be grater than 100"
CALL STORE.END.ERROR
END
RETURN
END
ATTACHING THE ROUTINE
• EB.API ENTRY
SUBROUTINE AUT.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
• EB.API
• Authorization of customer
• After authorization
AUTO
AUTO FIELD
FIELD ROUTINE
ROUTINE
AUTO FIELD ROUTINE
SUBROUTINE AUTO.CUSCNT
$INSERT GLOBUS.BP I_COMMON
$INSERT GLOBUS.BP I_EQUATE
$INSERT GLOBUS.BP I_F.CUSTOMER
$INSERT GLOBUS.BP I_F.CUSTOMER.ACCOUNT
GOSUB INIT
GOSUB OPENFILES
GOSUB PROCESS
RETURN
INIT:
FN.CUS.ACC = 'FBNK.CUSTOMER.ACCOUNT'
F.CUS.ACC = ''
Y.CUS.ID = ID.NEW
R.CUS.ACC = ''
Y.CUS.ACC.ERR = '‘
RETURN
ROUTINE (CONT.)
OPENFILES:
CALL OPF (FN.CUS.ACC, F.CUS.ACC)
RETURN
PROCESS:
IF ID.OLD = '' THEN ;*If it is a new Customer Record
R.NEW(EB.CUS.LOCAL.REF)<1,10> = 0 ;*No calculation is required
END
ELSE
CALL F.READ(FN.CUS.ACC,Y.CUS.ID,R.CUS.ACC,F.CUS.ACC,Y.CUS.ACC.ERR)
IF Y.CUS.ACC.ERR NE '' THEN
R.NEW(EB.CUS.LOCAL.REF)<1,43> = 0
END
ELSE
R.NEW(EB.CUS.LOCAL.REF)<1,43> = DCOUNT(R.CUS.ACC,FM)
END
END
RETURN
END
ATTACHING THE ROUTINE
• Write a subroutine that will restrict any user trying to open a Live
Customer Record which was not input and authorized by him and
will display an error message “Access Restricted”
SOLUTION STEPS
Operator
This is a dynamic array that has been defined in the I_COMMON file
that contains the name of the currently signed on user.
ALGORITHM
SUBROUTINE CHECK.REC.RTN
$INSERT GLOBUS.BP I_COMMON
$INSERT GLOBUS.BP I_EQUATE
$INSERT GLOBUS.BP I_F.CUSTOMER
THIS.OPERATOR.OK = ''
IF NOT (R.NEW(EB.CUS.INPUTTER)) THEN RETURN ;*could be a new record
IF R.NEW(EB.CUS.RECORD.STATUS) THEN RETURN ;*Could be an unauthorised
record
INPUTTERS = R.NEW(EB.CUS.INPUTTER)
IF NOT(THIS.OPERATOR.OK) THEN
E = 'Access Restricted'
CALL ERR
!MESSAGE = 'REPEAT'
END
END
ATTACHING THE ROUTINE
• EB.API ENTRY
• Final output
AFTER
AFTER UNAUTH
UNAUTH ROUTINE
ROUTINE
AFTER UNAUTH ROUTINE
• PGM.VERSION
–This is a common variable defined in I_COMMON that contains the
name of the currently opened version.
Example : CUSTOMER,INPUT
APPLICATION : CUSTOMER
PGM.VERSION :,INPUT
• INPUT.BUFFER
–This is a common variable defined in I_COMMON which is capable
of containing any input that a user wishes to execute from the
command line.
Example
INPUT.BUFFER = C.U:”CUSTOMER I” : C.F
C.U : Ctrl U Enter(F1) -> will go to the command line
C.F : Ctrl F Enter(F3) -> Used to obtain a new id
ROUTINE(CONTD.)
• V$FUNCTION
–This is a common variable defined in I_COMMON that contains the
function that is being currently chosen by the user.
SUBROUTINE AFTER.UNAUTH.RTN
$INSERT GLOBUS.BP I_COMMON
$INSERT GLOBUS.BP I_EQUATE
$INSERT GLOBUS.BP I_F.FUNDS.TRANSFER
• EB.API ENTRY
•
BEFORE
BEFORE AUTH
AUTH ROUTINE
ROUTINE
BEFORE AUTH ROUTINE
SUBROUTINE BEFORE.AUTH.RTN
$INSERT GLOBUS.BP I_COMMON
$INSERT GLOBUS.BP I_EQUATE
$INSERT GLOBUS.BP I_F.CUSTOMER
Y.COLUMN = 8
Y.ROW = 22
N1 = 35.1
T1 = A
INP.MSG = 'Enter text for Customer'
CALL INP(INP.MSG,Y.COLUMN,Y.ROW,N1,T1)
IF COMI = '' THEN
CRT 'No text entered. Proceeding with other processing'
END
ELSE
R.NEW(EB.CUS.TEXT)<1,-1> = COMI
END
RETURN
END
ATTACHING THE ROUTINE
• EB.API ENTRY