BAL, COBOL, MVS38J, PL/I, Subroutine

GETDTE in MVS38J

Overview

GETDTE – Get Date-Time-Environment Utility for MVS 3.8J TSO / ISPF / Hercules
(current version 1.0.02  2024-07-01)

When writing software, whether a quick report or utility, it may be necessary to display a current date and/or time component on a screen or report. This basic information is so common, why not isolate into a common module? GETDTE, a subroutine utility, does exactly that – for common information such as calendar date, current day name, and current time! This program has evolved over time since 2013 as one of my common utilities.

The problem program calls GETDTE with a parameter address list containing the address of a results area (80-byte local data area) and several time-date-environment data components are returned for use by the calling program as depicted below:


GETDTE Results Area

*     0        1         2         3         4         5     
*     12345678901234567890123456789012345678901234567890     
*     +---+----+----+----+----+----+----+----+----+----+     
*     MM/DD/CCYY.JJJ HH:MM:SS:THLLLLLLLLLNWWWWWWWWW
*     12/31/2001.365 10:11:12:45December 1Monday   
*     |----+---| |+| |----+----||----+--|||---+---|
*          |      |       |          |   |    |
*          |      |       |          |   |    |
*          |      |       |          |   |    |
*          |      |       |          |   |    |
*          |      |       |          |   |    |
*          |      |       |          |   |    +---  Day of Week Name   ( 9 bytes)
*          |      |       |          |   +--------  Day of Week Number ( 1 bytes)
*          |      |       |          +------------  Month Name         ( 9 bytes)
*          |      |       +-----------------------  Current Time       (11 bytes)
*          |      +-------------------------------  Julian Date        ( 3 bytes)
*          +--------------------------------------  Calendar Date      (10 bytes)
*
*     4   5         6         7         8 
*     67890123456789012345678901234567890
*     +---+----+----+----+----+----+----+
*     LARRY01 IKJACCNTTSOLOGONTSOFGISPARM             
*     Jobname StepnameProcstepEnvirParmty
*     |--+---||--+---||--+---||-+-||-+--|
*        |       |       |      |    |
*        |       |       |      |    |    
*        |       |       |      |    |    
*        |       |       |      |    |    
*        |       |       |      |    |    
*        |       |       |      |    |    
*        |       |       |      |    +-----------  Parm Type    (5 bytes)
*        |       |       |      +----------------  Environment  (5 bytes)
*        |       |       +-----------------------  Proc Name    (8 bytes)
*        |       +-------------------------------  Step Name    (8 bytes)
*        +--------------------------------------   Job Name     (8 bytes)
*
*
*     Month Name             Use first 3 characters for abbreviated month name
*     Day of Week Number     0-Sunday, 1-Monday, 2-Tuesday,... 6-Saturday
*     Day of Week Name       Use first 3 characters for abbreviated day of week name

GETDTE can be invoked from Assembler or high-level languages such as COBOL or PL/I. The program documentation includes sample representations of an Assembler DSECT and COBOL working-storage definition of the results area.

GETDTE uses GETMAIN/FREEMAIN to declare working storage, issues a TIME (SVC 11) macro, converts R0 and R1 content to character date/time components and further complements Julian date with a MM/DD calendar date including a day and month name. Other common information include JOB attributes from the TIOT, environment and detected parameter type (parameter vs CPPL).

When GETDTE executes under TSO, the CLIST variable, RDTEANSR, will be created containing the content (in character format) of the commarea if the IKJCT441 API is available.

Version 1.0.02 simplified use of some macros and/or code to facilitate assembly in MVS 3.8J and SVS17L platforms. Add MVS batch support to write RDTEANSR variable value to a sequential file. New ISPF panel introduced to support interactive display of GETDTE results. New keywords, ABOUT, SHOW and FILE added to GETDTE command. New tutorial panels for convenient online reference. See Version History for more change information.

* * * * * N O T I C E * * * * *

Due to GETDTE comm area modifications, this version is NOT compatible with applications using older versions of GETDTE. Specifically add-on application DFSPC v1R2M00 or older, DUCBD V1R1M00 or older and DALCDS V1R2M01 or older.

To circumvent this compatiblity issue, one of three options should be reviewed and applied:
– 1) upgrade to current version of add-on application,
– 2) update current version of add-on application to NOT use GETDTE, or
– 3) do not upgrade GETDTE.

See add-on application webpage for specifics on disabling use of GETDTE.

Version 1.0.01 updates the distribution package and adds two sample programs. See Version History for more change information.

Prerequisite: User Modifications

Two user-mods, ZP60014 and ZP60038, may be REQUIRED to process CLIST symbolic variables via the API, IKJCT441, on MVS 3.8J before using GETDTE.  GETDTE will function normally, but will not create CLIST variables.

More information on the above user-mods can be obtained from the following website:
http://www.prycroft6.com.au/vs2mods/

Check your system to determine if one or both user-mods are required. ZP60038 requires ZP60014.

Software Disclaimer

No guarantee; No warranty; Install / Use at your own risk.

This software is provided “AS IS” and without any expressed or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.

The author requests keeping authors name intact to any modified versions.

In addition, the author requests readers to submit any code modifications / enhancements and associated comments for consideration into a subsequent release (giving credit to contributors) thus, improving overall functionality benefiting the MVS 3.8J hobbyist public domain community.

Installing Software

After downloading the ZIP file, the approach for this installation procedure is to transfer the distribution content file (HET or XMI) from your personal computing device to MVS.

When the transfer completes, associated load JCL (HET, RECV370 or TSO RECEIVE) can also be transferred to MVS to load the distribution software.

Alternatively, the load JCL may be submitted from your device if a TCP/IP socket reader is setup on you device hosting Hercules / MVS 3.8J.

Continue the installation procedure using supplied JCL from the MVS CNTL data set under TSO per the readme.txt instructions.

The below README file includes a ZIP file content list, pre-installation requirements and installation steps.


GETDTE for MVS 3.8J / Hercules                                              . 
==============================                                              .

Date: 07/01/2024  Release V1R0M02
      03/18/2024  Release V1R0M01
      07/30/2020  Release V1R0M00  **INITIAL software distribution

*  Author:  Larry Belmontes Jr.
*           https://ShareABitofIT.net/GETDTE-in-MVS38J
*           Copyright (C) 2013-2024  Larry Belmontes, Jr.


