VERSION ROUTINES
Warning: This document, is protected by copyright law and international treaties. No part of this
document may be reproduced or transmitted in any form or by any means, electronic or mechanical,
for any purpose, without the express written permission of TEMENOS Holdings NV Unauthorized
reproduction or distribution of this presentation or any portion of it, may result in severe civil and
criminal penalties, and will be prosecuted to the maximum extent possible under applicable law.”
Information in this document is subject to change without notice.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Objectives
• To understand the need for version routines
• To understand the various types of version routines
• To understand the various fields in the version
application to which routines can be attached
• To understand the VERSION.CONTROL application
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Version Application
Version is an application in Globus that allows users to
create customized screens.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Version Routines
Version routines allow us to add additional validation
and functionality to Versions.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Types Of Version Routines
Version Routines
Auto Field Routine
Validation Routine
Input Routine
Authorization Routine
Id Routine
Check Record Routine
After Unauth Routine
Before Auth Routine
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Auto Field Routine
• They get executed after the id of the record is input
and the corresponding record is fetched from the file
but before it can be displayed.
• Can be used to perform any special editing to a
record before it is displayed to the user.
• Attached to the field Auto New Content in the Version
Application
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Example 1
Create a local reference field in the Customer application
called TOTAL.ACCOUNTS. This field is to contain the total
number of accounts owned by a customer. When ever a
Customer record is opened, the field TOTAL.ACCOUNTS
needs to display the total number of accounts of that
customer.
Fields that need to be part of the Customer version are
1. All mandatory fields of the Customer application
2. Local reference field TOTAL.ACCOUNTS
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - Step 1
Create a local reference field by name TOTAL.ACCOUNTS
and attach it to the CUSTOMER application.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - Step 2
Create a version for the Customer application with all the
mandatory fields and the local reference field
TOTAL.ACCOUNTS.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - Step 3
Create a subroutine that will display the total number of
accounts of a particular customer in the field
TOTAL.ACCOUNTS. If a new customer record is input then
the calculation should not be performed and a value 0 needs
to be populated in the field TOTAL.ACCOUNTS.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - Algorithm
1. Obtain the id of the customer input by the user
2. Check to see if it is a new customer record
3. If it is a new customer record, then populate a value 0 in
the field TOTAL.ACCOUNTS
4. If the customer id exists in the Customer file, then read
the CUSTOMER.ACCOUNT file.
5. Count the total number of accounts that belong to that
customer and populate in the field TOTAL.ACCOUNTS.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
ID.NEW
Dynamic array that contains the id of the currently
opened record. Defined in I_COMMON file.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
R.NEW
It is a dimensioned array that has been defined in the
file I_COMMON. It holds the copy of the currently
opened record in any application in Globus.
R.NEW(C$SYSDIM) where C$SYSDIM = 500
Note the brackets
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
R.OLD
It is a dimensioned array that has been defined in the
I_COMMON file. It holds a copy of an authorized
record when it is opened for amendment. The definition
for R.OLD in the I_COMMON file is as follows.
R.OLD(C$SYSDIM)
ID.OLD will hold the id of this corresponding record
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
R.NEW.LAST
R.NEW.LAST is a dimensioned array that will hold a copy
of an unauthorized record when it is opened for
amendment. The definition for R.NEW.LAST in the
I_COMMON file is as follows.
R.NEW.LAST(C$SYSDIM)
ID.NEW.LAST will hold the id of this corresponding record
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1
*Version auto new content routine that calculates the total number of
*accounts for a customer and displays it in the field TOTAL.ACCOUNTS
*which is a local reference field
SUBROUTINE V.TRG.AUT.CNT.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
$INSERT I_F.CUSTOMER.ACCOUNT
GOSUB INIT
GOSUB OPENFILES
GOSUB PROCESS
RETURN
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 (Cont.)
INIT:
FN.CUS.ACC = 'F.CUSTOMER.ACCOUNT'
F.CUS.ACC = ''
Y.CUS.ID = ID.NEW
R.CUS.ACC = ''
Y.CUS.ACC.ERR = ''
RETURN
OPENFILES:
CALL OPF(FN.CUS.ACC,F.CUS.ACC)
RETURN
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 (Cont.)
PROCESS:
IF ID.OLD = ‘’ THEN ; * If it is a new customer record
R.NEW(EB.CUS.LOCAL.REF)<1,29> = 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,29> = 0
END
ELSE
R.NEW(EB.CUS.LOCAL.REF)<1,29> = DCOUNT(R.CUS.ACC,FM)
END
END
RETURN
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - Step 4
Compile and catalogue the subroutine and make an entry in
the PGM.FILE with the type set to ‘S’. Attach the routine to
the field Auto New Content (Prefix the routine name with an
@ symbol) in the version and specify the Local Reference
Field (TOTAL.ACCOUNTS) field in the field Autom Field No.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 1 - PGM.FILE Entry
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
ID Routine
This routine, as the name implies is used to
manipulate the id of the record. It gets executed as
soon as the id of the record is entered. Any special
manipulation can be done on the id using this routine.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Example 2
Write a routine that will prefix any enquiry with
‘TEM.TRG’ to the id when created/opened to denote
that it was created/amended as a part of the
Temenos Training program. This should not happen
for ids of enquiries that begin with a ‘%’ or a Enquiry-
LIST. Also ensure that the length of the id does not
exceed 30 characters. And if it does then an error
“Temenos Trg restricts ID length to 30 Characters”
should be displayed to the user
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 2 – Step 1
Create a version for the Enquiry application with all the
mandatory fields.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 2 – Step 2
Create a subroutine that will get executed as soon as
the id of an enquiry is entered and prefixes the id of
the enquiry with ‘TEM.TRG’ provided it not a %
Enquiry or an Enquiry-List.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
APPLICATION
Globus common variable defined in I_COMMON that
holds the current application that has been opened
by the user.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 2
SUBROUTINE V.TRG.CHECK.ID.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.ENQUIRY
IF APPLICATION NE 'ENQUIRY' THEN RETURN
IF COMI THEN ;* ID.NEW would not have been set now
IF COMI[1,1] NE '%' AND FIELD(COMI,'-',2)[1,4] NE 'LIST' THEN
COMI = 'TEM.TRG.':COMI
IF LEN(COMI) GT 30 THEN
E = “Temenos Trg restricts ID length to 30 Characters”
CALL ERR
MESSAGE = 'REPEAT'
V$ERROR = 1
END
END
END
RETURN
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 2 – Step 3
Compile and catalogue the subroutine, make an entry in
the PGM.FILE with the type set to ‘S’ and attach it to
the field ID RTN(prefix the routine name with an ‘@’
when attaching it to the version) in the Version
application.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Check Record Routine
This routine is called after the ID is supplied and
validated. This will get invoked when the following
functions I(Input), D(Delete), A(Authorise) and
R(Reverse) are used. These routines could be used
to alter the field attributes.
It is attached to the field CHECK.REC.RTN
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Example 3
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”
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3 – Step 1
Create the necessary routine.
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.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3 - Algorithm
1. Check if the record being opened is a new Customer record. If
so, no processing should be done and the user should be able
to open the record.
2. Check if the record is an unauthorized record. If so, no
processing should be done and the user should be able to open
the record.
3. Extract the value of the field INPUTTER. There could be
multiple inputters for a single record.
4. Check if the current user is one among the inputters. If not, then
display the error message “Access Restricted”
5. If the current user is not one among the inputters then check if
he is the authroiser. If not, then display the error message
“Access Restricted” else allow the user to continue.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3
SUBROUTINE V.TRG.CHECK.REC.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
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
*unauthorized record
THIS.OPERATOR.OK = 0
INPUTTERS = R.NEW(EB.CUS.INPUTTER)
NO.OF.INPUTTERS = DCOUNT(INPUTTERS,@VM)
IF NO.OF.INPUTTERS = 1 THEN
IF FIELD(INPUTTERS,'_',2) = OPERATOR THEN THIS.OPERATOR.OK = 1
END
ELSE
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3 (Cont.)
LOOP
REMOVE INPUTTER FROM INPUTTERS SETTING MORE.INPUTTERS
WHILE INPUTTER : MORE.INPUTTERS DO
INPUT.OPERATOR = FIELD(INPUTTER,'_',2)
IF INPUT.OPERATOR EQ OPERATOR THEN
THIS.OPERATOR.OK = 1
INPUTTERS = ''
END
REPEAT
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3 (Cont.)
IF NOT(THIS.OPERATOR.OK) THEN ;* He wasnt one of the Inputters
AUTHORISER = R.NEW(EB.CUS.AUTHORISER)
IF FIELD(AUTHORISER,'_',2) NE OPERATOR THEN ; * He was’nt the
* authoriser
E = 'Access Restricted'
CALL ERR
MESSAGE = 'REPEAT'
V$ERROR = 1
END
END
RETURN
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 3 – Step 2
Compile and catalogue the subroutine and make an
entry in the PGM.FILE with the type set to ‘S’ and
attach the subroutine prefixed with an ‘@’ symbol in
the field CHECK.REC in the Customer Version.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
After Unauth Routine
This routine is called while committing a new record or
existing record after making the necessary changes. It is
called after the Version Input Routine. At this stage
the record would have been written into the $NAU file.
Therefore it is imperative to remember that any change
made to R.NEW will not reflect in the record. If any
change needs to be made to the record in the $NAU file
at this stage, then a separate write needs to be
executed. Do not call JOURNAL.UPDATE as this is
taken care by core Globus.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Example 4
There is a requirement where in, when a transaction is
committed using a version of the FT application, the
user should be taken to another version in order to
input the charges (if any).
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Analysis
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 4 – Step 1 - Algorithm
1. Check if the application is FT
2. Check if the version used is the version to which we
are attaching this subroutine
(The above2 checks are not absolutely necessary.
Incase this routine is going to be made common to all
versions of the FT application and if you still want to
execute this routine only for the FT,PARENT version,
then this check is required.)
3. Check if the function used is ‘I’.
4. If the function used is ‘I’, then execute the next
version (FT,CHILD).
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
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
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
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 -> Used to get to the command line
C.F : Ctrl F Enter(F3) -> Used to obtain a new id
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
V$FUNCTION
This is a common variable defined in I_COMMON that
contains the function that is being currently chosen
by the user.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 4
SUBROUTINE V.TRG.AFTER.UNAUTH.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.FUNDS.TRANSFER
IF APPLICATION = "FUNDS.TRANSFER" AND PGM.VERSION =
",PARENT" AND V$FUNCTION = “I”
INPUT.BUFFER = C.U:" ":APPLICATION:",CHILD":" I
":C.F
END
RETURN
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 4 – Step 2
Compile and catalogue the subroutine, make an entry in
the PGM.FILE with the type set to ‘S’ and attach it to
the version in the field AFTER.UNAU.RTN prefixed
with a ‘@’ symbol.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Before Auth Routine
This routine is called during the authorization of an
INAU record. Called Before Version Auth routine is
executed.
BEFORE.AUTH – Before F.WRITE. Changes made to
R.NEW will reflect in the record written
AUTH routine – After F.WRITE
Do not call JOURNAL.UPDATE as it will be taken care
of by Core Globus.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Example 5
There is a requirement, where in, while authorizing a customer
record, the user should be given the option to fill in any special
comments that he wishes to store along with the customer record like
“Special customer “ etc which can be used at a later date for any
special processing or could be printed along with the statements sent
to that particular customer. Therefore, write a routine that will prompt
the user to enter free text while authorizing a customer record. Once
the text is entered by the user, the data needs to be updated in the
field TEXT in the Customer application. If no text is entered by the
user then the message “No text entered. Proceeding with other
processing” should be displayed and the record should get authorized.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 5 – Step 1
Create a subroutine that will prompt the user for the text
and update the TEXT field in the Customer application.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 5 - Algorithm
1. Display a message to the user to input free text for a
customer
2. Once the data is entered, update the Customer file
3. Else display a message “No text entered. Proceeding
with other processing”
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 5
SUBROUTINE V.TRG.BEFORE.AUTH.RTN
$INSERT I_COMMON
$INSERT I_EQUATE
$INSERT I_F.CUSTOMER
Y.COLUMN = 8 ;* Not of any significance in Desktop
Y.ROW = 22 ;* Not of any significance in Desktop
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
procesing"
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 5 (Cont.)
ELSE
R.NEW(EB.CUS.TEXT)<1,-1> = COMI
END
END
RETURN
END
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Note that there is no explicit write done to the
live file
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Solution 5 – Step 2
Compile and catalogue the subroutine, make an entry in
the PGM.FILE with the type set to ‘S’ and attach it to
the field BEFORE.AUTH.RTN in the Customer
version prefixed with an ‘@’ symbol.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
VERSION.CONTROL
Why do we need VERSION.CONTROL?
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Features Of VERSION.CONTROL
a. Can be used to attach subroutines at the application level.
b. Subroutines that need to be invoked for a set of versions can be
specified here.
c. All Versions for which these subroutines need to be invoked
should have a value of ‘YES’ in field EXC.INC.RTN at the
Version level.
d. All Versions for which these subroutines need to be invoked
should have the same Version Type specified at the Version
level. In this case the id of the VERSION.CONTROL record
would be APPLICATIONNAME,VERSIONTYPE
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Features Of VERSION.CONTROL (Cont.)
e. All fields in Version Control have corresponding fields in the
Version record
f. Subroutines attached at the version level have a higher priority
over subroutines attached at the version control level (. i.e.
subroutines at the version level will be executed first)
g. Id of the VERSION.CONTROL application is a valid
APPLICATIONNAME in Globus.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
The VERSION.CONTROL Appln
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Fields In The VERSION Appln
EXC INC RTN
This field can contain any one of the following values
– ‘YES or NO or Blank’. Only if this field is set to YES
then the routines specified in the
VERSION.CONTROL application would get invoked
for this version.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Fields In The VERSION Appln (Cont.)
VERSION.TYPE
The id of the VERSION.CONTROL application is a valid
application name followed by a version type.
Example : CUSTOMER,TRG (Where TRG is the
version type).
This field can contain alpha numeric data of maximum
of 3 characters.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Fields In The VERSION Appln (Cont.)
If we create a record in the VERSION.CONTROL
application with the id as CUSTOMER then for all
versions based on the CUSTOMER application and
have the field VERSION.TYPE set to ‘blank’ and
have the field EXC.INC.RTN set to ‘YES’, the
routines specified in the VERSION.CONTROL record
with the id as CUSTOMER would get invoked.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV
Fields In VERSION.CONTROL (Cont.)
If we create a record in the VERSION.CONTROL
application with the id as ‘CUSTOMER,TRG’, then for
all versions based on the CUSTOMER application
having the field VERSION.TYPE set to ‘TRG’ and
having the field EXC.INC.RTN set to ‘Y’, the routines
specified in the VERSION.CONTROL application with
id ‘CUSTOMER,TRG’ would get executed.
T3ATTP – R04 – 1.0 Copyright © 2005 TEMENOS HOLDINGS NV