I wanted to compile one of the MQ samples to run as a 64 bit program. The sample comes compiled as 31 bit.
How did I compile the sample to make it 64 bit?
There is documentation on building 64 bit applications; it provides a compile and link JCL example. However, I wanted to do a compile, bind and go.
//COLINCC JOB 1,MSGCLASS=H //JOBLIB JCLLIB ORDER=(PP.CBC.ZOS204.SCCNPRC) //COMPILE EXEC PROC=EDCQCBG, Needed for 64 bit compile // LIBPRFX=CEE, This is an alias // LNGPRFX=PP.CBC.ZOS204, // BPARM='MAP,XREF,RENT,DYNAM=DLL', // CPARM='OPTFILE(DD:SYSOPTF)', // GPARM='M801 CP0000 1' //COMPILE.SYSLIB DD DISP=SHR,DSN=&LIBPRFX..SCEEH.SYS.H // DD DISP=SHR,DSN=&LIBPRFX..SCEEH.H // DD DISP=SHR,DSN=MQM.V900.SCSQC370 //COMPILE.SYSIN DD DISP=SHR,DSN=BETACP.MP1B.JCL(CSQ4BCG1) //COMPILE.SYS DD DISP=SHR,DSN=&LIBPRFX..SCEEH.SYS.H //COMPILE.SYSOPTF DD * WARN 64 RENT LP64 LO SOURCE LIST NOMARGINS EXPMAC SHOWINC XREF LANGLVL(EXTENDED) SSCOM DLL DEFINE(_ALL_SOURCE) /* //BIND.SCSQDEFS DD DISP=SHR,DSN=MQM.V900.SCSQDEFS //BIND.SYSIN DD * INCLUDE SCSQDEFS(CSQBMQ2X) //GO.STEPLIB DD DISP=SHR,DSN=MQM.V900.SCSQANLE // DD DISP=SHR,DSN=MQM.V900.SCSQLOAD // DD DISP=SHR,DSN=MQM.V900.SCSQAUTH
Using ALIASes
The above JCL used
- an alias (CEE) for some libraries. The CEE alias was defined as SYMBOLIC PP.ADLE370.&SYSLEVEL and RESOLVED PP.ADLE370.ZOS204
- explicit High Level Qualifier PP.CBC.ZOS204 for other libraries.
If your system provides aliases for data sets, it is better to use the alias, rather than the explicit data set name (or HLQ). When the system is upgraded (to ZOS205), the symbolic will be updated from ZOS204 to ZOS205, the alias will be updated automatically, and any JCL using the alias will still work. If you used the explicit dataset name, when your system is upgraded the dataset may not be available, and you need to update your JCL.
What does an alias point to?
The easiest way I found to see what an alias points to use ISPF 3.4 to list datasets beginning with the alias, for example CEE.SCEEH, and browse it. This browsed dataset was PP.ADLE370.ZOS204.SCEEH, so the alias CEE represents PP.ADLE370.ZOS204.
You can also use a LISTCAT command. (Use ISPF 3.4 and use the I prefix command) and change the command to LISTCAT ENTRIES(CEE.* ) ALL then type EXEC on the command line to execute it.
This gives output like
LISTCAT ENTRIES(CEE.* ) ALL ... ALIAS --------- CEE.SCEEBIND IN-CAT --- ICFCAT.PLEXH.CATALOG3 HISTORY RELEASE----------------2 CREATION--------0000.000 ENCRYPTIONDATA DATA SET ENCRYPTION-----(NO) ASSOCIATIONS SYMBOLIC-PP.ADLE370.&SYSLEVEL..SCEEBIND RESOLVED-PP.ADLE370.ZOS204.SCEEBIND