----------------------------------------------------------------------
|    GETDTE       I n s t a l l a t i o n   R e f e r e n c e        |
----------------------------------------------------------------------

   The approach for this installation procedure is to transfer the
distribution content from your personal computing device to MVS with
minimal JCL and to continue the installation procedure using supplied
JCL from the MVS CNTL data set under TSO.

   Below are descriptions of ZIP file content, pre-installation
requirements (notes, credits) and installation steps.

Thanks!
-Larry Belmontes



----------------------------------------------------------------------
|    GETDTE       C h a n g e   H i s t o r y                        |
----------------------------------------------------------------------
*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  07/01/2024 1.0.02   - Enhance PARM detection                   
*                      - Added MVS Batch capability
*                      - Added GETDTEO DD to provide output in a
*                        sequential dataset (one record)
*                      - Added new keywords, ABOUT, SHOW, FILE
*                      - Added GETDTE Interactive test panel
*                      - Added tutorial panels              
*                      - Added ASM sample program               
*                      - Documentation updates                  
*
*  03/18/2024 1.0.01   - Updated distribution packaging
*                      - Added instream PROC for PLI F sample pgm
*                      - Added instream PROC for MVT COBOL sample pgm
*
*  07/30/2020 1.0.00   - Initial version released to MVS 3.8J
*                        hobbyist public domain
*
*
======================================================================
* I. C o n t e n t   o f   Z I P   F i l e                           |
======================================================================

o  $INST00.JCL          Define Alias for HLQ in Master Catalog

o  $INST01.JCL          Load CNTL data set from distribution tape

o  $RECVXMI.JCL         RECV370 Receive XMI SEQ to MVS PDSs

o  $RECVTSO.JCL         TSO Receive XMI SEQ to MVS PDSs

o  GETDTE.V1R0M02.HET   Hercules Emulated Tape (HET) multi-file volume
   volser=VS1002        containing software distribution library.

o  GETDTE.V1R0M02.XMI   XMIT file containing software distribution library.

o  DSCLAIMR.TXT         Disclaimer

o  PREREQS.TXT          Required user-mods

o  README.TXT           This File
   Note: See application web page for any updates to readme.txt


Note:   Two user-mods, ZP60014 and ZP60038, are REQUIRED to process
-----   CLIST symbolic variables via the IKJCT441 API on MVS 3.8J before
        using this software.
        More information and download links at:
        http://www.prycroft6.com.au/vs2mods/

Note:   SHRABIT.MACLIB is macro library required to assemble/compile this
-----   software.  A version as-of this distribution is included for
        installation as a pre-requisite.
        More information including current version download link at:
        
