编译

编译MAP

通过JCL脚本MAPJCL编译Map。

//MAPJCL JOB  MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//STEP1 EXEC DFHMAPS
//*                 
//COPY.SYSUT1      DD DSN=IBMUSER.CICSP(LOGNMAP),DISP=SHR
//LINKMAP.SYSLMOD  DD DSN=IBMUSER.RUNLIB.LOAD(LOGNMAP),DISP=SHR
//ASMDSECT.SYSPUNCH DD DSN=IBMUSER.PROJ(LOGNMAP),DISP=SHR
//CPYLOAD  EXEC PGM=IEBCOPY,PARM='SIZE=1M'
//SYSPRINT DD SYSOUT=*
//IN1      DD DISP=SHR,DSN=IBMUSER.RUNLIB.LOAD
//OUT1     DD DISP=SHR,DSN=CEE.SCEECICS
//SYSIN    DD *
   COPY I=IN1,O=OUT1
     S MEMBER=((LOGNMAP,,R))
//*

上述脚本调用了过程DFHMAPS。需要对ADCD Z110提供的过程进行适当的修改,将其CICS相关路径修改为系统中的路径。如:

//DFHMAPS PROC INDEX='DFH320.CICS', FOR SDFHMAC                         
//             MAPLIB='DFH320.CICS.SDFHLOAD', TARGET FOR MAP            
//             DSCTLIB='DFH320.CICS.SDFHMAC', TARGET FOR DSECT          
//             MAPNAME=,                     NAME OF MAPSET - REQUIRED

修改Symbolic Map

默认情况下,DFHMAPS生成的Symbolic Map是IBM-1047编码的。 在本例中,编译指定了LOCALE("ZH_CN.IBM-1388"),因此需要将其转码,转码的JCL脚本可以参见8.3;或者在代码中加入:

??=pragma filetag("IBM-1047")

下面的代码可以使用系统工具实现member的合并,从而达到用程序增加pragma的功能。

//IDCMS JOB  MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//STEP1 EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//DD1 DD DSN=IBMUSER.PROJ(PAGECODE),DISP=SHR
//    DD DSN=IBMUSER.PROJ(LOGNMAP),DISP=SHR
//DD2 DD DSN=IBMUSER.PROJ(NEWMAP),DISP=SHR
//SYSIN DD *
 REPRO -
 INFILE (DD1) -
 OUTFILE(DD2) 
