What steps are required to create new or modify an existing CA Spool translation table?
CA Spool 12.0
This procedure applies to CA Spool 12.0. CA Spool 14.0 implemented the new TRANADD and TRANUPD ESFPARM parameters. From documentation:
"New TRANADD and TRANUPD Parameters
These parameters replace the need to apply a USERMOD against ESFTRAN to add to or modify the translate tables delivered by CA Spool."
For CA Spool 12.0, proceed to complete the following steps:
1.- The original source code of the installation provided CA Spool translation tables is located in the ESFTRAN member of the following SMP/E target library CBQ4SRC(ESFTRAN). Find the source member you have changed in the past and copy it to another location to be modified.
2.- Inside this member locate an EQU assembler instruction that uses the value TRANSFST. This label is the beginning of a list of translation tables already provided.
3.- Duplicate a line in this list to insert your customized translation table name. For instance, if you are creating a new EBCDIC to ASCII table you can then use the existing ASCIITAB as a template. The first field is the name of the table reference label and the second field is the name used on the DEFNODE or NODE statements in the TRANS= parameter. Both can be the same name or different names. It's advisable that you specify the same name in both fields for consistency.
TRANSFST EQU *
DC CL8'ASCII',A(ASCIITAB) EBCDIC TO ASCII
DC CL8'ASCIINEW',A(ASCIINEW) User EBCDIC TO ASCII <--NEW LINE
Find the ASCIITAB label and duplicate the entire set of lines of the table as shown below, changing the label to ASCIINEW or any name you choose for your new translation table as follows:
***********************************************************
* EBCDIC TO ASCII TRANSLATION TABLE TRANS=ASCII *
***********************************************************
* 0 1 2 3 4 5 6 7 8 9 A B C D E F
ASCIITAB DC X'000102039C09867F978D8E0B0C0D0E0F' 0
DC X'101112139D0A08871819928F1C1D1E1F' 1
DC X'8081828384851C1B88898A8B8C050607' 2
DC X'909116939495960498999A9B14159E1A' 3
DC X'20A0E2E4E0E1E3E5E7F1A22E3C282B7C' 4
DC X'26E9EAEBE8EDEEEFECDF21242A293B5E' 5
DC X'2D2FC2C4C0C1C3C5C7D1A62C255F3E3F' 6
DC X'F8C9CACBC8CDCECFCC603A2340273D22' 7
DC X'D8616263646566676869ABBBF0FDFEB1' 8
DC X'B06A6B6C6D6E6F707172AABAE6B8C6A4' 9
DC X'B57E737475767778797AA1BFD05BDEAE' A
DC X'ACA3A5B7A9A7B6BCBDBEDDA8AF5DB4D7' B
DC X'7B414243444546474849ADF4F6F2F3F5' C
DC X'7D4A4B4C4D4E4F505152B9FBFCF9FAFF' D
DC X'5CF7535455565758595AB2D4D6D2D3D5' E
DC X'30313233343536373839B3DBDCD9DA9F' F
EJECT
*********************************************************** <--NEW LINE
* EBCDIC TO ASCII USER MODIFIED TRANS TABLE TRANS=ASCIINEW* <--NEW LINE
*********************************************************** <--NEW LINE
* 0 1 2 3 4 5 6 7 8 9 A B C D E F <--NEW LINE
ASCIINEW DC X'200102039C09867F978D8E0B0C0D0E0F' 0 <--NEW LINE
DC X'101112139D0A08871819928F1C1D1E1F' 1 <--NEW LINE
DC X'8081828384851C1B88898A8B8C050607' 2 <--NEW LINE
DC X'909116939495960498999A9B14159E1A' 3 <--NEW LINE
DC X'20A0E2E4E0E1E3E5E7F1A22E3C282B7C' 4 <--NEW LINE
DC X'26E9EAEBE8EDEEEFECDF21242A293B5E' 5 <--NEW LINE
DC X'2D2FC2C4C0C1C3C5C7D1A62C255F3E3F' 6 <--NEW LINE
DC X'F8C9CACBC8CDCECFCC603A2340273D22' 7 <--NEW LINE
DC X'D8616263646566676869ABBBF0FDFEB1' 8 <--NEW LINE
DC X'B06A6B6C6D6E6F707172AABAE6B8C6A4' 9 <--NEW LINE
DC X'B57E737475767778797AA1BFD05BDEAE' A <--NEW LINE
DC X'ACA3A5B7A9A7B6BCBDBEDDA8AF5DB4D7' B <--NEW LINE
DC X'7B414243444546474849ADF4F6F2F3F5' C <--NEW LINE
DC X'7D4A4B4C4D4E4F505152B9FBFCF9FAFF' D <--NEW LINE
DC X'5CF7535455565758595AB2D4D6D2D3D5' E <--NEW LINE
DC X'30313233343536373839B3DBDCD9DA9F' F <--NEW LINE
EJECT <--NEW LINE
4.- Once you create your new table, modify it as needed. To do that you need to read it from right to left. So if you need to change the x'00' to be sent as x'20', find the numeric value of 0 on the right side of the table, then read to the left until you find 0 at the top of the translation table. See above table changes noted in bold on how to modify it for the scenario we are describing in this example.
Since the source library where the ESFTRAN member is located in SMP/E controlled libraries, do not modify it directly from its current location. The reason is because future maintenance for this member can overwrite your source changes. Instead, we recommend keep a separate copy in a user defined source library. Next an SMP/E USERMOD must be created to implement any modifications or additions.
5.- After the SMP/E USERMOD is installed and load library changes are made available to your CA Spool task, a WARM restart is required before you attempt to use any new or modified translation table. Once the restart is complete, you can setup your DEFNODE or NODE definitions to use the new or modified translation table. In the ESFPARM initialization parameter file use the TRANS= parameter of the NODE or DEFNODE statements to specify the name of your newly created translation table.
Additional Information:
This is a NODE statement example that shows how you can refer to your translation table:
NODE TSTPRT,TCPIP,GROUP=1,TRANS=ASCIINEW <-- CHANGE
Note: You will get errors if you try to use any new translation table before the load library has been updated from the applied SMP/E USERMOD or before the CA Spool task has been restarted to pick up the changes.
Possible errors are:
ESF005 PARAMETER STATEMENT IS INVALID
It will be issued after TRANS=newname is updated on DEFNODE or NODE parameters and a REINIT command was issued or a WARM restart was done without making sure the load library has been properly updated and refreshed.
ESF895 INVALID OPERAND(S)
It will be issued if you try to modify the printer using any of our menu interfaces with an undefined translation table name.