Building Metal C programs using JCL

When you build Metal C programs using JCL, you cannot use standard JCL procedures that combine the compilation step with the link step (or link and run steps) because compiling Metal C programs produces HLASM source files that must be assembled by HLASM before they can be linked.

After successful completion of the assembly step, you can use an appropriate binder invocation JCL procedure to produce an program.
Note: Binder invocation JCL procedures are available in the CEE.SCEEPROC data set.

Compilation of HLQ.SOURCE.C(MYCODE)

Figure 1. Job step that compiles HLQ.SOURCE.C(MYCODE)
   //PROC JCLLIB ORDER=(CBC.SCCNPRC) 
   //*-------------------------------------------------------------------- 
   //* Invoke METAL C compiler 
   //*-------------------------------------------------------------------- 
   //METALCMP EXEC  EDCC, 
   //      INFILE='HLQ.SOURCE.C(MYCODE)', 
   //      OUTFILE='HLQ.SOURCE.ASM(MYCODE),DISP=SHR', 
   //        CPARM='METAL' 

Assembly of HLQ.SOURCE.ASM(MYCODE)

Figure 2. Assembly step of HLQ.SOURCE.ASM(MYCODE)
   //*--------------------------------------------------------------------
   //* ASSEMBLY STEP:
   //*--------------------------------------------------------------------
   //ASM     EXEC HLASMC                     
   //SYSIN    DD  DSN=HLQ.SOURCE.ASM(MYCODE),DISP=SHR
   //SYSLIN   DD  DSN=HLQ.OBJ(MYCODE),DISP=OLD

Bind of HLQ.OBJ(MYCODE) into a Metal C program

Figure 3. Job step that binds the generated HLASM object into a program
   //*-------------------------------------------------------------------
   //* BIND STEP: 
   //*------------------------------------------------------------------- 
   //BIND   EXEC PGM=IEWL, 
   //            PARM='AMODE=31,MAP,CASE=MIXED' 
   //SYSLMOD  DD  DSNAME=HLQ.LOAD(MYCODE),DISP=SHR  1 
   //SYSPRINT DD  SYSOUT=* 
   //OBJECT   DD  DSN=HLQ.OBJ,DISP=SHR 
   //SYSLIN   DD *
     INCLUDE OBJECT(MYCODE)
     ENTRY MYADD                                    2 
   /* 
Notes:
  1. The program is written to SYSLMOD.
  2. The entry point can be specified using the ENTRY binder control statement.