/*

注意: SYSIN的内容之前需要有空格

可以用下面的CLIST编译MAP

PROC 0
ISREDIT MACRO (PARM)
ISREDIT (DSNAME) = DATASET
ISREDIT (MNAME) = MEMBER
ISREDIT SAVE
WRITE &DSNAME
WRITE &MNAME
SET A=&SUBSTR(8:8,&SYSTIME)
SET SP=&SUBSTR(3:4,AA      )
SET WSPC=500
SET SRCLIB=&SYSUID..SRCLIB.DATA
SET CHEADER=&SYSUID..PROJ
SET LOADLIB=&SYSUID..RUNLIB.LOAD
WRITE &SYSDATE
WRITE &SYSUID
 SUBMIT * END(ゥ)
//MAPCC JOB  MSGCLASS=X,CLASS=A,MSGLEVEL=(1,1),NOTIFY=&SYSUID
//COMPMAP EXEC DFHMAPS
//COPY.SYSUT1      DD DSN=&DSNAME(&MNAME),DISP=SHR
//LINKMAP.SYSLMOD  DD DSN=&LOADLIB(&MNAME),DISP=SHR
//ASMDSECT.SYSPUNCH DD DSN=&CHEADER(&MNAME),DISP=SHR
//CPYSMB EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=A
//SYSIN DD DUMMY
//SYSUT1 DD DSNAME=&CHEADER(&MNAME),DISP=SHR
//SYSUT2 DD DSNAME=&CHEADER(&MNAME.B),DISP=SHR
//CNVRT EXEC PGM=IEFBR14
//ICONV    EXEC PROC=EDCICONV,
//         INFILE='&CHEADER(&MNAME)',
//         OUTFILE='&CHEADER(&MNAME.B)',
//         FROMC='IBM-1047',
//         TOC='IBM-1388'
//MERGE EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//DD1 DD DSN=&CHEADER(PC1388),DISP=SHR
//    DD DSN=&CHEADER(&MNAME.B),DISP=SHR
//DD2 DD DSN=&CHEADER(&MNAME),DISP=SHR
//SYSIN DD *
&SP.  REPRO -
&SP.  INFILE (DD1) -
&SP.  OUTFILE(DD2) 
/*
//CPYLOAD  EXEC PGM=IEBCOPY,PARM='SIZE=1M'
//SYSPRINT DD SYSOUT=*
//IN1      DD DISP=SHR,DSN=&LOADLIB
//OUT1     DD DISP=SHR,DSN=CEE.SCEECICS
//SYSIN    DD *
&SP. COPY I=IN1,O=OUT1
&SP.  S MEMBER=((&MNAME,,R))
//*
ゥ

编译C

使用下面的CLIST对C代码进行编译。

PROC 0
ISREDIT MACRO (PARM)
ISREDIT (DSNAME) = DATASET
ISREDIT (MNAME) = MEMBER
ISREDIT SAVE
WRITE &DSNAME
WRITE &MNAME
SET A=&SUBSTR(8:8,&SYSTIME)
SET SP=&SUBSTR(3:4,AA      )
SET WSPC=500
SET DBRMLIB=&SYSUID..DBRMLIB.DATA
SET SRCLIB=&SYSUID..SRCLIB.DATA
SET CHEADER=&SYSUID..PROJ
SET LOADLIB=&SYSUID..RUNLIB.LOAD
WRITE &SYSDATE
WRITE &SYSUID
 SUBMIT * END(ゥ)
//ZCC JOB CLASS=A,MSGCLASS=A,NOTIFY=&SYSUID,REGION=75M
//*COMPILE AND LINK A NON XPLINK CCICS+DB2 PROGRAM
//PC      EXEC PGM=DSNHPC,PARM='HOST(C),CCSID(1388)'
//DBRMLIB DD DSN=&DBRMLIB(&MNAME),
//         DISP=SHR
//STEPLIB  DD  DISP=SHR,DSN=DSN910.DB9G.SDSNEXIT
//         DD  DISP=SHR,DSN=DSN910.SDSNLOAD
//SYSPRINT DD  SYSOUT=*
//SYSTERM  DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSIN DD DSN=&DSNAME(&MNAME),DISP=SHR
//SYSCIN   DD  DSN=&&DSNHOUT,DISP=(MOD,PASS),UNIT=3390,
//             SPACE=(800,(&WSPC,&WSPC))
//SYSLIB DD DSN=&SRCLIB,DISP=SHR
//SYSUT1   DD  SPACE=(800,(&WSPC,&WSPC),,,ROUND),UNIT=3390
//SYSUT2   DD  SPACE=(800,(&WSPC,&WSPC),,,ROUND),UNIT=3390
//*
//TRCMLK  EXEC DFHYITDL,REGION=75M,
//    PROGLIB=&LOADLIB(&MNAME),
//    CPARM='RENT,SOURCE,LIST,LONGNAME,LOCALE("ZH_CN.IBM-1388")',
//    LNKPARM='LIST,MAP,LET,XREF'
//TRN.SYSIN DD DSN=&&DSNHOUT,DISP=SHR
//C.SYSLIB DD DISP=SHR,DSN=&CHEADER
//LKED.SYSIN  DD *
&SP. NAME &MNAME(R)
/*
//BIND     EXEC PGM=IKJEFT01,DYNAMNBR=100
//STEPLIB  DD DSN=DSN910.DB9G.RUNLIB.LOAD,DISP=SHR
//         DD DSN=DSN910.DB9G.SDSNEXIT,DISP=SHR
//         DD DSN=DSN910.SDSNLOAD,DISP=SHR
//DBRMLIB  DD DISP=SHR,DSN=ADB720.SADBDBRM
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTSIN  DD *
 DSN SYSTEM(DB9G)
BIND PACKAGE(&MNAME) MEMBER(&MNAME) &STR(-)
      ACTION(REPLACE) ISOLATION(CS) ENCODING(1388) &STR(-)
      LIBRARY('&DBRMLIB')
BIND PLAN(&MNAME) PKLIST(&MNAME..*) &STR(-)
     ISOLATION(CS) ENCODING(1388) ACTION(REPLACE)
END
/*
//CPYLOAD  EXEC PGM=IEBCOPY,PARM='SIZE=1M'
//SYSPRINT DD SYSOUT=*
//IN1      DD DISP=SHR,DSN=&LOADLIB
//OUT1     DD DISP=SHR,DSN=CEE.SCEECICS
//SYSIN    DD *
&SP.COPY I=IN1,O=OUT1
&SP.   S MEMBER=((&MNAME,,R))
/*
ゥ

其中的数据集名字要调整为系统中存在的数据集。

results matching ""

    No results matching ""