LANSA's Permanent File Overrides facility allows you to specify that when a specific file is used, LANSA is to always use a different one. This override facility can be used for files with 10 character file names or files with a "." in their name as shown in the Examples.
The Permanent File Overrides facility is activated by specifying Y in the Allow permanent file overrides option of the System Settings Work with Execution and Security Settings. (This option inserts the string "*PERMFILOVR" into LANSA data area DC@OSVEROP.)
First you need to create a source physical file called PERMFILOVR using this command:.
CRTSRCPF PERMFILOVR
You can create this anywhere. LANSA looks for this file in the *LIBL at run-time. If the file is found, LANSA reads the first member to find file override information. To make this override information partition specific, put this file into the partition data or module libraries.
You can edit file PERMFILOVR using SEU (STRSEU) or edit file (EDTF).
Comments can be used to indicate the layout as shown in this example:
;From File To File To Library
;234567890 1234567890 1234567890
CUSTMAST CUSTMASTER MYLIBRARY
Notice the space left between each name.
You can specify two files on one line:
;From File To File To Library From File To File To Library
;234567890 1234567890 1234567890 1234567890 1234567890 1234567890
ITEMMAST ITEMMASTER DATALIB ORDERH ORDER.HEAD DATALIB
You can have just one file on each line with a comment on the right hand side. Use a semi-colon to indicate the start of the comment, as in this example:
;From File To File To Library Comment
;234567890 1234567890 1234567890 1
ITEMMAST ITEMMASTER DATALIB ; Item master file
CUSTMAST CUSTMASTER MYLIBRARY ; Customer Master
If you do not want the library name to be overridden, leave it blank. You can also use the special values *LIBL and *CURLIB as this example:
;From File To File To Library Comment
;234567890 1234567890 1234567890 1
ITEMMAST ITEMMASTER ; Item master
CUSTMAST CUSTMASTER *CURLIB ; Customer master
ORDERH ORDER.HEAD DATALIB ; Order Header
ORDERD ORDER.DET *LIBL ; Order Detail
You must specify logical views as well. LANSA will not override the logical views unless you tell it to as shown here:
;From File To File To Library Comment
;234567890 1234567890 1234567890 1
ITEMMAST ITEMMASTER *LIBL ; Item master
ITEMMAL1 ITEMMASTL1 *LIBL ; Item master by Item
ITEMMAL2 ITEMMASTL2 *LIBL ; Item master by Class
ITEMMAL3 ITEMMASTL3 *LIBL ; Item master by Catagory
ITEMMAL4 ITEMMASTL4 *LIBL ; Item master by Status
Comments and Warnings
CALL M@PEROVR X'00'
The Hex 0 parameter tells M@PEROVR to do nothing but load and stay active in memory. For LANSA Open and LANSA Client, this call can be put into a program called LCXP9000. You create this program, which LANSA knows is a "User Exit" program, that must be called when LANSA Client and LANSA Open start. If LCXP9000 does not exist, LANSA traps the error on the call and LANSA Open or LANSA Client will continue normally.
Override files with a 10 character name (FILE10NAME)
Override files with a "." in the name (FIL.X)
Override files with a 10 character name (FILE10NAME)
1. Create a special library for dummy files. This library will just be used for file definitions (no data). In this example, the library is called DUMMYLIB.
2. Use CRTDUPOBJ to copy FILE10NAME to DUMMYLIB. Also copy the logicals attached to FILE10NAME into DUMMYLIB (FILE10NAM1 and FILE10NAM2). As you only need the file definitions, you do not need to copy the data.
3. Use DSPDBR to make sure that logicals FILE10NAM1 and FILE10NAM2 in DUMMYLIB are attached to file FILE10NAME in DUMMYLIB. This is important for when the file is loaded into LANSA. (Remember that your file & library names must be in upper case.)
4. Rename FILE10NAME in DUMMYLIB and its logicals so that the files can be loaded into LANSA.
In this example FILE10NAME becomes FILE10NA
FILE10NAM1 becomes FILE10N1
FILE10NAM2 becomes FILE10N2
It is important to rename the files after they have been copied to DUMMYLIB. If the physical file does not have the same name as the one in the original library then the logicals will not attach to it when they are copied. They would remain attached to the original file.
5. The files can now be loaded into LANSA.
6. Create/maintain file PERMFILOVR. The following entries would be inserted:
FILE10NA FILE10NAME *LIBL
FILE10N1 FILE10NAM1 *LIBL
FILE10N2 FILE10NAM2 *LIBL
A specific library could be specified instead of *LIBL.
7. When the files have been made operational, you can use them throughout LANSA. You use the file names that have been defined to LANSA. At run-time, LANSA will handle the overrides to the correct files because file PERMFILOVR is in the run-time library list (*LIBL).
Override files with a "." in the name (FIL.X)
1. Create a special library for dummy files. This library will just be used for file definitions (no data). In this example, the library is called DUMMYLIB.
2. Use CRTDUPOBJ to copy FIL.X to DUMMYLIB. Also copy the logical views attached to FIL.X into DUMMYLIB (FIL.X1 and FIL.X2). As you only need the file definitions, you do not need to copy the data.
3. Use DSPDBR to make sure that logicals FIL.X1 and FIL.X2 in DUMMYLIB are attached to file FIL.X in DUMMYLIB. This is important for when the file is loaded into LANSA.
4. Rename FIL.X in DUMMYLIB and its logicals so that the files can be loaded into LANSA. (Remember that your file & library names must be in upper case.)
In this example FIL.X becomes FILEX
FIL.X1 becomes FILEX1
FIL.X2 becomes FILEX2
It is important to rename the files after they have been copied to DUMMYLIB. If the physical file does not have the same name as the one in the original library then the logicals will not attach to it when they are copied. They would remain attached to the original file.
5. The files can now be loaded into LANSA.
6. Create/maintain file PERMFILOVR. The following entries would be inserted...
FILEX FIL.X *LIBL
FILEX1 FIL.X1 *LIBL
FILEX2 FIL.X2 *LIBL
A specific library could be specified instead of *LIBL.
7. When the files have been made operational, you can use them throughout LANSA. You use the file names that have been defined to LANSA. At run-time, LANSA will handle the overrides to the correct files because you have file PERMFILOVR in the run-time library list (*LIBL).
Important note for the above examples
LANSA uses I/O module programs to access files. The I/O module programs must be in the *LIBL at run-time. There is one I/O module program for each physical file and it has the same object name as the physical file. By default, LANSA will put the I/O module into the same library as the file (DUMMYLIB). This will mean that DUMMYLIB will have to be in the *LIBL at run-time.
Some alternatives: