//INSTALL JOB (,R4340),LANGSTON,NOTIFY= <====(0) /*JOBPARM FETCH <====(0) //*-------------------------------------------------------------------* //* MODULE/COBOLINT INSTALLATION JOBSTREAM FOR MVS * //*-------------------------------------------------------------------* //* To install on MVS: * //* * //* 1. Create a source PDS (RECFM=FB,LRECL=80,BLKSIZE=6160), * //* using the name xxxxxxxx.MODULE.LASTEXP, where xxxxxxxx is * //* any number of levels of data set name that's required by your * //* site and/or department. In this sample jobstream, the xxxxxxxx * //* is SASRDL. This is so I can test the very jobstream using my * //* userid at SAS Institute. * //* * //* 2. Upload the following files from the diskette into the * //* corresponding members of the PDS (all are uploaded using * //* regular text mode; there are no binary files involved): * //* * //* diskette file name PDS member * //* INSTALL.MVS INSTALL (this file) * //* MODULE.MVS DUMP * //* TLKTLOAD.SAS TLKTLOAD * //* MODULE.DOC DOC (optional) * //* TESTPGMS.DAT TESTPGMS (optional) * //* * //* MODULE.DOC can be uploaded if you want to use for online * //* documentation but is not used as part of the install. * //* * //* TESTPGMS.DAT can be uploaded if you want to use for additional * //* testing but is not used as part of the install. * //* * //* 3. Edit this install member to adjust it for your * //* system requirements. The following changes should be made in * //* the jobstream. They are marked in the jobstream by <====(n) * //* on the right-hand side. Each 'n' is explained below. * //* * //* (0) JOB card changes proper for your site * //* (1) SAS608 cataloged procedure name should be changed to the * //* correct one to invoke Version 6.08 of the SAS System. * //* If 6.08 is not available, you can use 6.07. * //* (2) Change the SASRDL prefix to the proper prefix for your PDS.* //* (3) Change the name of the output load module library where * //* you wish to store UWUMODUL (the MODULE routines) and * //* UWUCOBOL (a version of MODULE that corresponds to the * //* older COBOLINT). A second module, INT31001, will also be * //* copied. This is a test module. * //* * //* 4. Remove the // terminating line to allow the last step to be * //* run. Submit the job and ensure all jobsteps were successful. * //* Note that the test step uses INT31001, an assembler function * //* that does not require the existence of COBOL or C. * //* * //* If there are questions concerning MODULE/COBOLINT, please feel * //* free to call me. * //* * //* Rick Langston, SAS Institute Inc. * //* 919/677-8000 x7613 * //*-------------------------------------------------------------------* //* //*-----Read the dump file and create a sequential file for IEBCOPY---* //* // EXEC SAS608 <====(1) //UNLOAD2 DD DSN=&&UNLOAD2,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(TRK,(50,50)) //DUMPFILE DD DSN=SASRDL.MODULE.LASTEXP(DUMP),DISP=SHR <====(2) //SYSIN DD DSN=SASRDL.MODULE.LASTEXP(TLKTLOAD),DISP=SHR <====(2) // DD * %TLKTLOAD(INFILE=DUMPFILE,OUTFILE=UNLOAD2); //* //*-----Run IEBCOPY to recreate a load module library-----------------* //* // EXEC PGM=IEBCOPY //IN DD DSN=&&UNLOAD2,DISP=SHR //OUT DD DSN=&&NEWPDS,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(TRK,(50,50,10)) //SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,50) //SYSUT2 DD UNIT=SYSDA,SPACE=(TRK,50) //SYSPRINT DD SYSOUT=A //SYSIN DD * COPY INDD=IN,OUTDD=OUT //* //*-----Run a simple test of MODULE/COBOLINT to ensure it's working---* //* // EXEC SAS608 <====(1) //SASLIB DD DSN=&&NEWPDS,DISP=SHR //SYSIN DD * *-----try first with no attribute table-----*; DATA _NULL_; X='00000001'X; CALL MODULE('INT31001',X); Y=INPUT(X,IB4.); PUT Y= ' (SHOULD BE 2)'; RUN; DATA _NULL_; X='00000001'X; CALL COBOLINT('INT31001',X); Y=INPUT(X,IB4.); PUT Y= ' (SHOULD BE 2)'; RUN; *-----create an attribute table-----*; FILENAME SASCBTBL '&&TEMP'; DATA _NULL_; FILE SASCBTBL; INPUT; PUT _INFILE_; CARDS4; ROUTINE INT31001 MINARG=1 MAXARG=1; ARG 1 FORMAT=IB4.; ;;;; *-----try again with an attribute table-----*; DATA _NULL_; X=1; CALL MODULE('INT31001',X); PUT X= ' (SHOULD BE 2)'; RUN; DATA _NULL_; X=1; CALL COBOLINT('INT31001',X); PUT X= ' (SHOULD BE 2)'; RUN; //* (REMOVE THE NEXT LINE TO ACTUALLY RUN THE NEXT STEP) // // EXEC PGM=IEBCOPY //IN DD DSN=&&NEWPDS,DISP=SHR //OUT DD DSN=your.load.library,DISP=SHR <====(3) //SYSUT1 DD UNIT=SYSDA,SPACE=(TRK,50) //SYSUT2 DD UNIT=SYSDA,SPACE=(TRK,50) //SYSPRINT DD SYSOUT=A //SYSIN DD * COPY INDD=IN,OUTDD=OUT