SHRABIT.MACLIB in MVS 3.8J
====================================================================== * II. P r e - i n s t a l l a t i o n R e q u i r e m e n t s | ====================================================================== o The Master Catalog name for HLQ aliases. o The Master Catalog password may be required for some installation steps. o If loading via tape files, device 480 is utilized. o DATASET List after distribution library load for reference purposes: DATA-SET-NAME------------------------------- VOLUME ALTRK USTRK ORG FRMT % XT SHRABIT.GETDTE.V1R0M02.ASM PUB006 20 2 PO FB 10 1 SHRABIT.GETDTE.V1R0M02.CLIST PUB006 2 1 PO FB 50 1 SHRABIT.GETDTE.V1R0M02.CNTL PUB006 10 5 PO FB 50 1 SHRABIT.GETDTE.V1R0M02.HELP PUB006 2 1 PO FB 50 1 SHRABIT.GETDTE.V1R0M02.ISPF PUB006 2 1 PO FB 50 1 SHRABIT.GETDTE.V1R0M02.MACLIB PUB006 6 3 PO FB 50 1 **END** TOTALS: 42 TRKS ALLOC 13 TRKS USED 6 EXTENTS Confirm the TOTAL track allocation is available on your device. Note: A different DASD device type (e.g. 3380) may yield different usage. o TSO user-id with sufficient access rights to update SYS2.CMDPROC, SYS2.CMDLIB, SYS2.HELP, SYS2.LINKLIB and/or ISPF libraries. o For installations with a security system (e.g. RAKF), you MAY need to insert additional JOB statement information. // USER=???????,PASSWORD=???????? o Names of ISPCLIB (Clist), ISPMLIB (Message), ISPLLIB (Load) and/or ISPPLIB (Panel) libraries. o Download ZIP file to your PC local drive. o Unzip the downloaded file into a temp directory on your PC device. o Install pre-requisite (if any) software and/or user modifications. o JCL from you local device (after unzip) may be edited using Notepad or nano (based on you host OS) and submitted via TCP/IP sockets reader if your system configuration supports this option. This option can replace some copy-paste tasks during installation. For more information on submitting JCL to MVS 3.8J, see
Submitting JCL to MVS 3.8J
o For more information on SHRABIT software distribution library, see
SHRABIT Distributions for MVS38J
o For more information on SHRABIT software installation, see
SHRABIT Installations for MVS38J
====================================================================== * III. I n s t a l l a t i o n S t e p s | ====================================================================== +--------------------------------------------------------------------+ | Step 1. Determine software installation source | +--------------------------------------------------------------------+ | HET or XMI ? | +--------------------------------------------------------------------+ a) Software can be installed from one of two sources, HET or XMI. - For tape installation (HET), proceed to STEP 3. **** or - For XMIT installation (XMI), proceed to next STEP. +--------------------------------------------------------------------+ | Step 2. Load distribution source from XMI file | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($RECVXMI) | | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($RECVTSO) | +--------------------------------------------------------------------+ ______________________________________________________________________ //RECV000A JOB (SYS),'Receive GETDTE XMI', <-- Review and Modify // CLASS=A,MSGCLASS=X,REGION=0M, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * JOB: $RECVXMI Receive Application XMI Files * //* * using RECV370 * //* -------------------------------------------------------* //RECV PROC HLQ='SHRABIT.GETDTE',VRM=V1R0M02,TYP=XXXXXXXX, // DSPACE='(TRK,(10,05,40))',DDISP='(,CATLG,DELETE)', // DUNIT=DISK,DVOLSER=PUB006 <-- Review and Modify //* //RECV370 EXEC PGM=RECV370 //RECVLOG DD SYSOUT=* //XMITIN DD DISP=SHR,DSN=&&XMIPDS(&TYP) //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=&&SYSUT1, // UNIT=SYSALLDA,SPACE=(CYL,(10,05)),DISP=(,DELETE,DELETE) //SYSUT2 DD DSN=&HLQ..&VRM..&TYP,DISP=&DDISP, // UNIT=&DUNIT,SPACE=&DSPACE,VOL=SER=&DVOLSER //SYSIN DD DUMMY //SYSUDUMP DD SYSOUT=* // PEND //* //* -------------------------------------------------------* //* Ensure parent HLQ alias is declared //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* //* //* -------------------------------------------------------* //* RECV370 GETDTE Software Distribution //* -------------------------------------------------------* //XMIPDS EXEC RECV,TYP=XMIPDS,DSPACE='(CYL,(10,05,10),RLSE)' //RECV370.XMITIN DD DISP=SHR,DSN=your.transfer.xmi <-- XMI File //RECV370.SYSUT2 DD DSN=&&XMIPDS,DISP=(,PASS), // UNIT=SYSDA,SPACE=&DSPACE //* //CNTL EXEC RECV,TYP=CNTL //RECV370.SYSUT2 DD DDNAME=&TYP //CNTL DD DSN=&HLQ..&VRM..CNTL,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(10,10,10)), // DISP=&DDISP //* //HELP EXEC RECV,TYP=HELP //RECV370.SYSUT2 DD DDNAME=&TYP //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //CLIST EXEC RECV,TYP=CLIST //RECV370.SYSUT2 DD DDNAME=&TYP //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //ISPF EXEC RECV,TYP=ISPF //RECV370.SYSUT2 DD DDNAME=&TYP //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //ASM EXEC RECV,TYP=ASM //RECV370.SYSUT2 DD DDNAME=&TYP //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(20,10,10)), // DISP=&DDISP //* //MACLIB EXEC RECV,TYP=MACLIB //RECV370.SYSUT2 DD DDNAME=&TYP //MACLIB DD DSN=&HLQ..&VRM..MACLIB,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(06,02,02)), // DISP=&DDISP // ______________________________________________________________________ Figure 1a: $RECVXMI.JCL ______________________________________________________________________ //RECV000B JOB (SYS),'TSO RECEIVE XMI', <-- Review and Modify // CLASS=A,MSGCLASS=X,REGION=0M, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * JOB: $RECVTSO TSO RECEIVE APPLICATION XMI FILES * //* * for GETDTE software distribution * //* -------------------------------------------------------* //* //* This JOB executes two steps: //* //* 1) IDCAMS to ensure parent HLQ alias (SHRABIT) is //* defined on master catalog //* Note: Alias definition bypassed if alias already //* ----- defined. //* //* 2) Executes TSO in BATCH mode and issues //* TSO RECEIVE commands to load the XMI distribution //* library (an XMI SEQ dataset) to a temporary PDS. //* Each software PDS is loaded from before deleting //* temporary PDS. //* //* //* This JCL may be modified to suit your installation //* needs. //* //* The TSO RECEIVE commands use INdataset, DAtaset, VOL, //* and NOPRompt parms. //* //* //* -------------------------------------------------------* //* * * //* * PROC: PBTSO * //* * Batch TSO * //* * * //* -------------------------------------------------------* //PBTSO PROC //STEP01 EXEC PGM=IKJEFT01 //SYSPROC DD DISP=SHR,DSN=SYS2.CMDPROC //*STEPLIB DD DISP=SHR,DSN=SYS2.LINKLIB //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY Command Line Input //* // PEND //* //* -------------------------------------------------------* //* Ensure parent HLQ alias is declared //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* //* //* -------------------------------------------------------* //* TSO RECEIVE GETDTE Software Distribution //* -------------------------------------------------------* //TSORCV EXEC PBTSO //* -------------------------------------------------------* //* Review and Modify the DSN of the transferred XMI <----- //* used in the TSO RECEIVE SYSTSIN DD. <----- //* -------------------------------------------------------* //STEP01.SYSTSIN DD * /* Modify 'SHRABIT.' with your parent HLQ, if different */ /* Modify 'your.transfer.xmi' with transferred XMI SEQ DSN */ /* Modify 'volser' with VOLSER on your system */ RECEIVE IN('your.transfer.xmi') - DA('SHRABIT.GETDTE.V1R0M02.XMIPDS') - VOL(volser) NOPROMPT /* Receive CNTL */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(CNTL)') - DA('SHRABIT.GETDTE.V1R0M02.CNTL') - VOL(volser) NOPROMPT /* Receive HELP */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(HELP)') - DA('SHRABIT.GETDTE.V1R0M02.HELP') - VOL(volser) NOPROMPT /* Receive CLIST */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(CLIST)') - DA('SHRABIT.GETDTE.V1R0M02.CLIST') - VOL(volser) NOPROMPT /* Receive ISPF */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(ISPF)') - DA('SHRABIT.GETDTE.V1R0M02.ISPF') - VOL(volser) NOPROMPT /* Receive ASM */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(ASM)') - DA('SHRABIT.GETDTE.V1R0M02.ASM') - VOL(volser) NOPROMPT /* Receive MACLIB */ RECEIVE IN('SHRABIT.GETDTE.V1R0M02.XMIPDS(MACLIB)') - DA('SHRABIT.GETDTE.V1R0M02.MACLIB') - VOL(volser) NOPROMPT /* Delete XMIPDS */ DELETE 'SHRABIT.GETDTE.V1R0M02.XMIPDS' /* // ______________________________________________________________________ Figure 1b: $RECVTSO.JCL a) Transfer GETDTE.V1R0M02.XMI to MVS using your 3270 emulator. Make note of the DSN assigned on MVS transfer. Use transfer IND$FILE options: NEW BLKSIZE=3200 LRECL=80 RECFM=FB - or - NEW BLKSIZE(3200) LRECL(80) RECFM(FB) Ensure the DSN on MVS exists with the correct DCB information: ORG=PS BLKSIZE=3200 LRECL=80 RECFM=FB b) If using RECV370 to load XMI, Copy and paste the $RECVXMI JCL to a PDS member, update JOB statement to conform to your installation standard. - or - If using TSO RECEIVE to load XMI, Copy and paste the $RECVTSO JCL to a PDS member, update JOB statement to conform to your installation standard. c) The first step ensures the HLQ alias is defined and the subsequent steps perform the XMI load. Review JCL and apply any modifications per your installation including the DSN assigned during the transfer above for the XMI file. d) Submit the job. e) Review job output for successful load of the following PDSs: SHRABIT.GETDTE.V1R0M02.ASM SHRABIT.GETDTE.V1R0M02.CLIST SHRABIT.GETDTE.V1R0M02.CNTL SHRABIT.GETDTE.V1R0M02.HELP SHRABIT.GETDTE.V1R0M02.ISPF SHRABIT.GETDTE.V1R0M02.MACLIB f) Subsequent installation steps will be submitted from members contained in the CNTL data set. g) Proceed to STEP 6. **** +--------------------------------------------------------------------+ | Step 3. Define Alias for HLQ SHRABIT in MVS User Catalog | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST00) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE00 JOB (SYS),'Def SHRABIT Alias', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE in MVS3.8J TSO / Hercules * //* * JOB: $INST00 Define Alias for parent HLQ SHRABIT * //* * Note: The master catalog password may be required * //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and Modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* // ______________________________________________________________________ Figure 2: $INST00 JCL Note: This distribution is installed under the HLQ alias SHRABIT. $INST00 bypasses the DEFINE ALIAS action when the alias is already defined. a) Copy and paste the above JCL to a PDS member, update JOB statement to conform to your installation standard. b) Submit the job. c) Review job output for successful DEFINE ALIAS. Note: When $INST00 runs for the first time, Job step DEFALIAS returns RC=0004 due to LISTCAT ALIAS function completing with condition code of 4 and DEFINE ALIAS function completing with condition code of 0. Note: When $INST00 runs after the ALIAS is defined, Job step DEFALIAS returns RC=0000 due to LISTCAT ALIAS function completing with condition code of 0 and DEFINE ALIAS function being bypassed. +--------------------------------------------------------------------+ | Step 4. Load CNTL data set from distribution tape | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST01) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE01 JOB (SYS),'Install CNTL PDS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * JOB: $INST01 Load CNTL PDS from distribution tape * //* * Note: Uses tape drive 480 * //* -------------------------------------------------------* //LOADCNTL PROC THLQ=GETDTE,TVOLSER=VS1002, // HLQ='SHRABIT.GETDTE',VRM=V1R0M02, // DDISP='(,CATLG,DELETE)', // TUNIT=480,DVOLSER=PUB006,DUNIT=DISK <-- Review and Modify //LOAD001 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCNTL DD DSN=&THLQ..&VRM..CNTL.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(1,SL) //CNTL DD DSN=&HLQ..&VRM..CNTL,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(10,10,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) // PEND //STEP001 EXEC LOADCNTL Load CNTL PDS //SYSIN DD * COPY INDD=INCNTL,OUTDD=CNTL // ______________________________________________________________________ Figure 3: $INST01 JCL a) Before submitting the above job, the distribution tape must be made available to MVS by issuing the following command from the Hercules console: DEVINIT 480 X:\dirname\GETDTE.V1R0M00.HET READONLY=1 where X:\dirname is the complete path to the location of the Hercules Emulated Tape file. b) Issue the following command from the MVS console to vary device 480 online: V 480,ONLINE c) Copy and paste the above JCL to a PDS member, update JOB statement to conform to your installation standard. Review JCL and apply any modifications per your installation. d) Submit the job. e) Review job output for successful load of the CNTL data set. f) Subsequent installation steps will be submitted from members contained in the CNTL data set. +--------------------------------------------------------------------+ | Step 5. Load Other data sets from distribution tape | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST02) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE02 JOB (SYS),'Install Other PDSs', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * JOB: $INST02 Load other PDS from distribution tape * //* * Tape Volume: File 1 - CNTL * //* * File 2 - CLIST * //* * File 3 - HELP * //* * File 4 - ISPF * //* * File 5 - ASM * //* * File 6 - MACLIB * //* * Note: Default TAPE=480, DASD=DISK on PUB006 * //* -------------------------------------------------------* //LOADOTHR PROC THLQ=GETDTE,TVOLSER=VS1002, // HLQ='SHRABIT.GETDTE',VRM=V1R0M02, // DDISP='(,CATLG,DELETE)', // TUNIT=480,DVOLSER=PUB006,DUNIT=DISK <-- Review and Modify //LOAD02 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=&THLQ..&VRM..CLIST.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(2,SL) //INHELP DD DSN=&THLQ..&VRM..HELP.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(3,SL) //INISPF DD DSN=&THLQ..&VRM..ISPF.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(4,SL) //INASM DD DSN=&THLQ..&VRM..ASM.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(5,SL) //INMACLIB DD DSN=&THLQ..&VRM..MACLIB.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(6,SL) //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(20,10,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //MACLIB DD DSN=&HLQ..&VRM..MACLIB,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(06,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) // PEND //* //STEP001 EXEC LOADOTHR Load ALL other PDSs //SYSIN DD * COPY INDD=INCLIST,OUTDD=CLIST COPY INDD=INHELP,OUTDD=HELP COPY INDD=INISPF,OUTDD=ISPF COPY INDD=INASM,OUTDD=ASM COPY INDD=INMACLIB,OUTDD=MACLIB // ______________________________________________________________________ Figure 4: $INST02 JCL a) Member $INST02 installs remaining data sets from distribution tape. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Before submitting the above job, the distribution tape must be made available to MVS by issuing the following command from the Hercules console: DEVINIT 480 X:\dirname\GETDTE.V1R0M02.HET READONLY=1 where X:\dirname is the complete path to the location of the Hercules Emulated Tape file. d) Issue the following command from the MVS console to vary device 480 online: V 480,ONLINE e) Submit the job. f) Review job output for successful loads. +--------------------------------------------------------------------+ | Step 6. FULL or UPGRADE Installation | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($UP1002) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE0U JOB (SYS),'Upgrade GETDTE', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE in MVS3.8J TSO / Hercules * //* * * //* * JOB: $UP1002 Upgrade GETDTE software * //* * Upgrade to release V1R0M02 from V1R0M01 * //* * * //* * Review JCL before submitting!! * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * * //* * PROC: PARTSISPF * //* * Copy ISPF Parts * //* * * //* -------------------------------------------------------* //PARTSI PROC HLQ=MYHLQ,VRM=VXRXMXX, // CLIB='XXXXXXXX.ISPCLIB', // MLIB='XXXXXXXX.ISPMLIB', // PLIB='XXXXXXXX.ISPPLIB', // SLIB='XXXXXXXX.ISPSLIB', // TLIB='XXXXXXXX.ISPTLIB' //* //* -------------------------------------------------------* //* * * //* * CLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPCLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPCLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDCLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //CLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //CLIBOUT DD DSN=&CLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * MLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPMLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPMLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDMLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //MLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //MLIBOUT DD DSN=&MLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * PLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPPLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPPLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDPLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //PLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //PLIBOUT DD DSN=&PLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * SLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPSLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPSLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDSLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //SLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //SLIBOUT DD DSN=&SLIB,DISP=SHR //SYSIN DD DUMMY //* //* //* -------------------------------------------------------* //* * * //* * TLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPTLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPTLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDTLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //TLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //TLIBOUT DD DSN=&TLIB,DISP=SHR //SYSIN DD DUMMY //* // PEND //* //* -------------------------------------------------------* //* * * //* * PROC: ASMLKED * //* * Assembler Link-Edit * //* * * //* -------------------------------------------------------* //ASML PROC HLQ=WHATHLQ,VRM=VXRXMXX,VIO=VIO, // SYSPRM='', // ASMPARM='NODECK,LOAD,RENT,TERM,XREF', // LNKPARM='MAP,LIST,LET,RENT,XREF', // MBR=WHOWHAT //* //ASM EXEC PGM=IFOX00, // PARM='&ASMPARM&SYSPRM' //SYSGO DD DSN=&&LOADSET,DISP=(MOD,PASS),SPACE=(CYL,(1,1)), // UNIT=&VIO,DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=800) //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=SYS1.AMODGEN,DISP=SHR // DD DSN=SYS2.MACLIB,DISP=SHR ** YREG ** // DD DDNAME=PVTMAC ** PVTMAC ** // DD DSN=&HLQ..&VRM..MACLIB,DISP=SHR * myMACLIB ** //PVTMAC DD DSN=SYS2.MACLIB,DISP=SHR * placeholder* //SYSTERM DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=NULLFILE //SYSUT1 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSUT2 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSUT3 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSIN DD DSN=&HLQ..&VRM..ASM(&MBR),DISP=SHR <--INPUT //* //LKED EXEC PGM=IEWL, // PARM='&LNKPARM', // COND=(0,NE,ASM) //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DUMMY //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=&VIO,SPACE=(CYL,(5,2)) //SYSIN DD DUMMY //* // PEND //* //* -------------------------------------------------------* //* * Update ISPF parts for this release distribution * //* -------------------------------------------------------* //* * Note: Duplicate members are over-written. * //* -------------------------------------------------------* //* //* * - Install libraries marked... * //* * - Search for '<--TARGET' * //* * - Update install libraries per your * //* * installation standard * //* //* -------------------------------------------------------* //ISPF EXEC PARTSI,HLQ='SHRABIT.GETDTE',VRM=V1R0M02, // CLIB='XXXXXXXX.ISPCLIB', <--TARGET // MLIB='XXXXXXXX.ISPMLIB', <--TARGET // PLIB='XXXXXXXX.ISPPLIB', <--TARGET // SLIB='XXXXXXXX.ISPSLIB', <--TARGET // TLIB='XXXXXXXX.ISPTLIB' <--TARGET //ADDCLIB.SYSIN DD * CLIB COPY INDD=((CLIBIN,R)),OUTDD=CLIBOUT SELECT MEMBER=CGETDTEI //ADDMLIB.SYSIN DD * MLIB COPY INDD=((MLIBIN,R)),OUTDD=MLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDPLIB.SYSIN DD * PLIB COPY INDD=((PLIBIN,R)),OUTDD=PLIBOUT SELECT MEMBER=HGETDTE SELECT MEMBER=PGETDTE SELECT MEMBER=TGDTE100 SELECT MEMBER=TGDTE001 SELECT MEMBER=TGDTE002 SELECT MEMBER=TGDTE003 SELECT MEMBER=TGDTE004 SELECT MEMBER=TGDTEA01 SELECT MEMBER=TGDTEB01 SELECT MEMBER=TGDTEC01 SELECT MEMBER=TGDTEC02 SELECT MEMBER=TGDTEC03 SELECT MEMBER=TGDTED01 SELECT MEMBER=TGDTED02 SELECT MEMBER=TGDTEE01 SELECT MEMBER=TGDTEE02 SELECT MEMBER=TGDTEE03 SELECT MEMBER=TGDTEF01 SELECT MEMBER=TGDTEF02 SELECT MEMBER=TGDTEF03 SELECT MEMBER=TGDTEF04 SELECT MEMBER=TGDTEF05 SELECT MEMBER=TGDTEZ01 SELECT MEMBER=TGDTEZ02 SELECT MEMBER=TGDTEZ80 //ADDSLIB.SYSIN DD * SLIB COPY INDD=((SLIBIN,R)),OUTDD=SLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDTLIB.SYSIN DD * TLIB COPY INDD=((TLIBIN,R)),OUTDD=TLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //* //* -------------------------------------------------------* //* * Assemble Link-Edit GETDTE to SYS2.LINKLIB * //* -------------------------------------------------------* //GETDTE EXEC ASML,HLQ='SHRABIT.GETDTE',VRM=V1R0M02,MBR=GETDTE, // PARM.LKED='MAP,LIST,LET,RENT,XREF' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.LINKLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * * //* * If SYSn.LINKLIB or SYSn.CMDLIB is updated * //* * * //* -------------------------------------------------------* //DBSTOP EXEC DBSTOP, // COND.IEFPROC=(0,NE) //DBSTART EXEC DBSTART, // COND.IEFPROC=(0,NE) // ______________________________________________________________________ Figure 5: $UP1001.JCL Upgrade from previous version to V1R0M02 a) If this is the INITIAL software distribution, proceed to STEP 7. b) This software may be installed in FULL or UPGRADE from a prior version. Note: If the installed software version is NOT the most recent ----- PREVIOUS version, perform a FULL install. Note: If the installed software version is customized, a manual ----- review and evaluation is suggested to properly incorporate customizations into this software distribution before proceeding with the installation. Refer to the $UPvrmm.JCL members for upgraded software components being installed. Note: $UPvrmm.JCL members exist in each software version. ----- For example, V1R3M00 software contains $UP1300.JCL to upgrade from previous V1R2M00 distribution. For example, V1R2M00 software contains $UP1200.JCL to upgrade from previous V1R1M00 distribution. c) If a FULL install of this software distribution is elected regardless of previous version installed on your system, proceed to STEP 7. d) If this is an UPGRADE from the PREVIOUS version, execute the below JCL based on current installed version: - V1R0M02 upgrade from V1R0M01 - V1R0M01 has no updates available! - V1000 is initial release, thus, no updates available! e) After upgrade is applied, proceed to validation, STEP 11. +--------------------------------------------------------------------+ | Step 7. Install TSO parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST03) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE03 JOB (SYS),'Install TSO Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST03 Install TSO parts * //* * * //* * Note: Duplicate members are over-written. * //* -------------------------------------------------------* //STEP001 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=SHRABIT.GETDTE.V1R0M02.CLIST,DISP=SHR //INHELP DD DSN=SHRABIT.GETDTE.V1R0M02.HELP,DISP=SHR //OUTCLIST DD DSN=SYS2.CMDPROC,DISP=SHR //OUTHELP DD DSN=SYS2.HELP,DISP=SHR //SYSIN DD * COPY INDD=((INCLIST,R)),OUTDD=OUTCLIST SELECT MEMBER=CGETDTE SELECT MEMBER=C$GETDTE COPY INDD=((INHELP,R)),OUTDD=OUTHELP SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ /* // ______________________________________________________________________ Figure 6: $INST03 JCL a) Member $INST03 installs TSO component(s). Note: If no TSO components are included for this distribution, ----- RC = 4 is returned by the corresponding IEBCOPY step. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful load(s). +--------------------------------------------------------------------+ | Step 8. Install GETDTE Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST04) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE04 JOB (SYS),'Install GETDTE', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST04 Install GETDTE Software * //* * * //* * - Install libraries marked... * //* * - Search for '<--TARGET' * //* * - Update install libraries per your * //* * installation standard * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * * //* * PROC: ASMLKED * //* * Assembler Link-Edit * //* * * //* -------------------------------------------------------* //ASML PROC HLQ=WHATHLQ,VRM=VXRXMXX,VIO=VIO, // SYSPRM='', // ASMPARM='NODECK,LOAD,RENT,TERM,XREF', // LNKPARM='MAP,LIST,LET,RENT,XREF', // MBR=WHOWHAT //* //ASM EXEC PGM=IFOX00, // PARM='&ASMPARM&SYSPRM' //SYSGO DD DSN=&&LOADSET,DISP=(MOD,PASS),SPACE=(CYL,(1,1)), // UNIT=&VIO,DCB=(DSORG=PS,RECFM=FB,LRECL=80,BLKSIZE=800) //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=SYS1.AMODGEN,DISP=SHR // DD DSN=SYS2.MACLIB,DISP=SHR ** YREG ** // DD DDNAME=PVTMAC ** PVTMAC ** // DD DSN=&HLQ..&VRM..MACLIB,DISP=SHR * myMACLIB ** //PVTMAC DD DSN=SYS2.MACLIB,DISP=SHR * placeholder* //SYSTERM DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=NULLFILE //SYSUT1 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSUT2 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSUT3 DD UNIT=&VIO,SPACE=(CYL,(6,1)) //SYSIN DD DSN=&HLQ..&VRM..ASM(&MBR),DISP=SHR <--INPUT //* //LKED EXEC PGM=IEWL, // PARM='&LNKPARM', // COND=(0,NE,ASM) //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DUMMY //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=&VIO,SPACE=(CYL,(5,2)) //SYSIN DD DUMMY //* // PEND //* //* -------------------------------------------------------* //* * Assemble Link-Edit GETDTE to SYS2.LINKLIB * //* -------------------------------------------------------* //GETDTE EXEC ASML,HLQ='SHRABIT.GETDTE',VRM=V1R0M02,MBR=GETDTE, // PARM.LKED='MAP,LIST,LET,RENT,XREF' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.LINKLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * * //* * If SYSn.LINKLIB or SYSn.CMDLIB is updated * //* * * //* -------------------------------------------------------* //DBSTOP EXEC DBSTOP, // COND.IEFPROC=(0,NE) //DBSTART EXEC DBSTART, // COND.IEFPROC=(0,NE) // ______________________________________________________________________ Figure 7: $INST04 JCL a) Member $INST04 installs program(s). Note: If no components are included for this distribution, ----- an IEFBR14 step is executed. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful completion. +--------------------------------------------------------------------+ | Step 9. Install ISPF parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST05) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE05 JOB (SYS),'Install ISPF Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE in MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST05 Install ISPF parts * //* * * //* * Note: Duplicate members are over-written. * //* * * //* * * //* * - Uses ISPF 2.2 product from Wally Mclaughlin * //* * - Install libraries marked... * //* * - Search for '<--TARGET' * //* * - Update install libraries per your * //* * installation standard * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * * //* * PROC: PARTSISPF * //* * Copy ISPF Parts * //* * * //* -------------------------------------------------------* //PARTSI PROC HLQ=MYHLQ,VRM=VXRXMXX, // CLIB='XXXXXXXX.ISPCLIB', // MLIB='XXXXXXXX.ISPMLIB', // PLIB='XXXXXXXX.ISPPLIB', // SLIB='XXXXXXXX.ISPSLIB', // TLIB='XXXXXXXX.ISPTLIB' //* //* -------------------------------------------------------* //* * * //* * CLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPCLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPCLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDCLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //CLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //CLIBOUT DD DSN=&CLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * MLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPMLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPMLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDMLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //MLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //MLIBOUT DD DSN=&MLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * PLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPPLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPPLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDPLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //PLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //PLIBOUT DD DSN=&PLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * SLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPSLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPSLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDSLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //SLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //SLIBOUT DD DSN=&SLIB,DISP=SHR //SYSIN DD DUMMY //* //* //* -------------------------------------------------------* //* * * //* * TLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPTLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPTLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDTLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //TLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //TLIBOUT DD DSN=&TLIB,DISP=SHR //SYSIN DD DUMMY //* // PEND //* //ISPF EXEC PARTSI,HLQ='SHRABIT.GETDTE',VRM=V1R0M02, // CLIB='XXXXXXXX.ISPCLIB', <--TARGET // MLIB='XXXXXXXX.ISPMLIB', <--TARGET // PLIB='XXXXXXXX.ISPPLIB', <--TARGET // SLIB='XXXXXXXX.ISPSLIB', <--TARGET // TLIB='XXXXXXXX.ISPTLIB' <--TARGET //ADDCLIB.SYSIN DD * CLIB COPY INDD=((CLIBIN,R)),OUTDD=CLIBOUT SELECT MEMBER=CGETDTEI //ADDMLIB.SYSIN DD * MLIB COPY INDD=((MLIBIN,R)),OUTDD=MLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDPLIB.SYSIN DD * PLIB COPY INDD=((PLIBIN,R)),OUTDD=PLIBOUT SELECT MEMBER=HGETDTE SELECT MEMBER=PGETDTE SELECT MEMBER=TGDTE100 SELECT MEMBER=TGDTE001 SELECT MEMBER=TGDTE002 SELECT MEMBER=TGDTE003 SELECT MEMBER=TGDTE004 SELECT MEMBER=TGDTEA01 SELECT MEMBER=TGDTEB01 SELECT MEMBER=TGDTEC01 SELECT MEMBER=TGDTEC02 SELECT MEMBER=TGDTEC03 SELECT MEMBER=TGDTED01 SELECT MEMBER=TGDTED02 SELECT MEMBER=TGDTEE01 SELECT MEMBER=TGDTEE02 SELECT MEMBER=TGDTEE03 SELECT MEMBER=TGDTEF01 SELECT MEMBER=TGDTEF02 SELECT MEMBER=TGDTEF03 SELECT MEMBER=TGDTEF04 SELECT MEMBER=TGDTEF05 SELECT MEMBER=TGDTEZ01 SELECT MEMBER=TGDTEZ02 SELECT MEMBER=TGDTEZ80 //ADDSLIB.SYSIN DD * SLIB COPY INDD=((SLIBIN,R)),OUTDD=SLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDTLIB.SYSIN DD * TLIB COPY INDD=((TLIBIN,R)),OUTDD=TLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ // ______________________________________________________________________ Figure 8: $INST05 JCL a) Member $INST05 installs ISPF component(s). Note: If no ISPF components are included for this distribution, ----- RC = 4 is returned by the corresponding IEBCOPY step. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Review and update DD statements for ISPCLIB (clist), ISPMLIB (messages), and/or ISPPLIB (panel) library names. The DD statements are tagged with '<--TARGET'. d) Submit the job. e) Review job output for successful load(s). +--------------------------------------------------------------------+ | Step 10. Install Other Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($INST40) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GETDTE40 JOB (SYS),'Install Other Pgms', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE in MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST40 Install Other Software * //* * Install xxxxxx Programs * //* * * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * IEFBR14 * //* -------------------------------------------------------* //DUMMY EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //* // ______________________________________________________________________ Figure 9: $INST40 JCL a) Member $INST40 installs additional software. Note: If no other software is included for this distribution, ----- an IEFBR14 step is executed. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful completion. +--------------------------------------------------------------------+ | Step 11a. Validate GETDTE | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($IVP1) | +--------------------------------------------------------------------+ ______________________________________________________________________ //IVP1 JOB (SYS),'GETDTE IPV1', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * * //* * JOB: $IVP1 * //* * Run GETDTE Validation from TSO Batch * //* * to execulte clist CGETDTE * //* * * //* * Expected Result: * //* * RC=0 * //* * * //* -------------------------------------------------------* //BATCHTSO PROC //STEP01 EXEC PGM=IKJEFT01 //SYSPROC DD DISP=SHR,DSN=SYS2.CMDPROC <--TARGET //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY Command Line Input // PEND //* //IVP1 EXEC BATCHTSO //STEP01.SYSTSIN DD * CGETDTE /* // ______________________________________________________________________ Figure 10: $IVP1 JCL a) Member $IVP1 in the SHRABIT.GETDTE.V1R0M02.CNTL data set contains the job to validate GETDTE. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful execution. All return codes should be zero. e) Validation for GETDTE TSO is complete. +--------------------------------------------------------------------+ | Step 11b. Validate GETDTE | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GETDTE.V1R0M02.CNTL($IVP2) | +--------------------------------------------------------------------+ ______________________________________________________________________ //IVP2 JOB (SYS),'GETDTE IPV2', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GETDTE for MVS3.8J TSO / Hercules * //* * * //* * JOB: $IVP2 * //* * Run GETDTE Validation from BATCH job * //* * * //* * Expected Result: * //* * RC=1 for IVP2A (data written to GETDTEO DD) * //* * RC=1 for IVP2B (data written to GETDTEO DD) * //* * RC=1 for IVP2C (no data written, no GETDTEO DD) * //* * * //* -------------------------------------------------------* //IVP2A EXEC PGM=GETDTE //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //GETDTEO DD SYSOUT=* //* //IVP2B EXEC PGM=GETDTE,PARM='TEST PARM will be ignored' //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //GETDTEO DD SYSOUT=* //* //IVP2C EXEC PGM=GETDTE //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* // ______________________________________________________________________ Figure 11: $IVP2 JCL a) Member $IVP2 in the SHRABIT.GETDTE.V1R0M02.CNTL data set contains the job to validate GETDTE. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output. Step IVP2A return code should be S0C4. This is normal as it is unsupported for GETDTE usage in a MVS job step. e) Validation for GETDTE BATCH is complete. +--------------------------------------------------------------------+ | Step 12. Done | +--------------------------------------------------------------------+ a) Congratulations! You completed the installation for GETDTE. b) Two sample programs that invoke GETDTE are included for reference purposes in SHRABIT.GETDTE.V1R0M02.CNTL, members COB2DTE and PL12DTE. Enjoy using GETDTE! +--------------------------------------------------------------------+ | Step 13. Incorporate GETDTE into ISPF | +--------------------------------------------------------------------+ a) Not applicable. ====================================================================== * IV. S o f t w a r e I n v e n t o r y L i s t | ====================================================================== - SHRABIT.GETDTE.V1R0M02.ASM $ . GETDTE TSO CP GETDTE program - SHRABIT.GETDTE.V1R0M02.CLIST # . C$GETDTE Sample GETDTE TSO CLIST $ . CGETDTE Validate GETDTE under TSO Foreground (CLIST) - SHRABIT.GETDTE.V1R0M02.CNTL # . $INST00 Define Alias for HLQ $ . $INST01 Load CNTL data set from distribution tape (HET) $ . $INST02 Load other data sets from distribution tape (HET) $ . $INST03 Install TSO Parts $ . $INST04 Install GETDTE Software $ . $INST05 Install ISPF Parts . $INST40 Install Other Software $ . $RECVTSO Receive XMI SEQ to MVS PDSs via TSO RECEIVE $ . $RECVXMI Receive XMI SEQ to MVS PDSs via RECV370 # . $UP1002 Upgrade to V1R0M02 from V1R0M01 $ . DSCLAIMR Disclaimer $ . PREREQS Required User-mods $ . README Documentation and Installation instructions # . ASM2DTE IFOX00 Assembler demo program to invoke GETDTE $ . COB2DTE MVT COBOL demo program to invoke GETDTE $ . PLI2DTE MVT PL/I demo program to invoke GETDTE . $IVP1 Validate GETDTE under TSO Batch $ . $IVP2 Validate GETDTE under MVS Batch - SHRABIT.GETDTE.V1R0M02.HELP . README Dummy member, this is intentional - SHRABIT.GETDTE.V1R0M02.ISPF # . CGETDTEI GETDTE Interactive Driver CLIST # . HGETDTE GETDTE Interactive Help Panel # . PGETDTE GETDTE Interactive Panel GETDTE Tutorial Panels # . TGDTE100 Tutorial Panel Main Menu # . TGDTE001 Tutorial Panel Overview 1 # . TGDTE002 Tutorial Panel Overview 2 # . TGDTE003 Tutorial Panel Overview 3 # . TGDTE004 Tutorial Panel Overview 4 # . TGDTEA01 Tutorial Panel Command Syntax 1 # . TGDTEB01 Tutorial Panel Return Codes 1 # . TGDTEC01 Tutorial Panel TSO Examples 1 # . TGDTEC02 Tutorial Panel TSO Examples 2 # . TGDTEC03 Tutorial Panel TSO Examples 3 # . TGDTED01 Tutorial Panel MVS Batch Examples 1 # . TGDTED02 Tutorial Panel MVS Batch Examples 2 # . TGDTEE01 Tutorial Panel Interactive GETDTE 1 # . TGDTEE02 Tutorial Panel Interactive GETDTE 2 # . TGDTEE03 Tutorial Panel Interactive GETDTE 3 # . TGDTEF01 Tutorial Panel Calling GETDTE 1 # . TGDTEF02 Tutorial Panel Calling GETDTE 2 # . TGDTEF03 Tutorial Panel Calling GETDTE 3 # . TGDTEF04 Tutorial Panel Calling GETDTE 4 # . TGDTEF05 Tutorial Panel Calling GETDTE 5 # . TGDTEZ01 Tutorial Panel Change Log 1 # . TGDTEZ02 Tutorial Panel Change Log 2 # . TGDTEZ80 Tutorial Panel Limitations 1 - SHRABIT.GETDTE.V1R0M02.MACLIB . DVCTBL Device Table Entries . ISPFPL ISPF Parameter Address List (10) . ISPFSRV ISPF Service keywords # . ISPFSRVC ISPF Service keywords (COBOL) . LA#ST Load Address and Store . LBISPL Call to ISPLINK (LarryB version) # . LL#ST Load Length and Store . MISCDC Constants for double-quotes and Apostrophe . MOVEC Move VAR at R6, len reflected in R8 (requires MOVEI) . MOVEI Init R6 w/ addr of VAR, init R8 to 0 . MOVER Move VAR at R6 until BLANK is found . MOVEV Move VAR at R6 $ . RDTECOMA DateTime comm area $ . RDTECOMC DateTime comm area (COBOL) # . RDTECOMP DateTime comm area (PL/I) . RTRIM Remove trailing spaces . SVC78A SVC78 message area - After downloading any other required software, consult provided documentation including any configuration steps (if applicable) for software and HELP file installation. $ - Denotes modified software component for THIS DISTRIBUTION relative to prior DISTRIBUTION # - Denotes new software component for THIS DISTRIBUTION relative to prior DISTRIBUTION
  • Click here to download the zip file to your PC local drive.

