Code Conversion - User - Guide
Code Conversion - User - Guide
Phase 1:................................................................................................................................................ 4
$INSERT $INCLUDE..................................................................................................................... 4
GLOBUS.BP T24.BP..................................................................................................................... 4
OPEN CALL OPF........................................................................................................................... 4
READ CALL F.READ:................................................................................................................... 5
READ/F.READ CALL CACHE.READ:...........................................................................................7
READU CALL F.READU:.............................................................................................................. 7
READV CALL F.READV:.............................................................................................................. 9
MATREAD F.MATREAD:............................................................................................................ 10
MATREADU F.MATREADU:....................................................................................................... 11
CALL DBR CALL F.READ:......................................................................................................... 11
WRITE CALL F.WRITE:.............................................................................................................. 12
MATWRITE CALL F.MATWRITE:............................................................................................... 13
DELETE CALL F.DELETE:......................................................................................................... 13
RELEASE CALL F.RELEASE:.................................................................................................... 14
HUSH ON/OFF................................................................................................................................ 14
DCOUNT......................................................................................................................................... 14
GET.LOC.REF MULTI.GET.LOC.REF:.......................................................................................14
READNEXT LOOP – REMOVE.................................................................................................. 16
EXECUTE/READLIST – PERFORM CALL EB.READLIST:........................................................16
HARDCODED FIELDS SOFTCODED......................................................................................... 16
CALL REM DISPLAY.MESSAGE................................................................................................ 18
EXECUTE CALL.......................................................................................................................... 18
READSEQ:...................................................................................................................................... 18
CNAME COPY............................................................................................................................ 19
FIX DROUND.............................................................................................................................. 19
TIME ():............................................................................................................................................ 20
Phase 2:................................................................................................................................................ 21
OFS.GLOBUS.MANAGER.............................................................................................................. 21
OFS.CALL.BULK.MANAGER:......................................................................................................... 24
JOURNAL.UPDATE:........................................................................................................................ 24
Phase 3:.............................................................................................................................................. 26
OBSOLETE TABLES:...................................................................................................................... 26
1.1 F.DATES:....................................................................................................................... 26
1.2 CONSOL KEY TABLES................................................................................................. 26
1.3 POS.CON.SEC, POS.CON.DP, POS.CON.SCAC are made obsoletes........................31
1.4 DX.PRICE..................................................................................................................... 33
1.5 ACCT.STMT.ENTRY / ACCT.STMT2.ENTRY:.............................................................34
1.6 CATEG.MONTH:.......................................................................................................... 35
1.7 RE.LD.ACC.BAL:.......................................................................................................... 35
1.8 RE.LMM.BALANCES:................................................................................................... 36
1.9 RE.MG.BALANCES:..................................................................................................... 37
1.10 ACCOUNT.DATE:.......................................................................................................... 39
1.11 POSITION.TABLE:......................................................................................................... 39
1.12 ACCT.ACCT.ACTIVITY:................................................................................................ 39
1.13 ACCT.ACTIVITY:........................................................................................................... 40
1.14 COLLATERAL AND COLLATERAL.RIGHT:..................................................................40
1.15 CHEQUES.PRESENTED AND CHEQUES.STOPPED:................................................40
1.16 SC.RATING:................................................................................................................. 41
1.17 DE.PHANTOM.RUN:..................................................................................................... 41
1.18 MD.EOD.LIST:............................................................................................................... 41
1.19 PM.POSN.REAL.TIME AND PM.POSN.VALUE.DATE:................................................41
1.20 DE.MM.O.END.OF.PERIOD & DE.MM.I.END.OF.PERIOD:..........................................42
1.21 POS.MVMT.LWORK.DAY:............................................................................................ 42
1.22 EB.COMPONENT:........................................................................................................ 42
1.23 HEDGE.FRA:................................................................................................................. 42
1.24 LIQ.TRADE:................................................................................................................... 42
1.25 LOCKED.BALANCE.AMT:............................................................................................. 42
1.26 MG.INTEREST.KEY & MG.RATE.FIX.DTE:..................................................................42
1.27 RE.CONSOL.FOREX, RE.CONSOL.LOAN, RE.CONSOL.LOAN.SEQU,
RE.CONSOL.MM, RE.CONSOL.MM.SEQU, RE.CONSOL.PD, RE.CONSOL.PD.SEQU,
RE.CONSOL.SEC:....................................................................................................................... 42
1.28 RE.CONTRACT.BALANCES:........................................................................................ 42
1.29 SA.PERMIUM.INTEREST.WRK & SA.PRM.INTEREST.WRK:.....................................43
1.30 SC.TRADING.POSITION:.............................................................................................. 43
1.31 ACCOUNT MACROS:.................................................................................................... 43
1.32 AZ.ACCOUNT.HIST:............................................................................................................ 45
1.33 RE.CONSOL.ACCT.HELD:.................................................................................................. 45
1.34 EB.SYSTEM.STATUS:......................................................................................................... 45
1.35 DRAW.SCHEDULES:.......................................................................................................... 45
OBSOLETE FIELDS:....................................................................................................................... 45
2.1 AC.CONSOL.KEY:......................................................................................................... 45
2.2 LD27.CONSOL.KEY...................................................................................................... 46
2.3 AC.ACCOUNT.CREDIT.INT -- AC.ACCT.CREDIT.INT:.............................................46
2.4 MAINTAIN.POS.TABLE field in REVAUATION.PARAMETER:.....................................47
2.5 TT.TE.NEW.CUST.BALANCE TT.TE.NEW.CUST.BAL:...........................................47
2.6 FREQU.RELATIONSHIP ACCOUNT.STATEMENT...............................................48
2.7 AC.MKT.ACTUAL.BAL:.................................................................................................. 50
2.8 AC.PREV.OPEN.BAL:................................................................................................... 50
OBSOLETE Routines:..................................................................................................................... 52
RE.EXTRACT.ACCOUNT.NOS is obsolete from R07:................................................................52
RE.EXTRACT.LC.INFO is made obsolete:..................................................................................52
GM.CHK.HOLIDAY is made obsolete:......................................................................................... 52
SC.GET.SECURITY.POSITION.LIST:......................................................................................... 53
FWDRATES.REVAL:................................................................................................................... 53
DRAW.EOD.SCHEDULES:.......................................................................................................... 53
SPECIAL CASES:............................................................................................................................ 53
ACCT.ENT.TODAY...................................................................................................................... 53
CATEG.ENT.TODAY................................................................................................................... 54
CONSOL.ENT.TODAY................................................................................................................. 54
ACCOUNT.ACT........................................................................................................................... 55
AA.CONVERT.NEXT.ACTIVITY.................................................................................................. 55
AUTO NEW CONTENT:............................................................................................................... 55
ACCT.ENT.FWD :........................................................................................................................ 55
DE.MM.O.END.OF.PERIOD & DE.MM.I.END.OF.PERIOD:........................................................55
GET.CREDIT.CHECK:................................................................................................................. 55
AVAIL.FUNDS.UPDATE:............................................................................................................. 56
Annexure:........................................................................................................................................ 57
TAM.GET.LD.ECB.PRINCIPLE (CONTRACT.ID, LD.PR.AMT)...................................................57
TAM.GET.LD.ECB.ACCR.INT (CONTRACT.ID, LD.INT.AMT)....................................................57
TAM.MAT.INT.DATE.CHECK (MG.ID, MAT.DATE, NEXT.INT.DATE)........................................57
Phase 1:
$INSERT $INCLUDE
All $INSERT files present in the local codes have to be changed to $INCLUDE due to performance
constraint on compilation time as well as to make the code simple. As $INSERT will copy other BP’s
INSERT files into the local BP whereas $INLCUDE will read the insert files from their corresponding
BP and compile the code.
E.g.:
Before Change:
$INSERT I_F.CUSTOMER
After Change:
GLOBUS.BP T24.BP
All the local routines must include inserts from T24.BP and not from GLOBUS.BP. For existing
routines referring to GLOBUS.BP, change to T24.BP
E.g.:
Before Change:
After Change:
As part of standardisation, OPEN statements used in lower release local codes for (opening jBASE
tables) will be replaced with T24 core routine OPF.
The following key points have to be followed for all code change on going.
Where,
E.g.:
Before Change:
After Change:
FN.COMPANY = ’F.COMPANY’
F.COMPANY = “”
CALL OPF (FN.COMPANY, F.COMPANY)
READ statements have to be converted to CALL F.READ as part of T24 coding standard
and in order to follow the transaction boundary.
The following key points have to be followed for all code change on going.
The READ statement allows a program to read a record from a previously opened file
into a variable.
Returned:
RECORD.VARIABLE – Data Record
FILE.ERR – Error Message
Case1:
Before change:
CALL F.READ (FILE NAME, ID, Record variable, FILE path, ERR)
IF Record variable THEN
...statement....
END
Case2:
Before change:
After change:
CALL F.READ (FILE NAME, ID, Record variable, FILE path, ERR)
IF ERR THEN
...statements....
END
Case3:
Before change:
After change:
CALL F.READ (FILE NAME, ID, Record variable, FILE path, ERR)
READ/F.READ made to parameter file should be replaced with CACHE.READ core routine.
The following key point has to be followed for all code change on going.
- It reads from the temporary cache memory hence consume less time on doing
READ execution.
CALL F.READ (FILE NAME, ‘SYSTEM’, Record variable, FILE path, ERR)
NOTE:
E.g.:
Before change:
FN.TELLER.PARAMETER = ‘F.TELLER.PARAMETER’
F.TELLER.PARAMETER = ‘’
CALL OPF (FN.TELLER.PARAMETER, F.TELLER.PARAMETER)
After change:
FN.TELLER.PARAMETER = ‘F.TELLER.PARAMETER’
CALL F.READU (FILE NAME, ID, RECORD VARIABLE, FILE PATH, ERR, RETRY)
Case1:
Before change:
After Change:
CALL F.READU (FILE NAME, ID, RECORD VARIABLE, FILE PATH, ERR, RETRY)
IF ERR NE ‘’ THEN
*** statement ***
END
Case2:
Before change:
After Change:
CALL F.READU (FILE NAME, ID, RECORD VARIABLE, FILE PATH, ERR, RETRY)
IF ERR THEN
*** Statement ***
END
Case3:
Before change:
END THEN
*****successful****
END ELSE
****Record does not exist****
END
After Change:
RETRY=’E’
CALL F.READU (FILENAME, ID, RECORDVARIABLE, FILE PATH, ERR, RETRY)
IF RECORDVARIABLE THEN
*****successful****
END ELSE
END
The READV statement allows a program to read a specific field from a record in a previously
opened file into a variable.
The following key points have to be followed for all code change on going.
- For all F.READ, F.READV, F.READU, OPF core routine should be used.
- Only jBASE tables should be converted to core T24 routine F.READV.
Case1:
Before Change:
After change:
CALL F.READV (FILENAME, ID, RECORD VARIABLE, FIELD NO, FILE PATH, ERR)
Case2:
Before Change:
After Change:
CALL F.READV (FILENAME, ID, RECORD VARIABLE, FIELD NO, FILE PATH, ERR)
IF ERR THEN
MATREAD F.MATREAD:
The MATREAD statement allows a record stored in a jBASE file to be read and mapped
directly into a dimensioned array.
Case1:
Before change:
After Change:
Case2:
Before change:
After Change:
MATREADU F.MATREADU:
The MATREADU statement allows a program to read a record from a previously opened file into a
dimensioned array. It respects record locking and locks the specified record for update
DBR is the T24 core routine which does the READ operation on any T24 table and fetches a
single field value. But as per coding standard, its better to avoid DBR and instead F.READ
should be used.
If multiple DBR’s reading same application with same @ID (record) then replace them with
single CALL F.READ.
Syntax for DBR:
CALL F.READ (FILE NAME, REC_ID, RECORD VARAIBLE, FILE PATH, ERR)
FIELD.VALUE = RECORD VARAIBLE<FIELD NAME1>
The following key points have to be followed for all code change ongoing.
- DBR executes OPF for each and every time to fetch the individual fields from the
same record hence to overcome this performance issue we opt F.READ to fetch
the same as it fetch the entire record in one single READ command.
E.g.:
Before Change:
After Change:
CALL F.READ (FILE NAME, ID, RECORD VARAIBLE, FILE PATH, ERR)
VARIABLE1 = RECORD VARAIBLE<FIELD NAME1>
VARIABLE2 = RECORD VARAIBLE<FIELD NAME2>
The WRITE statement allows a program to write a record into a previously opened file.
In order to make the code T24 standard and to incorporate transaction boundary, WRITE
should be changed to CALL F.WRITE.
The following key points have to be followed for all code change on going.
- WRITE directly hit the database while F.WRITE core routine updates in CACHE,
once JOURNAL.UPDATE routine called it will flush into database.
- Hence utmost care should be taken to deploy JOURNAL.UPDATE in the routine
once WRITE has been replaced with F.WRITE.
- JOURNAL.UPDATE shouldn’t be called in VERSION & BATCH routines as core
in turns will call the same.
- Only jBASE tables should be converted to core T24 routine F.WRITE
- UNIX level directories using WRITE should not be replaced with F.WRITE.
In order to make the code T24 standard and to incorporate transaction boundary,
MATWRITE should be changed to F.MATWRITE.
The following key points have to be followed for all code change ongoing.
- MATWRITE directly hit the database while F.MATWRITE core routine updates in
CACHE, once JOURNAL.UPDATE routine called it will flush into database.
- Hence utmost care should be taken to deploy JOURNAL.UPDATE in the routine
once MATWRITE has been replaced with F.MATWRITE.
- JOURNAL.UPDATE shouldn’t be called in VERSION & BATCH routines as core
in turns will call the same.
DELETE FILEPATH, ID
The RELEASE statement enables a program to explicitly release record locks without
updating the records using WRITE.
RELEASE FILENAME, ID
HUSH ON/OFF
HUSH statement is used to suppress the display of all the output sent to a terminal during
processing. It also suppresses output to a COMO file. It acts as a toggle.
HUSH ON suppresses all output including error messages and requests for information.
HUSH {ON/OFF/exp}
Reason to Remove:
HUSH OFF/ON should be analysed and should be removed if they are used in BATCH
or/Mainline routines
DCOUNT
The DCOUNT () function counts the number of field elements in a string that are separated
by a specified delimiter.
GET.LOC.REF MULTI.GET.LOC.REF:
GET.LOC.REF core routine is used to read the position of local reference fields in any
application through STANDARD.SELECTION record.
To enhance the performance of the coding, multiple GET.LOC.REF routine present in the
routine should be replaced with a single call to MULTI.GET.LOC.REF.
Note:
The following key points have to be followed for all code change on going.
Before Change:
OR
CALL EB.GET.LOC.POS (FIELDPOS1, APPLICATION1, FIELD.NAME1)
CALL EB.GET.LOC.POS (FIELDPOS2, APPLICATION2, FIELD.NAME2)
CALL EB.GET.LOC.POS (FIELDPOS3, APPLICATION2, FIELD.NAME3)
After change:
YAPPLICATION.NAME=’’
YFIELD.NAME =’’
YAPPLICATION.NAME = “APPLICATION1”:FM:“APPLICATION2”
YFIELD.NAME =“FIELD NAME1”:FM:“FIELD NAME2”:VM:” FIELD NAME3”
LREF.POS = ‘’
OR
YAPPLICATION.NAME<1>=’’
YAPPLICATION.NAME<2>=’’
YFIELD.NAME<1,1> =’’
YFIELD.NAME<2,1> =’’
YFIELD.NAME<2,2> =’’
LREF.POS = ‘’
READNEXT retrieves the next element in a list variable. But in order to standardise the
codes, READNEXT should be replaced with LOOP – REMOVE fashion.
LOOP
REMOVE ID FROM VARIABLE SETTING POS
WHILE ID: POS
…………
…………
REPEAT
The EXECUTE or PERFORM statement allows the currently executing program to pause
and execute any other UNIX/NT program, including another jBC program or a jBASE
command.
READLIST allows the program to retrieve a previously stored list (Perhaps created with the
SAVE-LIST command) into a jBC variable.
Before Change:
After Change:
Case 1:
Before Change:
After Change:
Note: -
The above hardcoded array variable R.REC<1> has to be soft coded with the
corresponding INSERT field name as above.
Case 2:
Incase if the hardcoded fields are local ref fields then GET.LOC.REF core routine
has to be used.
Before Change:
R.CUSTOMER<40,2> = ‘IEX’
After Change:
FIELD.POS = ‘’
CALL GET.LOC.REF (‘CUSTOMER’,’TAX.STATUS’, FIELD.POS)
R.CUSTOMER<EB.CUS.LOCAL.REF, FIELD.POS> = ‘IEX’
Note: -
The hardcoded field no: 40 has been replaced with the corresponding INSERT file
field name I_F.CUSTOMER and the hard coded local ref field has been replaced with the
soft coded field name ‘TAX.STATUS’ through GET.LOC.REF core routine.
Before Change:
Note:
Hardcoded number ‘2’ should be replaced with the corresponding
STANDARD.SELECTION field no. that has been defined in the INSERT file I_F.ACCOUNT.
Call to REM will not work in BROWSER. So if the code is converted for BROWSER then
REM should be replaced with a call to DISPLAY.MESSAGE
E.g.:
Before Change:
IF ID.NEW NE 'SYSTEM' THEN
TEXT = 'ID MUST BE SYSTEM'
CALL REM
END
After Change:
IF ID.NEW NE 'SYSTEM' THEN
TEXT = 'ID MUST BE SYSTEM'
CALL DISPLAY.MESSAGE (TEXT,'')
END
EXECUTE CALL
In G13 EXECUTE statement allows the currently executing program to pause and execute other
subroutine or program mentioned. Same Functionality doesn’t exist in R10 hence CALL Function has
to be used instead.
E.g.:
Before change:
EXEC ROUTINE.NAME
After change:
PROGR = ROUTINE.NAME
CALL @PROGR
READSEQ:
To avoid the infinite LOOP, a FILEPOINTER has to be set up in the READSEQ statement.
Before change:
LOOP
READSEQ F.LINE FROM F.IN THEN
GOSUB READ.LMM.DATA
END
UNTIL F.LINE = ""
REPEAT
After change:
LOOP
READSEQ F.LINE FROM F.IN SETTING FILEPOINTER THEN
GOSUB READ.LMM.DATA
END
UNTIL FILEPOINTER NE ''
REPEAT
CNAME COPY
CNAME Function used to change the name of a file or to change the names of record in a file and it is
unavailable in R10; hence the local routine using CNAME must be modified to use COPY command.
Before change:
FIX DROUND
FIX Command is used in Universe, DROUND should be used instead of FIX in TAFC.
Before change:
After change:
TIME ():
In G13 TIME Function returns the string value expressing the internal time of the day, which is the
number of seconds that have passed since midnight to the nearest thousandth of the second (local
time).
Note:
This functionality change should be considered when using the function TIME ().
Before change:
TIME.TEST=TIME ()
Output:
25288.8121
After change:
TIME.TEST = TIME ()
Output:
25320
Phase 2:
This phase provides adequate information about the handling of OFS.GLOBUS.MANAGER core
routine in Version/Batch applications and handling of JOURNAL.UPDATE in local routines.
OFS.GLOBUS.MANAGER
Using OFS.GLOBUS.MANAGER from R07 in the Version application leads to Sensitive Routine
Called Fatal out. To make the local code R07/R08 compliance, we have to change the code
correspondingly as mentioned below cases.
Before going into the cases, find below the few core routine syntax:
Syntax:
CALL OFS.GLOBUS.MANAGER (OFS.SOURCE.ID, OFS.MSG)
Incoming Arguments:
OFS.SOURCE.ID = OFS.SOURCE record @id.
OFS.MSG = OFS message String to be processed.
Outgoing Arguments:
OFS.MSG = OFS message with Processed Status (1/ -1)
CALL OFS.POST.MESSAGE (OFS.MSG, QUE.MSG.ID, OFS.SOURCE.ID, OPTIONS)
Incoming Arguments:
OFS.SOURCE.ID = OFS.SOURCE record @id.
OFS.MSG = OFS message String to be processed.
QUE.MSG.ID = OFS.MESSAGE.QUEUE record ID (Optional)
OPTIONS = Optional, Default value will be Null.
Before Change:
T24.ERR = ''
OFS.STR = “ABBREVIATION, //PROCESS, TEST.USER/654321, SEC,
ORIGINAL.TEXT=SECTOR“
CALL OFS.GLOBUS.MANAGER (OFS.SOURCE.ID, OFS.STR)
CHKVAL = FIELD (OFS.STR,'/',3)
IF CHKVAL [1, 1] = 1 ELSE
T24.ERR = 'SET'
END
Replace the OFS.STR value PROCESS to VALIDATE and pass the same in
OFS.GLOBUS.MANAGER. While changing here we have to be careful since some routines might not
have the OFS string formation in the same routine. Here we are using EREPLACE to replace
PROCESS to VALIDATE ,while doing this be sure about the syntax of EREPLACE and note down the
message variable passed in OFS.GLOBUS.MANAGER,
After Change:
OFS.STR.TEMP = OFS.STR
OFS.STR.TEMP = EREPLACE (OFS.STR,'PROCESS','VALIDATE', 1, 1)
CALL OFS.GLOBUS.MANAGER (OFS.SOURCE.ID, OFS.STR.TEMP)
CHKVAL = FIELD (OFS.STR.TEMP,'/', 3)
If the response is success (+1), then call the OFS.POST.MESSAGE as mentioned below;
check the IF condition carefully.
Note:
Before converting OFS.GLOBUS.MANAGER to OFS.POST.MESSAGE Analyse the routine
fully for the usage of Return message from OFS.GLOBUS.MANAGER since they may use the id from
the response for other purposes.
Before Change:
T24.ERR = ''
CALL OFS.GLOBUS.MANAGER (OFS.SOURCE.ID, OFS.STR)
CHKVAL = FIELD (OFS.STR, '/', 3)
IF CHKVAL [1, 1] = 1 ELSE
T24.ERR = 'SET'
END
After Change:
$INSERT I_GTS.COMMON
T24.ERR = ''
OFS$SOURCE.ID = OFS.SOURCE.ID
CALL F.READ (FN.OFS.SOURCE, OFS.SOURCE.ID, R.OFS, F.OFS.SOURCE, OF.ERR)
OFS$SOURCE.REC = R.OFS ;* imp
CALL OFS.PROCESS.MANAGER (OFS.STR, OFS.STR.OUT)
OFS.STR = OFS.STR.OUT ;* imp
CHKVAL = FIELD (OFS.STR,'/',3)
IF CHKVAL [1,1] = 1 ELSE
T24.ERR = 'SET'
END
Special Case:
*A call to EB.TRANS is done to ensure that the transaction boundary thus far active within the tSA is
closed. This is done by checking the SYSTEM common variable to ensure that the transaction
boundary is closed only if there is an active transaction boundary in effect. This process is done to
ensure that the transaction boundaries do not clash with the OFS update that will be attempted
subsequently.
IF SYSTEM (47) THEN
CALL EB.TRANS ('END', R.MSG)
END
* Invoke OFS Process Manager by passing the following arguments
* Argument 1 --> OFS Message that is to used to update the application
* Argument 2 --> OFS Message that is returned as a response
* Open a new transaction boundary after the OFS update has been completed this will ensure
that the subsequent updates are properly catered for and will also ensure that the transaction
boundary close attempted by the tSA does not fail.
IF NOT (SYSTEM (47)) THEN
CALL EB.TRANS ('START', R.MSG)
END
OFS.CALL.BULK.MANAGER:
Upto R08, the syntax of OFS.CALL.BULK.MANAGER will have only three arguments. But in
higher release it will throw SUB_ROUTINE_PARAM error, because from R09 onwards the syntax of
OFS.CALL.BULK.MANAGER is modified with 4 arguments.
Syntax:
CALL OFS.CALL.BULK.MANAGER (options, theRequest, theResponse)
To make the code compliance to higher release the syntax should be altered as like given
below.
Syntax:
CALL OFS.CALL.BULK.MANAGER (options, theRequest, theResponse, txnCommitted)
Arguments
Options -
<1> sourceId the OFS SOURCE record to use
<2> error options
<3> append or Insert, default is append only used for OBM
theRequest - the OFS message request to process
theResponse (return parameter) - Responses from messages
txnCommitted (return parameter) - set to true if the transaction is committed
JOURNAL.UPDATE:
In Phase 1 Activities, we have changed all the jBASE WRITE comment into CALL F.WRITE. Since
WRITE will directly update the data into Database. We don’t need to call JOURNAL.UPDATE earlier
but core routine F.WRITE will write the data into a Temporary cache, which mean that to hit the
database we need to CALL JOURNAL.UPDATE.
Syntax:
CALL JOURNAL.UPDATE (‘’)
Steps To Do:
Analyze the Code and change as mentioned below.
1. Remove the JOURNAL.UPDATE if they used in any COB routines. i.e., If PGM.FILE type is
‘B’ then do the above said because core in turns call the JOURNAL.UPDATE routine.
2. If it’s a Mainline Program i.e., If PGM.FILE type is M, then CALL JOURNAL.UPDATE should
be included in the routine.
3. In Version either Input/Auth routine, if CALL JOURNAL.UPDATE has been used then
remove the same from the routine.
4. For Enquiry routines if any CALL F.WRITE attempt made, then include CALL
JOURNAL.UPDATE in the routine.
5. For EB.PHANTOM related routines, CALL JOURNAL.UPDATE should be used in case of any
update done to cache.
6. For OFS.SOURCE related routines CALL JOURNAL.UPDATE shouldn’t be used.
7. Calls to Multiple JOURNAL.UPDATEs should be avoided inside the same routine deeming
performance issue. For Example if CALL JOURNAL.UPDATE is given inside the loop or
inside each sub function then remove it and place it in the end of the routine.
NOTE:
If any CALL F.WRITE is made before CALL OFS.GLOBUS.MANAGER then we need to
include CALL JOURNAL.UPDATE before CALL OFS.GLOBUS.MANAGER, else it will FATAL
OUT, since the cache should be empty before calling OFS.GLOBUS.MANAGER.
Phase 3:
OBSOLETE TABLES:
1.1 F.DATES:
In local routines, CALL OPF for DATES application has to avoid as we have F.DATES common
variable defined in I_COMMON. Similarly CALL F.READ should be avoided as R.DATES
dimensioned common variable already defined in I_COMMON file.
Consider the below example.
Note:
While changing the code analyse and then change the code because they could have done
READ for ID.COMPANY-COB record, we shouldn’t unnecessarily change the program logic blindly.
Before Change:
FN.DATES = ‘F.DATES’
F.DATES = ‘’
CALL OPF (FN.DATES, F.DATES)
CALL F.READ (FN.DATES, ID.COMPANY, R.DAT.COMP, F.DATES, DAT.ERR)
YTODAY = R.DAT.COMP<EB.DAT.TODAY>
YLAST.DAY = R.DAT.COMP<EB.DAT.LAST.WORKING.DAY>
After Change:
YTODAY = TODAY ;* TODAY Common Variable
YLAST.DAY = R.DATES (EB.DAT.LAST.WORKING.DAY) ;* R.DATES common dim var
Note:
The following INSERT files should be MANDATORY in the local routine to incorporate the
above changes.
$INCLUDE GLOBUS.BP I_COMMON
$INCLUDE GLOBUS.BP I_F.DATES
The reason behind is to have all the product related Consol keys in a central repository file.
The replacement for the above table is RE.CONSOL.CONTRACT.
RE.CONSOL.LOAN:
The “RE.CONSOL.LOAN” is the file in G14 release which maintains the Consol Key entry for
Loans. Likewise separate files are maintained for MM, FOREX, and AC, etc.
From R07 these CONCAT tables are made OBSOLETE so instead we will be using the central
repository file “RE.CONSOL.CONTRACT”. Find below the sample screenshot of the same.
CASE 1:
Change the READ for RE.CONSOL.ACCCOUNT, RE.CONSOL.LOAN, etc to
RE.CONSOL.CONTRACT. But the id should be same.
Also perform OPF for RE.CONSOL.CONTRACT and remove CALL OPF for
RE.CONSOL.ACCOUNT, RE.CONSOL.LOAN.
Don’t change the Record variable(e.g.: R.RE.CONSOL.ACCOUNT)
Before Change:
FN.RE.CONSOL.ACCOUNT = ‘F.RE.CONSOL.ACCOUNT’
F.RE.CONSOL.ACCOUNT = ‘’
CALL OPF (FN.RE.CONSOL.ACCOUNT, F.RE.CONSOL.ACCOUNT)
After Change:
FN.RE.CONSOL.CONTRACT = ‘F.RE.CONSOL.CONTRACT’
F.RE.CONSOL.CONTRACT = ‘’
CALL OPF (FN.RE.CONSOL.CONTRACT, F.RE.CONSOL.CONTRACT)
Example 1:
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.ACCOUNT”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE AC...”
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.LOAN”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE LD...”
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.SEC”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE SC...”
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.MM”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE MM...”
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.PD”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE PD...”
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.FOREX”
After Change
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE FX...”
Example 2:
Before Change
SEL.CMD=”SELECT F.RE.CONSOL.ACCOUNT WITH @ID LIKE 6001”
SEL.CMD=”SELECT F.RE.CONSOL.ACCOUNT WITH @ID LIKE USD”
After Change:
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE AC...6001...”
SEL.CMD=”SELECT F.RE.CONSOL.CONTRACT WITH @ID LIKE AC...USD...”
If you see other then the files specified below doesn’t change it instead you have to
report/escalate the issue with seniors.
RE.CONSOL.ACCCOUNT
RE.CONSOL.LOAN
RE.CONSOL.LOAN.SEQU
RE.CONSOL.MM
RE.CONSOL.MM.SEQU
RE.CONSOL.PD
RE.CONSOL.PD.SEQU
RE.CONSOL.SEC
RE.CONSOL.FOREX
The Local routines making use of these back end files POS.CON.DP and POS.CON.SEC are made
obsolete from R07 release and POS.CON.SCAC is made obsolete from R08 release. Hence to make
the local routines R08 compliance we have to use DAS concept.
Go through the below syntax and the uses of DAS concept.
SYNTAX:
CALL DAS (APP.NAME, RETURNLIST, THE.ARGS, TABLE.SUFFIX)
The core routine DAS has to be used in all places earlier where POS.CON.DP, POS.CON.SEC and
POS.CON.SCAC are used. DAS routine has 4 incoming arguments and 1 outgoing argument, they
are
INCOMING ARGUMENT:
APP.NAME:
This argument uses the respective application name to retrieve the list.
Ex:
APP.NAME = 'SECURITY.POSITION'
RETURNLIST
This argument has to be passed with Query name that has been defined in the corresponding
Common File GLOBUS.BP> I_DAS.SECURITY.POSITION.NOTES and
I_DAS.SECURITY.POSITION
If POS.CON.SEC list needed use the below query else if you need POS.CON.DP LIST use
latter one.
Sample query name is mentioned below, these will be changed based on the routine logic.
RETURNLIST = dasSecurityPositionCustomerSecurity,
DasSecurityPositionCustomerDepository.
THE.ARGS
This argument has to input in array format delimited by FM.
For example:
THE.ARGS = ID.COMPANY
THE.ARGS<2> = ‘Input either Depository no or Security master no’
TABLE.SUFFIX:
Indicate which file has to use either NAU or HIS type. If null specified, then live file will be
selected.
TABLE.SUFFIX = $HIS or $NAU or null value.
OUTGOING ARGUMENT:
RETURNLIST: The extracted output list will present this argument.
Change all the below routines as mentioned above DAS concept.
I) POS.CON.SEC:
Replace the before change code with the code block specified in the after Change
section.
Before Change:
Remove the following line of code:
CALL F.READ (FN.POS.CON.SEC, SM.ID, R.POS.CON.SEC, F.POS.CON.SEC, RE.ERR)
After Change:
Note: Don’t forget to add the below Insert files in the changed routines.
$INCLUDE GLOBUS.BP I_DAS.COMMON
$INCLUDE GLOBUS.BP I_DAS.SECURITY.POSITION
II) POS.CON.DP:
Replace the before change code with the code block specified in the after Change section.
Before Change:
CALL F.READ ('F.POS.CON.DP', K.DEPO, R.POSDP, F.POSDP, RE.ERR1)
After Change:
R.POSDP = dasSecurityPositionCustomerDepository
THE.ARGS = ID.COMPANY
THE.ARGS<2> = K.DEPO
TABLE.SUFFIX = ''
CALL DAS ('SECURITY.POSITION', R.POSDP, THE.ARGS, TABLE.SUFFIX)
Note: Don’t forget to add the below Insert files in the changed routines.
$INCLUDE GLOBUS.BP I_DAS.COMMON
$INCLUDE GLOBUS.BP I_DAS.SECURITY.POSITION
III) POS.CON.SCAC:
Replace the before change code with the code block specified in the after Change section.
Before Change:
FN.POS.CON.SCAC = ‘F.POS.CON.SCAC’
F.POS.CON.SCAC = ‘’
CALL OPF (FN.POS.CON.SCAC, F.POS.CON.SCAC)
CALL F.READ (FN.POS.CON.SCAC, K.SCAC, R.POS.CON.SCAC, F.POS.CON.SCAC,
RE.ERR2)
After Change:
R.POS.CON.SCAC = dasSecurityPositionSecurityAccount
THE.ARGS = K.SCAC
TABLE.SUFFIX = ''
CALL DAS ('SECURITY.POSITION', R.POS.CON.SCAC, THE.ARGS, TABLE.SUFFIX)
Note: Don’t forget to add the below Insert files in the changed routines.
$INCLUDE GLOBUS.BP I_DAS.COMMON
$INCLUDE GLOBUS.BP I_DAS.SECURITY.POSITION
1.4 DX.PRICE
DX.PRICE application was made obsolete and henceforth all local routines using DX.PRICE
have to be replaced with DX.MARKET.PRICE application and the corresponding fields have to be
mapped as per the new setup.
CASE 1:
If CALL F.READ used for ACCT.STMT.ENTRY/ ACCT.STMT2.ENTRY, then follow
the below,
1. Read ACCOUNT.STATEMENT application for the corresponding account record.
2. Retrieve either any one of the field STMT.FQU.1 or STMT.FQU.2 based on the table
used. i.e., if ACCT.STMT.ENTRY has been read, then STMT.FQU.1 has to be retrieved
else if ACCT.STMT2.ENTRY has been used then STMT.FQU.2 has to be retrieved.
3. Concatenate the retrieved Frequency value with the ACCOUNT @id as mentioned below.
STMT.PRINTED.ID = ACCOUNT.ID:’-‘:STMT.FQU.1
Or
STMT.PRINTED.ID = ACCOUNT.ID:’-‘:STMT.FQU.2
4. Read STMT.PRINTED using the above @ID, and extract the current month stmt.entries
as mentioned below example.
Before Change:
READ R.ACCT.STMT.ENTRY FROM F.ACCT.STMT.ENTRY, ACCOUNT THEN
STMT.ENTRIES = R.ACCT.STMT.ENTRY
END
After Change:
READ R.ACC.STMT FROM F.ACCOUNT.STATEMENT, ACCOUNT THEN
STMT.FREQ = R.ACC.STMT<AC.STA.STMT.FQU.1>
END
STMT.PRINTED.ID = ACCOUNT:’-‘:STMT.FREQ[1,8]
READ R.STMT.PRI FROM F.STMT.PRINTED, STMT.PRINTED.ID THEN
STMT.ENTRIES = R.STMT.PRI
END
Note: Incase if CALL F.READ is used for the above ex, then change the logic accordingly. Also
corresponding Insert files if any and CALL OPF have to be incorporated.
1.6 CATEG.MONTH:
Before Change:
CALL F.READ (FN.CATEG.MONTH,’ 53012.200303’, R.CATEG.MONTH,
F.CATEG.MONTH, CE.ERR)
After Change:
START.DATE = 20030301
END.DATE = 20070330
CATEGORY = 53012
R.CATEG.MONTH = ''
CALL GET.CATEG.MONTH.ENTRIES (START.DATE, END.DATE, CATEGORY,
R.CATEG.MONTH)
1.7 RE.LD.ACC.BAL:
The table RE.LD.ACC.BAL was made obsolete from R07 instead a single point for all
Contract balances created as EB.CONTRACT.BALANCES.
However in the below cases, we have depicted only for few important fields and
there corresponding R08 compliance fields in LMM.ACCOUNT.BALANCES.
Before Change:
YR.AMT.BAL = R.RE.LD.ACC.BAL<RE.LAB.OUTS.CURR.PRINC>
Y.CURR = R.RE.LD.ACC.BAL < RE.LAB.CURRENCY>
The above core fields have to be replaced to make the local routine compatible with R08.
After Change:
FN.LMM.ACCOUNT.BALANCES = ‘F.LMM.ACCOUNT.BALANCES
F.LMM.ACCOUNT.BALANCES = ‘’
CALL OPF (FN.LMM.ACCOUNT.BALANCES, F.LMM.ACCOUNT.BALANCES)
1.8 RE.LMM.BALANCES:
The table RE.LMM.BALANCES was made obsolete from R07 release instead a
single point for all Contract balances created as EB.CONTRACT.BALANCES.
However In the below cases, we have depicted only for few important fields and
there corresponding R08 compliance fields in LMM.ACCOUNT.BALANCES.
Before Change:
FN.RE.LMM.BALANCES = 'F.RE.LMM.BALANCES'
F.RE.LMM.BALANCES = ''
CALL OPF (FN.RE.LMM.BALANCES, F.RE.LMM.BALANCES)
The above core fields have to be replaced to make the local routine compatible with R08.
After Change:
FN.LMM.ACCOUNT.BALANCES = ‘F.LMM.ACCOUNT.BALANCES
F.LMM.ACCOUNT.BALANCES = ‘’
CALL OPF (FN.LMM.ACCOUNT.BALANCES, F.LMM.ACCOUNT.BALANCES)
IDESC = ‘CUSTOMER’
CALL IDESC (FN.LMM.ACCOUNT.BALANCES, Y.CNTR.ID, R.LMM.BAL, IDESC, RESULT)
CUST = RESULT
1.9 RE.MG.BALANCES:
The table RE.MG.BALANCES was made obsolete from R07 release instead a single
point for all Contract balances created as EB.CONTRACT.BALANCES.
In the below cases, we have depicted only for few important fields and there
corresponding R08 compliance fields in EB.CONTRACT.BALANCES.
Before Change:
$INCLUDE GLOBUS.BP I_F.RE.MG.BALANCES
FN.RE.MG.BALANCES = 'F.RE.MG.BALANCES'
F.RE.MG.BALANCES = ''
CALL OPF (FN.RE.MG.BALANCES, F.RE.MG.BALANCES)
CALL F.READ (FN.RE.MG.BALANCES, Y.CNTR.ID, R.RE.MG.BALANCES,
F.RE.MG.BALANCES, MGERR)
YR.AMT.BAL = R.RE.MG.BALANCES<MG.RBL.CURRENT.PRINCIPAL>
YR.INT.BAL = R.RE.MG.BALANCES<MG.RBL.ACCRUED.INTEREST>
YR.MAT.DATE = R.RE.MG.BALANCES<MG.RBL.MATURITY.DATE>
YR.NXT.INT.DTE = R.RE.MG.BALANCES<MG.RBL.NEXT.INT.DATE>
The above core fields have to be replaced to make the local routine compatible with R08.
In the below example, we have given the corresponding TAM routines to be called to extract
the individual fields value.
After Change:
$INCLUDE GLOBUS.BP I_F.EB.CONTRACT.BALANCES
FN.EB.CONTRACT.BALANCES = 'F.EB.CONTRACT.BALANCES'
F.EB.CONTRACT.BALANCES = ''
CALL OPF(FN.EB.CONTRACT.BALANCES, F.EB.CONTRACT.BALANCES)
If we need to get the field values(RE.MG.BALANCES) apart from the ones given above, the below
information would be useful.
If in case the routine uses fields other than Principal Amount and Accrual interest
from RE.MG.BALANCES use the below table to get the corresponding field values in
higher releases.
DATE.LAST.UPDATED --> DATE.LAST.UPDATE from EB.CONTRACT.BALANCES
CURRENCY --> CURRENCY from EB.CONTRACT.BALANCES
FORWARD.PRINCIPAL --> OPEN.BALANCE + DEBIT.MVMT + CREDIT.MVMT under the
asset type FORWARDDB of EB.CONTRACT.BALANCES
CURRENT.PRINCIPAL --> OPEN.BALANCE + DEBIT.MVMT + CREDIT.MVMT under the
asset type LIVEDB of EB.CONTRACT.BALANCES (OR) Latest PRIN.BALANCES from
MG.BALANCES provided the PRIN.EFF.DATE is less than TODAY.
ACCRUED.INTEREST --> OPEN.BALANCE + DEBIT.MVMT + CREDIT.MVMT under the
asset type 51000 of EB.CONTRACT.BALANCES (or) OTS.INTEREST from MG.BALANCES
multiplied by (-1)
SUSP.INT --> OPEN.BALANCE + DEBIT.MVMT + CREDIT.MVMT under the asset type
51000SP of EB.CONTRACT.BALANCES (OR) OTS.SUSP.INT from MG.BALANCES
VALUE.DATE --> CONTRACT.VALUE.DATE of EB.CONTRACT.BALANCES
MATURITY.DATE --> MAT.DATE under the asset type LIVEDB (OR) MATURITY.DATE from
MG.MORTGAGE
NEXT.INT.DATE --> REPAYMENT.DATE (Frequency need to be truncated) from
MG.MORTGAGE or END.INT.PRIOD from MG.BALANCES
INTEREST.RATE --> INTEREST.RATE from EB.CONTRACT.BALANCES
INTEREST.KEY --> INTEREST.KEY from EB.CONTRACT.BALANCES
INTEREST.DAY.BASIS --> INTEREST.BASIS from EB.CONTRACT.BALANCES
CUSTOMER.NO --> CUSTOMER from EB.CONTRACT.BALANCES
1.10 ACCOUNT.DATE:
ACCOUNT.DATE has been made obsolete in R08. Hence any local routines using
DEBIT.DATES & CREDIT.DATES fields have to be replaced with ACCOUNT application
fields DEBIT.INT and CREDIT.INT respectively and the ACCOUNT.DATE table field
DEBIT.LIMIT should be replaced with EB.CONTRACT.BALANCES field DEBIT.MVMT.
1.11 POSITION.TABLE:
This table POSITION is made obsolete in R07 and POSITION need to be referred for
information.
1.12 ACCT.ACCT.ACTIVITY:
The file ACCT.ACCT.ACTIVITY has been made obsolete and the functionality got
changed to the new file EB.CONTRACT.BALANCES.
1.13 ACCT.ACTIVITY:
From R10 the file ACCT.ACTIVITY has been made obsolete and the functionality got
changed to the new file ACCT.BALANCE.ACTIVITY which holds the equivalent
ACCT.ACTIVITY records relating to arrangement accounts. The Local codes using
ACCT.ACTIVITY should be changed like below.
Before Change:
CALL F.READ (FN.ACCT.ACTIVITY,ACCT.ACT.ID,
R.ACCT.ACTIVITY,F.ACCT.ACTIVITY,ACC.ERR)
IF R.ACCT.ACTIVITY THEN
...
END
After Change:
CALL F.READ (FN.ACCT.BALANCE.ACTIVITY,ACCT.ACT.ID,
R.ACCT.BALANCE.ACTIVITY,F.ACCT.BALANCE.ACTIVITY,ACC.ERR)
IF R.ACCT.ACTIVITY THEN
...
END
1.14 COLLATERAL AND COLLATERAL.RIGHT:
In earlier releases FT and Teller update 2 cheque related concat files named
1. FXXX.CHEQUES.PRESENTED
2. FXXX.CHEQUES.STOPPED
These two concat files have been made obsolete and a new table
CHEQUE.REGISTER.SUPPLEMENT has been introduced.
1.16 SC.RATING:
Table SC.RATING is made obsolete from release R06 and the replacement table is
EB.RATING.
Hence all the Local Routine referring to the table SC.RATING should be changed to refer to the
table EB.RATING.
1.17 DE.PHANTOM.RUN:
Before Change:
MSG="DE.PHANTOM.RUN ROUTINE.NAME”
EXECUTE MSG
After Change:
MSG="DE.PHANTOM.CALL ROUTINE.NAME“
EXECUTE MSG
1.18 MD.EOD.LIST:
MD.EOD.LIST was holding duplicate data when compared to the tables MD.SCHEDULES &
MD.SCHED.DATES thereby in order to improve system performance MD.EOD.LIST had been made
obsolete and you can make use of either MD.SCHEDULES & MD.SCHED.DATES for your
requirement.
1.21 POS.MVMT.LWORK.DAY:
The table POS.MVMT.LWORK.DAY has been made obsolete and the functionality got
changed to the new table POS.MVMT.HIST.
1.22 EB.COMPONENT:
The table POS.MVMT.LWORK.DAY has been made obsolete from R09 and the functionality
got changed to the new table SEAT.COMPONENT.
1.23 HEDGE.FRA:
The table HEDGE.FRA has been made obsolete from R05.
1.24 LIQ.TRADE:
The table LIQ.TRADE has been made obsolete from R08.
1.25 LOCKED.BALANCE.AMT:
The table LOCKED.BALANCE.AMT has been made obsolete from G11 and the functionality
got changed to the new table AC.LOCKED.EVENTS.
1.28 RE.CONTRACT.BALANCES:
The table RE.CONTRACT.BALANCES has been made obsolete from R07 and the
functionality got changed to EB.CONTRACT.BALANCES.
1.30 SC.TRADING.POSITION:
The table SC.TRADING.POSITION has been made obsolete from R07 and the functionality
got changed to EB.CONTRACT.BALANCES.
Before change :
CALL F.READ(FN.ACCOUNT,ACC.ID,R.RECORD,F.ACCOUNT,F.ERR)
C.BAL = R.RECORD<AC.WORKING.BALANCE>
After change
$INCLUDE T24.BP I_F.EB.CONTRACT.BALANCES
*C.BAL = R.RECORD<AC.WORKING.BALANCE>
CALL EB.READ.HVT("EB.CONTRACT.BALANCES",ACC.ID,R.ECB,ECB.ERR)
C.BAL = R.ECB<ECB. WORKING.BALANCE >
ACCOUNT>OPEN.AVAILABLE.BAL EB.CONTRACT.BALANCES>OPEN.AVAILAB
LE.BAL
ACCOUNT>AVAILABLE.DATE EB.CONTRACT.BALANCES>AVAILABLE.DA
TE
ACCOUNT>AV.AUTH.DB.MVMT EB.CONTRACT.BALANCES>AV.AUTH.DB.M
VMT
ACCOUNT>AV.NAU.DB.MVMT EB.CONTRACT.BALANCES>AV.NAU.DB.MV
MT
ACCOUNT>AV.AUTH.CR.MVMT EB.CONTRACT.BALANCES>AV.AUTH.CR.M
VMT
ACCOUNT>AV.NAU.CR.MVMT EB.CONTRACT.BALANCES>AV.NAU.CR.MV
MT
ACCOUNT>FORWARD.MVMTS EB.CONTRACT.BALANCES>FORWARD.MV
MTS
ACCOUNT>NEXT.AF.DATE EB.CONTRACT.BALANCES>NEXT.AF.DATE
ACCOUNT>FIRST.AF.DATE EB.CONTRACT.BALANCES>FIRST.AF.DATE
ACCOUNT>OPEN.ACTUAL.BAL EB.CONTRACT.BALANCES>OPEN.ACTUAL.
BAL
ACCOUNT>WORKING.BALANCE EB.CONTRACT.BALANCES>WORKING.BAL
ANCE
ACCOUNT>ONLINE.ACTUAL.BAL EB.CONTRACT.BALANCES>ONLINE.ACTUA
L.BAL
ACCOUNT>ONLINE.CLEARED.BAL EB.CONTRACT.BALANCES>ONLINE.CLEAR
ED.BAL
ACCOUNT>OPEN.CLEARED.BAL EB.CONTRACT.BALANCES>OPEN.CLEARE
D.BAL
ACCOUNT>NEXT.EXP.DATE EB.CONTRACT.BALANCES>NEXT.EXP.DAT
E
ACCOUNT>INITIATOR.TYPE EB.CONTRACT.BALANCES>INITIATOR.TYP
E
ACCOUNT>AMNT.LAST EB.CONTRACT.BALANCES>AMNT.LAST
ACCOUNT>TRAN.LAST EB.CONTRACT.BALANCES>TRAN.LAST
ACCOUNT>DATE.LAST EB.CONTRACT.BALANCES>DATE.LAST
ACCOUNT>EXPOSURE.DATES EB.CONTRACT.BALANCES>EXPOSURE.DA
TES
1.32 AZ.ACCOUNT.HIST:
AZ.ACCOUNT.HIST file is made obsolete from R09 and the respective information is maintained in
AZ.ACCOUNT$HIS file.
1.33 RE.CONSOL.ACCT.HELD:
RE.CONSOL.ACCT.HELD is made obsolete from R10 and EB.CONTRACT.BALANCES application
needs to referred to get the open asset type information.
1.34 EB.SYSTEM.STATUS:
EB.SYSTEM.STATUS file is made obsolete from R13 and the information about system status during
fatal errors is now recorded directly in the TAFC log file.
1.35 DRAW.SCHEDULES:
Scheduled delivery messages from DRAWINGS application will update LC.SCHEDULES instead of
DRAW.SCHEDULES.
OBSOLETE FIELDS:
2.1 AC.CONSOL.KEY:
AC.CONSOL.KEY is a field in the Account application. This field was made obsolete, hence
any local sources using this field have to be changed to read EB.CONTRACT.BALANCES and then
to fetch CONSOL.KEY present in the same.
For Example:
Before Change:
CON.KEY = R.ACC<AC.CONSOL.KEY>
After Change:
FN.CONTRACT =”F.EB.CONTRACT.BALANCES”
F.CONTRACT = ‘’
CALL OPF (FN.CONTRACT, F.CONTRACT)
2.2 LD27.CONSOL.KEY
LD27.CONSOL.KEY is a field in the LMM.ACCOUNT.BALANCES application. This field was
made obsolete. Hence any local sources using this field have to be changed to read
EB.CONTRACT.BALANCES and then to fetch CONSOL.KEY present in the same.
For Example:
Before Change:
CON.KEY = R.LMM.ACCOUNT.BALANCES<LD27.CONSOL.KEY>
After Change:
FN.CONTRACT =”F.EB.CONTRACT.BALANCES”
F.CONTRACT = ‘’
CALL OPF (FN.CONTRACT, F.CONTRACT)
Note: Don’t forget to insert the I_F.EB.CONTRACT.BALANCES file in the insert section.
Before Change:
Y.ACI.ID = Y.ID:'-':R.ACC<AC.ACCT.CREDIT.INT>
After Change:
TEMP.ACI = R.ACC<AC.ACCT.CREDIT.INT>
CNT.ACI = DCOUNT(TEMP.ACI,VM)
Y.ACI.ID = Y.ID:'-':R.ACC<AC.ACCT.CREDIT.INT,CNT.ACI>
Before Upgrade:
After Upgrade:
Case 1:
1) Two conditions are checked in the ‘IF’ statement.
2) The 2nd condition for the value ‘FREQ.RELATION’ needs to be removed from the code.
Before change:
FREQ.RELATION = ''
CALL DBR
("ACCOUNT.STATEMENT":FM:AC.STA.FREQU.RELATIONSHIP,ACCOUNT,FREQ.RELATION)
IF FREQUENCY = 2 AND FREQ.RELATION # 'COMBINED' THEN
CALL OPF ("F.ACCT.STMT2.PRINT$ARC",F.ACCT.STMT.PRINT$ARC)
END ELSE
CALL OPF ("F.ACCT.STMT.PRINT$ARC",F.ACCT.STMT.PRINT$ARC)
END
After change:
FREQ.RELATION = ''
CALL DBR
("ACCOUNT.STATEMENT":FM:AC.STA.FREQU.RELATIONSHIP,ACCOUNT,FREQ.RELATION)
IF FREQUENCY = 2 THEN
CALL OPF ("F.ACCT.STMT2.PRINT$ARC",F.ACCT.STMT.PRINT$ARC)
END ELSE
CALL OPF ("F.ACCT.STMT.PRINT$ARC",F.ACCT.STMT.PRINT$ARC)
END
Case 2:
1) In this type of nested ‘IF’ statements, the 3rd ‘IF’ statement checks the condition whether
‘FREQU.RELATIONSHIP’ is not equal to ‘COMBINED’.
2) This 3rd ‘IF’ statement along with its ‘ELSE’ part needs to be removed from the code.
Before change:
IF YACCT.STMT.DATES<YPOS> = '' THEN
IF YSTORE.BAL.DATE = '' THEN
IF YR.ACCOUNT.STATEMENT<AC.STA.FREQU.RELATIONSHIP> <> 'COMBINED' THEN
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.BALANCE>
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE>
END ELSE
IF YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE> GE
YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.DATE> THEN
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE>
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.BALANCE>
END ELSE
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.DATE>
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.BALANCE>
END
END
IF YOPEN.BAL = "" THEN YOPEN.BAL = 0
END
GOSUB READ.EXTRA.IDS:
GOSUB GET.ENTRIES.EQ
END ELSE
END
After change:
IF YACCT.STMT.DATES<YPOS> = '' THEN
IF YSTORE.BAL.DATE = '' THEN
IF YR.ACCOUNT.STATEMENT<AC.STA.FREQU.RELATIONSHIP> <> 'COMBINED' THEN
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.BALANCE>
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE>
END ELSE
IF YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE> GE
YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.DATE> THEN
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.DATE>
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU1.LAST.BALANCE>
END ELSE
YSTORE.BAL.DATE = YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.DATE>
YOPEN.BAL = YR.ACCOUNT.STATEMENT<AC.STA.FQU2.LAST.BALANCE>
END
END
2.7 AC.MKT.ACTUAL.BAL:
AC.MKT.ACTUAL.BAL field in ACCOUNT application has been made OBSOLETE from G13.
The local codes using this field should be changed to fetch the value from field
OPEN.AVAILABLE.BAL.
Before Change:
IF R.ACCOUNT<AC.OPEN.ACTUAL.BAL> <> R.ACCOUNT<AC.MKT.ACTUAL.BAL> THEN
R.ACCOUNT<AC.MKT.ACTUAL.BAL> = R.ACCOUNT<AC.OPEN.ACTUAL.BAL>
END
After Change:
IF R.ACCOUNT<AC.OPEN.ACTUAL.BAL> <> R.ACCOUNT<AC.OPEN.AVAILABLE.BAL> THEN
R.ACCOUNT<AC.OPEN.AVAILABLE.BAL> = R.ACCOUNT<AC.OPEN.ACTUAL.BAL>
END
2.8 AC.PREV.OPEN.BAL:
AC.PREV.OPEN.BAL field in ACCOUNT is made OBSELETE from G13. The CORE routine
EB.GET.ACCT.BALANCE can be used to get the value PREV.OPEN.BAL
Before Change:
CALL F.READ(FN.ACCOUNT,ACC.ID,ACC.REC,F.ACCOUNT,ERR)
Y.PREV.OPEN.BAL = ACC.REC< AC.PREV.OPEN.BAL>
After Change:
CALL F.READ(FN.ACCOUNT,ACC.ID,ACC.REC,F.ACCOUNT,ERR)
BALANCE.DATE = TODAY
CALL CDT("", BALANCE.DATE, "-2W")
CALL EB.GET.ACCT.BALANCE (ACC.ID, ACC.REC, "BOOKING", BALANCE.DATE, "",
PREV.OPEN.BAL.VALUE, "", "", ERR.MSG)
Y.PREV.OPEN.BAL = PREV.OPEN.BAL.VALUE
Note: EB.READ.HISTORY.REC
Reads the Latest History Record
"Arg.1 - Used to store the FileVariable of the History file
Arg.2 - Used to store the id for which the History file to be read"
outgoing arg
"Arg2 - Returns the latest history ID Arg.3- Contains the Latest History Record for the id
Arg.4 - Conatins the error Messages if any
"
"FN.ACCOUNT$HIS='F.ACCOUNT$HIS'
F.ACCOUNT$HIS=''
Y.ID=40495
CALL OPF(FN.ACCOUNT$HIS,F.ACCOUNT$HIS)
CALL EB.READ.HISTORY.REC (F.ACCOUNT$HIS,Y.ID,R.ACCOUNT$HIS,Y.ERR)
O/P:Y.ID = 40495;7 R.ACCOUNT Contains the Latest History Record for the Account
Number 40495;7
OBSOLETE Routines:
RE.EXTRACT.ACCOUNT.NOS is obsolete from R07:
Subroutine RE.EXTRACT.ACCOUNT.NOS is obsolete from R07. It is used to extract the
contract ids from RE.CONSOL.ACCOUNT and SEQU file .As now all the details are maintained
under the roof RE.CONSOL.CONTRACT we need to remove the CALL
RE.EXTRACT.ACCOUNT.NOS and do F.READ for RE.CONSOL.CONTRACT file.
A = ''
B = ''
C = ''
DEFFUN GM.CHK.HOLIDAY (A,B,C)
IF GM.CHK.HOLIDAY (Y.COUNTRY,Y.ZONE,Y.DEP.VAL.DATE) = 'Y' THEN
Y.CURR.NO = DCOUNT (R.NEW(AC.OVERDUE.STATUS),VM) + 1
TEXT = 'Value Date is Holiday ' : Y.DEP.VAL.DATE
CALL STORE.OVERRIDE (Y.CURR.NO)
IF (TEXT = "NO") THEN RETURN
END
Routine Syntax:
CALL AWD(ARG.1,ARG.2,ARG.3)
Incoming parameter
Arg. 1 - Contains the region code
Arg. 2 - Contains start date in YYYYMMDD
After Conversion
CALL AWD(Y.ZONE,Y.DEP.VAL.DATE,HOLI.CHK)
IF HOLI.CHK EQ "H" THEN
Y.CURR.NO = DCOUNT(R.NEW(AC.OVERDUE.STATUS),VM) + 1
TEXT = 'Value Date is Holiday ' : Y.DEP.VAL.DATE
CALL STORE.OVERRIDE(Y.CURR.NO)
IF (TEXT = "NO") THEN RETURN
END
SC.GET.SECURITY.POSITION.LIST:
Call(s) to SC.GET.SECURITY.POSITION.LIST has been replaced by DAS() calls in core
routines.
FWDRATES.REVAL:
The Routine FWDRATES.REVAL is Obsolete in R10. If you want to get the Premium Rate
form the FORWARD.RATES table, then you can use the routine FWDRATES. For exchange rate
calculation, you can refer the routine EXCHRATE.
DRAW.EOD.SCHEDULES:
Job DRAW.EOD.SCHEDULES has been removed from LC.END.OF.DAY batch. All scheduled
delivery messages will be processed as part of LC.EOD.PROCESS.SCHEDULES batch job.
SPECIAL CASES:
ACCT.ENT.TODAY
ACCT.ENT.TODAY table though not made as obsolete, its process flow has been changed.
In COB, ACCT.ENT.TODAY will be get cleared in SYSTEM.END.OF.DAY3 (Batch Stage
S012). So BATCH routines attached after this job have to be changed and routed to
ACCT.ENT.LWORK.DAY as mentioned below:
Before Change:
FN.ACCT.ENT.TODAY=’F.ACCT.ENT.TODAY’
FV.ACCT.ENT.TODAY=’’
CALL OPF (FN.ACCT.ENT.TODAY, FV.ACCT.ENT.TODAY)
After Change:
FN.ACCT.ENT.TODAY=’F.ACCT.ENT.LWORK.DAY’
FV.ACCT.ENT.TODAY=’’
CALL OPF (FN.ACCT.ENT.TODAY, FV.ACCT.ENT.TODAY)
CATEG.ENT.TODAY
CATEG.ENT.TODAY table though not made as obsolete, its process flow has been changed.
In COB, CATEG.ENT.TODAY will be get cleared in SYSTEM.END.OF.DAY5 (Batch Stage S025). So
BATCH routines attached after this job have to be changed and routed to CATEG.ENT.LWORK.DAY
as mentioned below:
Before Change:
FN.CATEG.ENT.TODAY=’F.CATEG.ENT.TODAY’
FV.CATEG.ENT.TODAY=’’
CALL OPF (FN.CATEG.ENT.TODAY, FV.CATEG.ENT.TODAY)
After Change:
FN.CATEG.ENT.TODAY=’F.CATEG.ENT.LWORK.DAY’
FV.CATEG.ENT.TODAY=’’
CALL OPF (FN.CATEG.ENT.TODAY, FV.CATEG.ENT.TODAY)
CONSOL.ENT.TODAY
CONSOL.ENT.TODAY table though not made as obsolete, its process flow has been
changed.
In COB, CONSOL.ENT.TODAY will be get cleared in SYSTEM.END.OF.DAY5 (Batch Stage
S025). So BATCH routines attached after this job have to be changed and routed to
CONSOL.ENT.LWORK.DAY as mentioned below:
Before Change:
FN.CONSOL.ENT.TODAY=’F.CONSOL.ENT.TODAY’
FV.CONSOL.ENT.TODAY=’’
CALL OPF (FN.CONSOL.ENT.TODAY, FV.CONSOL.ENT.TODAY)
After Change:
FN.CONSOL.ENT.TODAY=’F.CONSOL.ENT.LWORK.DAY’
FV.CONSOL.ENT.TODAY=’’
CALL OPF (FN.CONSOL.ENT.TODAY, FV.CONSOL.ENT.TODAY)
ACCOUNT.ACT
ACCOUNT.ACT records will be updated only when relevant fields set in consolidation
parameters. It won’t get updated whenever the account or arrangement is updated.
AA.CONVERT.NEXT.ACTIVITY
A new service AA.CONVERT.NEXT.ACTIVITY has been introduced. This service will delete
the COB activity ids (activities got updated before upgrade) from the AA.NEXT.ACTIVITY and will
copy to the corresponding product line list file.
ACCT.ENT.FWD :
Before R07, all the future value dated entries and forward entries (F entry) are stored in
ACCT.ENT.FWD, on the value date they will be moved to ACCT.ENT.TODAY. But now from R07 all
the future value dated will be there in ACCT.ENT.TODAY itself.
DE.MM.O.END.OF.PERIOD & DE.MM.I.END.OF.PERIOD:
To make faster archival process and multi-threaded two services DE.EOP.OUTWARD,
DE.EOP.INWARD services are introduced which has to be used for outward and inward end of period
processing respectively.
The DATA field in the batch record of the services DE.EOP.OUTWARD and
DE.EOP.INWARD can be used to give the purge date before which you wanted to remove the
records. The corresponding F.DE.O.HEADER.ARCH / F.DE.I.HEADER.ARCH and
F.DE.O.MSG/F.DE.I.MSG are deleted.
GET.CREDIT.CHECK:
The parameters in the core routine had been changed and extra parameters are added as
follows.
Before Conversion:
CALL GET.CREDIT.CHECK(CR.CHECK, MAT R.ACCOUNT, R.AGC)
After Conversion:
LOCKED.WITH.LIMIT = ''
AVAIL.BAL.UPD = ''
LOCK.INC.MVMT = ''
CALL GET.CREDIT.CHECK(CR.CHECK, LOCKED.WITH.LIMIT, MAT R.ACCOUNT, R.AGC,
AVAIL.BAL.UPD, LOCK.INC.MVMT)
AVAIL.FUNDS.UPDATE:
The parameters in the core routine had been changed and extra parameters are added as
follows.
Before Conversion:
CALL AVAIL.FUNDS.UPDATE(ACC.ID, MAT
R.ACCOUNT,AMOUNT,AF.DATE,'',FORWARD,REV.IND,REC.STATUS,TRANS.TYPE,TRANS.COD
E, OVERRIDE)
After Conversion:
AC.AVAIL.BAL.DET = ''
CALL AVAIL.FUNDS.UPDATE(ACC.ID, MAT
R.ACCOUNT,AMOUNT,AF.DATE,'',FORWARD,REV.IND,REC.STATUS,TRANS.TYPE,TRANS.COD
E, OVERRIDE,AC.AVAIL.BAL.DET)
With respect to RE.MG.BALANCES changes in our LCC, the information provided in the guide is only
for getting Principal amount and Interest amount using the TAM
rtns TAM.GET.LD.ECB.PRINCIPLE, TAM.GET.LD.ECB.ACCR.INT and TAM.MAT.INT.DATE.CHEC
K
Annexure: