RUN FROM %REST JD JOBTYPE JCL LIMSTORE 250 COMP 90
//*
//* THIS JOB CREATES AN OBJECT MODULE LIBRARY FOR THE BCPL COMPILER
//* AND RUN-TIME LIBRARY.  THE LIBRARY CREATED IS CALLED:-
//*     BCPLIB.OBJ
//*
//*  IT HAS MEMBERS:-
//*     BCPL, SYN, TRN, CG, PROGRAM, COMPBLIB
//*    BCPLMAIN, BLIB, PM, IOS
//*
//*  MEMBERS BCPL, SYN, TRN AND CG ARE THE BCPL WRITTEN COMPONENTS
//*  OF THE COMPILER.  THEY RESULT FROM THE COMPILATION OF
//*  MEMBERS OF  BCPLIB.BCPL  USING HEADERS FROM
//*   THE SAME FILE.
//*
//*  MEMBER  PROGRAM  RESULTS FROM THE ASSEMBLY OF
//*  OR  BCPLIB.ASM(PROGRAM).
//*
//*  MEMBER  COMPBLIB  IS A NON-STANDARD VERSION OF A LIBRARY MODULE.
//*  IT RESULTS FROM THE COMPILATION OF  BCPLIB.BCPL(BLIB)
//*  WITH A NON-STANDARD  LIBHDR.  THE EFFECT OF THIS IS TO ASSIGN
//*  ABORT A DIFFERENT GLOBAL NUMBER.  THIS IS DONE BY CONCATENATING
//*  A ONE LINE IN-STREAM DATASET ONTO THE END OF THE STANDARD LIBHDR
//*  IN  SYS3.BCPL.LIBHDR.
//*
//*
//*
//*  MEMBER  BCPLMAIN  CONTAINS THE ENTIRE MACHINE-CODE LIBRARY.
//*  IS RESULTS FROM THE ASSEMBLY OF A TEMPORARY FILE PRODUCED
//*  BY PROCESSING  BCPLIB.ASM(BCPLMAIN)  WITH
//*  THE PROGRAM WHOSE BCPL SOURCE IS IN  BCPLIB.BCPL(EDITMAIN).
//*  THE MACRO LIBRARY  BCPLIB.MACROS IS USED DURING THIS
//*  ASSEMBLY.
//*
//*  MEMBERS  BLIB, PM AND IOS  RESULT FROM COMPILATION OF BCPL
//*  SOURCE IN MEMBERS OF  BCPLIB.BCPL.
//*
//*
//********************************************************************
//* MAKE SURE BCPLIB.OBJ DOES NOT EXIST
//*
//    EXEC DELETE,NAME='BCPLIB.OBJ/QUIET'
//********************************************************************
//* FIRST MAKE NON STANDARD BLIB BY COMPILING USING A  LIBHDR
//* WITH A SINGLE EXTRA DECLARATION CONCATENATED.
//*
//COMPBLIB  EXEC BCPLC,PARMC='/C'
//LIBHDR   DD
//         DD *
GLOBAL $( ABORT : 112 $)
//SYSGO    DD  DISP=(NEW,CATLG),DSN=BCPLIB.OBJ(COMPBLIB),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=2480),
//             UNIT=DISC,SPACE=(TRK,(16,1,2))
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(BLIB)
//*
//BCPL     EXEC BCPLC,PARMC='/C'
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(BCPL)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(BCPL)
//HEADERS  DD   DISP=SHR,DSN=BCPLIB.BCPL
//*
//SYN      EXEC BCPLC,PARMC='/C'
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(SYN)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(SYN)
//HEADERS  DD   DISP=SHR,DSN=BCPLIB.BCPL
//*
//TRN      EXEC BCPLC,PARMC='/C'
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(TRN)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(TRN)
//HEADERS  DD   DISP=SHR,DSN=BCPLIB.BCPL
//*
//CG       EXEC BCPLC,PARMC='/C'
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(CG)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(CG)
//HEADERS  DD   DISP=SHR,DSN=BCPLIB.BCPL
//*
//FILEPROG EXEC FILE
//FROM     DD   DISP=SHR,DSN=BCPLIB.ASM(PROGRAM)
//TO       DD   DISP=(NEW,PASS),DSN=&PROGRAM,UNIT=DISC,
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=2480),SPACE=(TRK,(1,1))
//PROGRAM  EXEC ASMGC
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(PROGRAM)
//SYSIN   DD   DISP=(OLD,DELETE),DSN=&PROGRAM
//*
//BLIB     EXEC BCPLC,PARMC=
//SYSGO    DD  DISP=OLD,DSN=BCPLIB.OBJ(BLIB)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(BLIB)
//*
//IOS      EXEC BCPLC,PARMC=
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(IOS)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(IOS)
//*
//PM       EXEC BCPLC,PARMC=
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(PM)
//SYSIN    DD   DISP=SHR,DSN=BCPLIB.BCPL(PM)
//*
//* NOW PREPROCESS THE ASSEMBLER SOURCE, CONVERTING IT INTO
//* FIXED BLOCK FORMAT
//*
//EDIT     EXEC BCPLCLG,REGG=60K,PARMG=370
//BCPL.SYSIN  DD  DISP=SHR,DSN=BCPLIB.BCPL(EDITMAIN)
//GO.FROM     DD  DISP=SHR,DSN=BCPLIB.ASM(BCPLMAIN)
//GO.TO       DD  DISP=(NEW,PASS),DSN=&BCPLMAIN,UNIT=DISC,
//        DCB=(RECFM=FB,LRECL=80,BLKSIZE=2480),
//        SPACE=(TRK,(30,10))
//*
//* AND NOW ASSEMBLE THE RESULT
//*
//BCPLMAIN EXEC ASMGC,REGC=250K,MINC=1,SECC=0
//SYSLIB   DD
//         DD   DISP=SHR,DSN=BCPLIB.MACROS
//SYSGO    DD   DISP=OLD,DSN=BCPLIB.OBJ(BCPLMAIN),
//         SPACE=(TRK,(4,1,1),RLSE)
//SYSIN    DD   DISP=OLD,DSN=&BCPLMAIN