Closing

Use this common utility program, GETDTE, on your MVS3.8J application software to acquire date-time and other information in your programs (batch and TSO).

Please use the comment box below or the contact us link on the menu bar to communicate any suggestions, improvements, corrections or issues regarding this post.

Thank You.

Version History

*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  07/01/2024 1.0.02   - Enhance PARM detection                   
*                      - Added MVS Batch capability
*                      - Added GETDTEO DD to provide output in a
*                        sequential dataset (one record)
*                      - Added new keywords, ABOUT, SHOW, FILE
*                      - Added GETDTE Interactive test panel
*                      - Added tutorial panels              
*                      - Added ASM sample program               
*                      - Documentation updates                  
*
*  03/18/2024 1.0.01   - Updated distribution packaging
*                      - Added instream PROC for PLI F sample pgm
*                      - Added instream PROC for MVT COBOL sample pgm
*
*  07/30/2020 1.0.00   - Initial version released to MVS 3.8J
*                        hobbyist public domain
*

Tagged ,

2 thoughts on “GETDTE in MVS38J

  1. Hi
    I have downloaded the GETDTE and have followed the instructions for installation. I get an error in last instalation job – JOB: $INST04 – Install GETDTE Program . I would relly like to install this program and make use of this. Output from job:
    —+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+—-+-

    GETDTE – System DSECTs
    LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT
    000000 3125 TIOT DSECT
    3126 IEFTIOT1 Task
    *** ERROR ***
    00000 3127 TIOTLEN EQU *-TIOT Lengt
    GETDTE – System DSECTs
    LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT
    000000 3129 JSCB DSECT
    3130 IEZJSCB Job/S
    GETDTE – System DSECTs
    LOC OBJECT CODE ADDR1 ADDR2 STMT SOURCE STATEMENT
    .
    I think it could be related to the updates you are discussing in the readme file.

    Best regards
    Dagfinn Dyngeland Hammar

    1. Dagfinn,

      Based on your output snippet, it appears that IEFTIOT1 could not resolve in your assembly step (just a guess…).

      Can you provide the job output for JOB: $INST04? IEFTIOT1 is a common macro in the SYS1. macro libs.

      Thanks,
      LarryB

Leave a Reply

Your email address will not be published. Required fields are marked *


CAPTCHA Image
Reload Image

This site uses Akismet to reduce spam. Learn how your comment data is processed.