Overview
CUTIL00 – CLIST Variable Utility for MVS38J / Hercules
(current version 1.1.09 2024-04-15)
In MVS38J TSO, CLIST commands are limited compared to current TSO systems, naturally! CUTIL00 attempts to fill some of those gaps by providing new functions for CLIST development with a single utility command with 2-3 parameters to service a specific function request via a single CLIST statement.
For example, current day TSO uses &SYSLC (convert string to lower-case characters) and &SYSCAPS (convert string to upper-case characters). Under MVS38J, CUTIL00 fills the gap by facilitating the lower-case and upper-case functions with the following statements, respectively –
CUTIL00 LOWER VAR1 convert &VAR1 content to lower-case CUTIL00 UPPER VAR1 convert &VAR1 content to upper-case.
Additionally, new string and date conversion functions available in other languages and current OS versions are incorporated into CUTIL00 for your CLIST programming convenience.
Some examples depicted below:
>CUTIL00 CENTER MYVAR1 center content in &MYVAR1: String (before) String (after) RC ------------------------------- ------------------------------- ---- 'center this TEXT ' ' center this TEXT ' 0000 >CUTIL00 TRIM VAR1 removes trailing, leading and repeating spaces in &VAR1: String (before) String (after) RC ------------------------------- ------------------------------- ---- ' trim this TEXT area ' 'trim this TEXT area' 0000 >CUTIL00 DMCY-D8 VAR1 convert DDMMCCYY to monthname DD, CCYY in &VAR1: String (before) String (after) RC ------------------------------- ------------------------------- ---- '12311987' 'December 31, 1987' 0000 >CUTIL00 ISNUM MYNUM checks &MYNUM for numeric: String (before) String (after) RC ------------------------------- ------------------------------- ---- '12311987' '12311987' 4001 (true)
See List of Functions below for a complete list of CUTIL000 functions including sample CLISTs for each function.
Invoking this utility is kept to a simple line command generally using three to five parameters:
CUTIL00 FUNCT VAR1 VAR2
This program is written in IFOX00 Assembler (24-bit addressing). Development and testing used Volker Bandke’s MVS CD – MVS38J TK3 with Hercules 3.13 hosted on a Windows 10 Pro machine.
MVS38J TK4- update 8 (maintained by Juergen Winkelmann) includes user-mod ZP60014. After applying user-mod ZP60038, CUTIL00 was installed and successfully validated with a CLIST harness under TSO.
Version 1.1.09 corrections to functions REPLACE and ZFILL. Add new ISPF panel for functions MCAL and MCALA in CCUTIL0I interactive tool. See Version History for more change information.
Version 1.1.08 add tutorial panels and MYTUTOR command to CCUTIL0I. See Version History for more change information.
Version 1.1.07 enhanced function MCALA. See Version History for more change information.
Version 1.1.06 adds functions ISHEX, H2C, C2H and ISEVEN. Enhanced function MCALA. See Version History for more change information.
Version 1.1.05 adds functions LEN, SLEN, OVERLAY, UTDSN, and TRUNC. Corrections to function REPLACE. See Version History for more change information.
Version 1.1.00 adds functions GET1V, PUT1V, and MCAL. See Version History for more change information.
Version 1.0.10 updates distribution format. See Version History for more change information.
Version 1.0.01 corrects IEBUPDTE step in loading HELP members. See Version History for more change information.
Enjoy the added value to CLIST development with CUTIL00!
Larry Belmontes Jr.
Prerequisite: User Modifications
Two user-mods, ZP60014 and ZP60038, are REQUIRED to process CLIST symbolic variables via the API, IKJCT441, on MVS 3.8J. Otherwise, CUTIL00 is rendered useless!
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.
If IKJCT441 is not found when CUTIL00 executes, MVS38J will report a system error code 806-4 on program IKJCT441. CUTIL00 will not abend but gracefully terminate with an 806-4 error. This is by design.
Command Line Syntax
>CUTIL00 FUNCT VAR1 VAR2 QUOTE
Parameters must appear in order:
FUNCT required, function to be performed
VAR1 required, name of CLIST variable to be used by function
- not prefixed with an '&'
- variable must exist before invoking CUTIL00
- 1 to 8 bytes in length
- must follow CLIST variable naming conventions
VAR2 optional, name of CLIST variable to store results
or contains function parameters
- not prefixed with an '&'
- variable must exist before invoking CUTIL00
- 1 to 8 bytes in length
- must follow CLIST variable naming conventions
- Storing results
o If variable does not exist, it will be created
o If variable does exist, it will be updated
o If no variable is specified, use VAR1 variable for result
o If keyword '$NOVAR2' is specified, use VAR1 variable for result
# '$NOVAR2' used as a placeholder if VAR2 is not specified with
QUOTE option
- Function Parameters
o variable must exist before invoking CUTIL00
QUOTE optional, string content between first and last quote
comprise VAR1 value. Use this option to include leading or
trailing spaces in a string.
The following variable names provide additional information after
successful execution of CUTIL00:
&LASTCC contains return code from CUTIL00 after execution
&ERRMSG contains error message text for function executed
&var1L contains length of var1 after execution
&var2L contains length of var2 after execution
The above variables may not be declared by CUTIL00 if CUTIL00 abends
or does not execute. It is suggested initializing &ERRMSG,
&var1L and &var2L to NULLS before invoking CUTIL00 to prevent
undefined symbolic name errors.
Note: CLIST variable name length is 8 bytes max
Note: CLIST variable data length is 256 bytes max
List of Functions
*00 ABOUT - Display mySTAMP information * *01 LTRIM - remove leading spaces *02 RTRIM - remove trailing spaces *03 TRIM - remove leading and trailing *04 TRIM$ - remove leading, trailing, and duplicate spaces * *05 INDEX - Alias to FIND *06 INDEXB - Alias to FINDL * *07 ISNUM - Test for all numeric (0-9) *08 ISALPHA - Test for all alphabetic (A-Z,a-z) *09 ISLOWER - Test for all alphabetic Lower (a-z) *10 ISUPPER - Test for all alphabetic Upper (A-Z) *11 ISBLANK - Test for all blank (whitespace) *12 ISDSN - Test for valid MVS Dataset Name * *13 ECHO - Display string value *14 ECHOQ - Display string value surrounded by single quotes * *15 REVRS - Translate to reverse A-Z > Z-A, 0-9 > 9-0 * *16 UPPERC - Translate to uppercase *17 LOWERC - Translate to lowercase * *18 COUNT - Count occurrences of a search string LB1105z *18 FINDALL - Alias COUNT *19 FIND - Find starting position of FIRST search string *20 FINDL - Find starting position of LAST search string * *21 CENTER - Center content *22 LJUST - Left justify content *23 RJUST - Right justify content * *24 ZFILL - Zero fill after content is right justified *25 WORDS - Number of words (contiguous non-blank groups) *26 GEN# - Generate a 3 digit number (000-999) * *27 DD2DSN - Dataset name associated with DD name *28 JOBINFO - Job Information * *29 DAYSMM - Number of days in MM *30 DAYSYY - Number of days in CCYY (365 or 366) *31 ISLEAP - Test CCYY for leap year * *32 CYJ-D8 - Date Conversion CCYYJJJ to monthname DD, CCYY *33 CYJ-DAY - Date Conversion CCYYJJJ to day name *34 CYJ-DOW - Date Conversion CCYYJJJ to day of week number *35 CYJ-mdcy - Date Conversion CCYYJJJ to MMDDCCYY (any order) * *36 JCY-D8 - Date Conversion JJJCCYY to monthname DD, CCYY *37 JCY-DAY - Date Conversion JJJCCYY to day name *38 JCY-DOW - Date Conversion JJJCCYY to day of week number *39 JCY-mdcy - Date Conversion JJJCCYY to MMDDCCYY (any order) * *40 MDCY-D8 - Date Conversion MMDDCCYY to monthname DD, CCYY *41 MDCY-DAY - Date Conversion MMDDCCYY to day name *42 MDCY-DOW - Date Conversion MMDDCCYY to day of week number *43 MDCY-cyj - Date Conversion MMDDCCYY to CCYYJJJ (any order) * *44 DMCY-D8 - Date Conversion DDMMCCYY to monthname DD, CCYY *45 DMCY-DAY - Date Conversion DDMMCCYY to day name *46 DMCY-DOW - Date Conversion DDMMCCYY to day of week number *47 DMCY-cyj - Date Conversion DDMMCCYY to CCYYJJJ (any order) * *48 CYMD-D8 - Date Conversion CCYYMMDD to monthname DD, CCYY *49 CYMD-DAY - Date Conversion CCYYMMDD to day name *50 CYMD-DOW - Date Conversion CCYYMMDD to day of week number *51 CYMD-cyj - Date Conversion CCYYMMDD to CCYYJJJ (any order) * *52 CYDM-D8 - Date Conversion CCYYDDMM to monthname DD, CCYY *53 CYDM-DAY - Date Conversion CCYYDDMM to day name *54 CYDM-DOW - Date Conversion CCYYDDMM to day of week number *55 CYDM-cyj - Date Conversion CCYYDDMM to CCYYJJJ (any order) * *56 FILL - Fill VAR1 nnn times with delimiter * *57 LSTRIP - Remove leading delimiter *58 RSTRIP - Remove trailing delimiter *59 STRIP - Remove leading and trailing delimiter *60 STRIP$ - Remove all delimiter * *61 CONCAT - Concatenate two strings *62 UNSTR - Unstring into separate variables * *63 REPLACE - Replace substring in string *64 VEXIST - Test if CLIST Variable exists *65 TDSN - Generate temporary DSN nodes *66 NOW - Current system date and time *67 PAD - PAD string with delimiter to given length * *68 GET1V - Get single byte from position VAR1(nnn) LB1100c *69 PUT1V - Put single byte to position VAR1(nnn) LB1100d *70 MCAL - Monthly calendar string for MMDDCCYY LB1100e *71 MCALA - Monthly calendar string for MMDDCCYY w attributes LB1100e *72 LEN - Length of data in string LB1105a *73 SLEN - String defined length LB1105a *74 OVERLAY - Overlay string into VAR1 LB1105c *75 UTDSN - Generate user temporary DSN LB1105g *76 TRUNC - Truncate String LB1105h *77 ISHEX - Test for all hexadecimal (0-9,A-F) LB1106a *78 CC2H - Convert EBCDIC char-hex LB1106c *79 CH2C - Convert EBCDIC hex-char LB1106d *80 ISEVEN - Test numeric string for EVEN LB1106e * *
CLIST Examples for each function
EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *00| ABOUT | - | - | Display program stamp information. | * | | | | | * -------------------------------------------------------------------- * CUTIL00 ABOUT /* ABOUT */ * SET RC=&LASTCC /* RETURN CODE */ * * CUTIL00 MVS3.8J Vv.r.mm 02202020 mm/dd/yy @ hh.mm * | | | | | | * | | | | | | * +---+---+ +---+---+ +----+---+ * | | | * Program Name | Current * and Basis OS | Date/Time * | * Version/Date * * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * * EJECT * Functions: * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *01| LTRIM | req | opt | Remove leading spaces from variable | * | | | | VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * Statement Line: * * CUTIL00 LTRIM var1 var2 /* LTRIM */ * * o var1 must be declared before invoking utility * o var2 contains results, if specified. * Otherwise, var1 contains results. * o &LASTCC contains return code from CUTIL00 * o &ERRMSG contains error message information from CUTIL00 * o &var1L contains length of var1 * o &var2L contains length of var2, if var2 was specified * * * Example CLIST: * 0...0....1....1....2....2....3....3....4....4....5....5....6....6... * 1...5....0....5....0....5....0....5....0....5....0....5....0....5... * SET MYDATA=&STR( leading spaces) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 LTRIM MYDATA MYRESULT /* LTRIM */ * SET RC=&LASTCC /* RETURN CODE */ * WRITE CUTIL00 RC=&RC - &ERRMSG * WRITE MYDATAL =&MYDATAL MYDATA='&MYDATA' * WRITE MYRESULTL =&MYRESULTL MYRESULT='&MYRESULT' * CUTIL00 ECHOQ MYRESULT * /* */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' LEADING SPACES' * MYDATAL =17 * MYRESULT ='LEADING SPACES' * MYRESULTL=14 * * NOTE: MVS3.8J CLIST processor converts all characters to * UPPERCASE! While CUTIL00 can convert a string to * lowercase, the string will remain lowercase until * referenced in a CLIST. * * req - VAR name is required * opt - VAR name is optional * no - VAR name is not required EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *02| RTRIM | req | opt | Remove trailing spaces from variable | * | | | | VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(trailing spaces ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 RTRIM MYDATA MYRESULT /* RTRIM */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='TRAILING SPACES ' * MYDATAL =17 * MYRESULT ='TRAILING SPACES' * MYRESULTL=15 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *03| TRIM | req | opt | Remove leading and trailing spaces from | * | | | | variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR( trim my data ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 TRIM MYDATA MYRESULT /* TRIM */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' TRIM MY DATA ' * MYDATAL =17 * MYRESULT ='TRIM MY DATA' * MYRESULTL=15 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *04| TRIM$ | req | opt | Remove leading, trailing and duplicate | * | | | | spaces from variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR( trim my data ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 TRIM$ MYDATA MYRESULT /* TRIM$ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' TRIM MY DATA ' * MYDATAL =17 * MYRESULT ='TRIM MY DATA' * MYRESULTL=12 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *05| INDEX | req | opt | ALIAS to FIND, see FIND function. | * | (alias) | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(my, string, ok? ) /* INIT MYDATA */ * SET DLMTR=&STR(",") /* INIT DLMTR */ * SET MYDATAL = /* INIT MYDATAL */ * SET DLMTRL = /* INIT DLMTRL */ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 INDEX MYDATA DLMTR /* INDEX */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =3 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY, STRING, OK? ' * MYDATAL =18 * DLMTR ='","' * DLMTRL =3 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *06| INDEXB | req | opt | ALIAS to FINDL, see FINDL function. | * | (alias) | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(my, string, ok? ) /* INIT MYDATA */ * SET DLMTR=&STR(",") /* INIT DLMTR */ * SET MYDATAL = /* INIT MYDATAL */ * SET DLMTRL = /* INIT DLMTRL */ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 INDEXB MYDATA DLMTR /* INDEXB */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =11 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY, STRING, OK? ' * MYDATAL =18 * DLMTR ='","' * DLMTRL =3 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *07| ISNUM | req | no | Test variable VAR1 for all numeric | * | | | | values (0-9) returning a true-false | * | | | | indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * -------------------------------------------------------------------- * SET MYDATA=&STR(0123456789) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISNUM MYDATA /* ISNUM */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA ='0123456789' * MYDATAL =10 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *08| ISALPHA | req | no | Test variable VAR1 for all alphabetic | * | | | | values (A-Z,a-z) returning a true-false | * | | | | indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * -------------------------------------------------------------------- * SET MYDATA=&STR(abCDEfghiJ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISALPHA MYDATA /* ISALPHA */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA ='ABCDEFGHIJ' * MYDATAL =10 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *09| ISLOWER | req | no | Test variable VAR1 for all alphabetic | * | | | | lowercase (A-Z,a-z) returning a | * | | | | true-false indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * -------------------------------------------------------------------- * SET MYDATA=&STR(abcdefghij) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISLOWER MYDATA /* ISLOWER */ LB1100z * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4000 * ERRMSG ='FALSE ' * MYDATA ='ABCDEFGHIJ' * MYDATAL =10 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *10| ISUPPER | req | no | Test variable VAR1 for all alphabetic | * | | | | uppercase (A-Z) returning a true-false | * | | | | indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * -------------------------------------------------------------------- * SET MYDATA=&STR(ABCDEFGHIJ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISUPPER MYDATA /* ISUPPER */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA ='ABCDEFGHIJ' * MYDATAL =10 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *11| ISBLANK | req | no | Test variable VAR1 for all blank | * | | | | (spaces) returning a true-false | * | | | | indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR( ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISBLANK MYDATA /* ISBLANK */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA =' ' * MYDATAL =9 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *12| ISDSN | req | no | Test variable VAR1 for valid MVS | * | | | | dataset name returning a true-false | * | | | | indication. | * | | | | | * | | |------------------------------------------------| * | | | 0 5 1 1 2 2 3 3 4 4 | * | | | 1...5....0....5....0....5....0....5....0...4 | * | | | xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx | * | | | | * | | | MVS Dataset Naming standard: | * | | | - DSN is 1 to 44 bytes | * | | | - DSN can contain up to 22 segments | * | | | - DSN segment delimiter is a period (.) | * | | | - Each segment is 1-8 bytes | * | | | - Byte 1-1 in segment is A-Z #@$ | * | | | - Byte 2-8 in segment is A-Z #@$ 0-9 | * | | | - Case-sensitive, upper case | * | | |------------------------------------------------| * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(A.A1234567) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISDSN MYDATA /* ISDSN */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA ='A.A1234567' * MYDATAL =10 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *13| ECHO | req | no | Display variable VAR1 value on screen. | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(my data to display.) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ECHO MYDATA /* ECHO */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY DATA TO DISPLAY.' * MYDATAL =19 * MYRESULT ='' * MYRESULTL=0 * CUTIL00 ECHO of MYRESULT =MY DATA TO DISPLAY. * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *14| ECHOQ | req | no | Display variable VAR1 value on screen | * | | | | with content in quotes. | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(my data to display.) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ECHOQ MYDATA /* ECHOQ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY DATA TO DISPLAY.' * MYDATAL =19 * MYRESULT ='' * MYRESULTL=0 * CUTIL00 ECHOQ of MYRESULT ='MY DATA TO DISPLAY.' * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *15| REVRS | req | opt | Reverse letters and numbers in variable | * | | | | VAR1. | * | | | | | * | | | | A-Z translate to Z-A | * | | | | a-z translate to z-a | * | | | | 0-9 translate to 9-0 | * | | | | Others translate to blank (space) | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(ABCDEFGHIJKLM96%QRS) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 REVRS MYDATA MYRESULT /* REVRS */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='ABCDEFGHIJKLM96%QRS' * MYDATAL =19 * MYRESULT ='ZYXWVUTSRQPON03 JIH' * MYRESULTL=19 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *16| UPPERC | req | opt | Translate content to uppercase in | * | | | | variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(abCdeFgHIJklmnopqrS) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 UPPERC MYDATA /* UPPERC */ * SET RC=&LASTCC /* RETURN CODE */ * CUTIL00 ECHOQ MYRESULT /* ECHOQ */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='ABCDEFGHIJKLMNOPQRS' * MYDATAL =19 * MYRESULT ='' * MYRESULTL=0 * CUTIL00 ECHOQ of MYRESULT ='ABCDEFGHIJKLMNOPQRS' * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *17| LOWERC | req | opt | Translate content to lowercase in | * | | | | variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(abCdeFgHIJklmnopqrS) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 LOWERC MYDATA MYRESULT /* LOWERC */ * SET RC=&LASTCC /* RETURN CODE */ * CUTIL00 ECHOQ MYRESULT /* ECHOQ */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='ABCDEFGHIJKLMNOPQRS' * MYDATAL =19 * MYRESULT ='ABCDEFGHIJKLMNOPQRS' * MYRESULTL=19 * CUTIL00 ECHOQ of MYRESULT ='ABCDEFGHIJKLMNOPQRS' * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *18| COUNT | req | req | Count occurrences of a search string | LB1105z * | | | | in variable VAR1. | *18| FINDALL | | | | * | (alias) | | | RC=occurrence count | LB1105z * | | | | occurrence count of 0 = NOT FOUND | LB1105z * | | | | | * | | | | VAR2 contains Search Parms -------------| * | | | | Format: "sssssss",bbb,eee | * | | | | | * | | | | s - search string in double quotes | * | | | | b - optional, beginning search position| LB1100z * | | | | 1-3 numeric digits, default=1 | * | | | | If b > VAR1 len, b = 1. | LB1105z * | | | | e - optional, ending search position | * | | | | 1-3 numeric digits, default=end | * | | | | If e > VAR1 len, e = VAR1 len. | LB1105z * | | | | Parms separated by commas (,) | * | | | | | * | | | | Note: If VAR2 not specified, defaults | * | | | | are applied including search | * | | | | string of one BLANK (" ") | * -------------------------------------------------------------------- * SET MYDATA=&STR(My name is Dino, big Dino.) /* INIT MYDATA */ * SET SRCHPRMS = &STR("Dino") /* INIT SRCHPRMS */ * SET MYDATAL = /* INIT MYDATAL */ * SET SRCHPRMSL= /* INIT SRCHPRMSL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 COUNT MYDATA SRCHPRMS /* COUNT */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =2 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY NAME IS DINO, BIG DINO.' * MYDATAL =26 * SRCHPRMS ='"DINO"' * SRCHPRMSL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *19| FIND | req | req | Find starting position of FIRST search | * | | | | string occurrence in variable VAR1. | LB1105z *05| INDEX | | | | * | (alias) | | | RC=position, relative to 1 | * | | | | position of 0 = NOT FOUND | * | | | | | * | | | | VAR2 contains Search Parms -------------| * | | | | Format: "sssssss",bbb,eee | * | | | | | * | | | | s - search string in double quotes | * | | | | b - optional, beginning search position| LB1100z * | | | | 1-3 numeric digits, default=1 | * | | | | If b > VAR1 len, b = 1. | LB1105z * | | | | e - optional, ending search position | * | | | | 1-3 numeric digits, default=end | * | | | | If e > VAR1 len, e = VAR1 len. | LB1105z * | | | | Parms separated by commas (,): | * | | | | | LB1100z * | | | | Note: If VAR2 not specified, defaults | LB1100z * | | | | are applied including search | LB1100z * | | | | string of one BLANK (" ") | LB1100z * -------------------------------------------------------------------- * SET MYDATA=&STR(My name is Dino, big Dino.) /* INIT MYDATA */ * SET SRCHPRMS = &STR("Dino") /* INIT SRCHPRMS */ * SET MYDATAL = /* INIT MYDATAL */ * SET SRCHPRMSL= /* INIT SRCHPRMSL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 FIND MYDATA SRCHPRMS /* FIND */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =12 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY NAME IS DINO, BIG DINO.' * MYDATAL =26 * SRCHPRMS ='"DINO"' * SRCHPRMSL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *20| FINDL | req | req | Find starting position of LAST search | * | | | | string occurrence in variable VAR1. | LB1105z *06| INDEXB | | | | * | (alias) | | | RC=position, relative to 1 | * | | | | position of 0 = NOT FOUND | * | | | | | * | | | | VAR2 contains Search Parms -------------| * | | | | Format: "sssssss",bbb,eee | * | | | | | * | | | | s - search string in double quotes | * | | | | b - optional, beginning search position| LB1100z * | | | | 1-3 numeric digits, default=1 | * | | | | If b > VAR1 len, b = 1. | LB1105z * | | | | e - optional, ending search position | * | | | | 1-3 numeric digits, default=end | * | | | | If e > VAR1 len, e = VAR1 len. | LB1105z * | | | | Parms separated by commas (,): | * | | | | | LB1100z * | | | | Note: If VAR2 not specified, defaults | LB1100z * | | | | are applied including search | LB1100z * | | | | string of one BLANK (" ") | LB1100z * -------------------------------------------------------------------- * SET MYDATA=&STR(My name is Dino, big Dino.) /* INIT MYDATA */ * SET SRCHPRMS = &STR("Dino") /* INIT SRCHPRMS */ * SET MYDATAL = /* INIT MYDATAL */ * SET SRCHPRMSL= /* INIT SRCHPRMSL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 FINDL MYDATA SRCHPRMS /* FINDL */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =22 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='MY NAME IS DINO, BIG DINO.' * MYDATAL =26 * SRCHPRMS ='"DINO"' * SRCHPRMSL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *21| CENTER | req | opt | Center content in variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(Center this T E X T ... ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CENTER MYDATA MYRESULT /* CENTER */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='CENTER THIS T E X T ... ' * MYDATAL =30 * MYRESULT =' CENTER THIS T E X T ... ' * MYRESULTL=30 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *22| LJUST | req | opt | Left justify content in variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR( JUSTIFY this text ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 LJUST MYDATA MYRESULT /* LJUST */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' JUSTIFY THIS TEXT ' * MYDATAL =22 * MYRESULT ='JUSTIFY THIS TEXT ' * MYRESULTL=22 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *23| RJUST | req | opt | Right justify content in variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR( JUSTIFY this text ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 RJUST MYDATA MYRESULT /* RJUST */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' JUSTIFY THIS TEXT ' * MYDATAL =22 * MYRESULT =' JUSTIFY THIS TEXT' * MYRESULTL=22 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *24| ZFILL | req | opt | Zero fill after content is right | * | | | | justified in variable VAR1. | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(12 ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ZFILL MYDATA MYRESULT /* ZFILL */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='12 ' * MYDATAL =5 * MYRESULT ='00012' * MYRESULTL=5 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *25| WORDS | req | no | Number of words (contiguous non-blank | * | | | | groups) in variable VAR1. | * | | | | | * | | | | RC=count | * -------------------------------------------------------------------- * SET MYDATA=&STR( one two three33 four., five ) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 WORDS MYDATA /* WORDS */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =5 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =' ONE TWO THREE33 FOUR., FIVE ' * MYDATAL =30 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *26| GEN# | req | no | Generate a 3-digit number and return | * | | | | in variable VAR1. | * -------------------------------------------------------------------- * SET MYDATA=0 /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 GEN# MYDATA /* GEN# */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='515' * MYDATAL =3 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *27| DD2DSN | req | req | Dataset name associated with DD name. | * | | | | | * | | | | RC=8 DD not found | * | | | | | * | | | | VAR1 contains DD name | * | | | | note: Case-sensitive, upper case | * | | | | VAR2 contains Dataset name as result | * -------------------------------------------------------------------- * SET MYDATA=&STR(TEMPJCL) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DD2DSN MYDATA MYRESULT /* DD2DSN */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='SYSPROC' * MYDATAL =7 * MYRESULT ='SYS2.CMDPROC' * MYRESULTL=12 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *28| JOBINFO | req | no | Return JOB INFORMATION in variable | * | | | | VAR1 as follows: | * | | | | | * | | | | VAR1 Pos Batch TSO Online TSO | * | | | | ---------- --------- ---------- | * | | | | byte 01-08 JOB NAME TSO Userid | * | | | | byte 09-16 JOB PROC TSO PROC | * | | | | byte 17-24 JOB STEP TSO LOGON PROC | * -------------------------------------------------------------------- * SET MYDATA= /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 JOBINFO MYDATA /* JOBINFO */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='HERC01 IKJACCNTTSOLOGON' * MYDATAL =24 * MYRESULT ='' * MYRESULTL=0 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *29| DAYSMM | req | no | Number of days in month (MMCCYY). | * | | | | | * | | | | RC=Number of days (1-31) | * | | | | | * | | | | VAR1 contains month in the | * | | | | format of MMCCYY. | * | | | | | * | | | | Leap year is considered. | * | | | | | * | | | | For example, if MM is FEB and CCYY is | * | | | | a leap year, number of days are 29, | * | | | | else, 28. | * -------------------------------------------------------------------- * SET MYDATA=&STR(022016) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DAYSMM MYDATA /* DAYSMM */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =29 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='022016' * MYDATAL =6 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *30| DAYSYY | req | no | Number of days in year (CCYY). | * | | | | | * | | | | RC=Number of days (365 or 366) | * | | | | | * | | | | VAR1 contains century and year in the | LB1100z * | | | | format of CCYY. | * | | | | | * | | | | Leap year is considered. | * | | | | | * | | | | For example, if CCYY is a leap year, | * | | | | number of days is 366, else 365. | * -------------------------------------------------------------------- * SET MYDATA=&STR(2020) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DAYSYY MYDATA /* DAYSYY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =366 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='2020' * MYDATAL =4 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *31| ISLEAP | req | no | Test for leap year of variable VAR1 | * | | | | in the format (CCYY) returning a | * | | | | true-false indication. | * | | | | | * | | | | RC=4000 &ERRMSG='FALSE' | * | | | | RC=4001 &ERRMSG='TRUE' | * -------------------------------------------------------------------- * SET MYDATA=&STR(2020) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 ISLEAP MYDATA /* ISLEAP */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4001 * ERRMSG ='TRUE ' * MYDATA ='2020' * MYDATAL =4 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *32| CYJ-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYJJJ to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(2020061) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYJ-D8 MYDATA MYRESULT /* CYJ-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='2020061' * MYDATAL =7 * MYRESULT ='MARCH 01, 2020' * MYRESULTL=14 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *33| CYJ-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYJJJ to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(1981061) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYJ-DAY MYDATA MYRESULT /* CYJ-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1981061' * MYDATAL =7 * MYRESULT ='MONDAY' * MYRESULTL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *34| CYJ-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYJJJ to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(1980061) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYJ-DOW MYDATA MYRESULT /* CYJ-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1980061' * MYDATAL =7 * MYRESULT ='6' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *35| CYJ-MDCY*| req | opt | Convert date in variable VAR1 in | * | | | | format CCYYJJJ to MMDDCCYY. | * | | | | | * |*MDCY can | | | For example- | * | be in any| | | CYJ-MDY convert CCYYJJJ to MMDDYY | * | order | | | CYJ-CYDM convert CCYYJJJ to CCYYDDMM | * | | | | | * | | | | MM - 2 digit month (01-12) | * | | | | DD - 2 digit date (01-31) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(2020061) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYJ-MDCY MYDATA MYRESULT /* CYJ-MDCY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='2020061' * MYDATAL =7 * MYRESULT ='03012020' * MYRESULTL=8 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *36| JCY-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format JJJCCYY to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(1612017) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 JCY-D8 MYDATA MYRESULT /* JCY-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1612017' * MYDATAL =7 * MYRESULT ='JUNE 10, 2017' * MYRESULTL=13 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *37| JCY-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format JJJCCYY to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(0611981) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 JCY-DAY MYDATA MYRESULT /* JCY-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='0611981' * MYDATAL =7 * MYRESULT ='MONDAY' * MYRESULTL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *38| JCY-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format JJJCCYY to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(0611981) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 JCY-DOW MYDATA MYRESULT /* JCY-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='0611981' * MYDATAL =7 * MYRESULT ='1' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *39| JCY-MDCY*| req | opt | Convert date in variable VAR1 in | * | | | | format JJJCCYY to MMDDCCYY. | * | | | | | * |*MDCY can | | | For example- | * | be in any| | | JCY-MDY convert JJJCCYY to MMDDYY | * | order | | | JCY-CYDM convert JJJCCYY to CCYYDDMM | * | | | | | * | | | | MM - 2 digit month (01-12) | * | | | | DD - 2 digit date (01-31) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(1612017) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 JCY-MDCY MYDATA MYRESULT /* JCY-MDCY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1612017' * MYDATAL =7 * MYRESULT ='06102017' * MYRESULTL=8 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *40| MDCY-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format MMDDCCYY to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(12101990) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 MDCY-D8 MYDATA MYRESULT /* MDCY-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='12101990' * MYDATAL =8 * MYRESULT ='DECEMBER 10, 1990' * MYRESULTL=17 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *41| MDCY-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format MMDDCCYY to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(12101990) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 MDCY-DAY MYDATA MYRESULT /* MDCY-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='12101990' * MYDATAL =8 * MYRESULT ='MONDAY' * MYRESULTL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *42| MDCY-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format MMDDCCYY to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(12101990) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 MDCY-DOW MYDATA MYRESULT /* MDCY-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='12101990' * MYDATAL =8 * MYRESULT ='1' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *43| MDCY-CYJ*| req | opt | Convert date in variable VAR1 in | * | | | | format MMDDCCYY to CCYYJJJ. | * | | | | | * |*CYJ can | | | For example- | * | be in any| | | MDCY-YJ convert MMDDCCYY to YYJJJ | * | order | | | MDCY-J convert MMDDCCYY to JJJ | * | | | | | * | | | | JJJ- 3 digit julian day (1-366) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(12101990) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 MDCY-CYJ MYDATA MYRESULT /* MDCY-CYJ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='12101990' * MYDATAL =8 * MYRESULT ='1990344' * MYRESULTL=7 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *44| DMCY-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format DDMMCCYY to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(15071987) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DMCY-D8 MYDATA MYRESULT /* DMCY-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='15071987' * MYDATAL =8 * MYRESULT ='JULY 15, 1987' * MYRESULTL=13 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *45| DMCY-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format DDMMCCYY to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(15071987) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DMCY-DAY MYDATA MYRESULT /* DMCY-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='15071987' * MYDATAL =8 * MYRESULT ='WEDNESDAY' * MYRESULTL=9 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *46| DMCY-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format DDMMCCYY to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(15071987) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DMCY-DOW MYDATA MYRESULT /* DMCY-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='15071987' * MYDATAL =8 * MYRESULT ='3' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *47| DMCY-CYJ*| req | opt | Convert date in variable VAR1 in | * | | | | format DDMMCCYY to CCYYJJJ. | * | | | | | * |*CYJ can | | | For example- | * | be in any| | | DMCY-YJ convert DDMMCCYY to YYJJJ | * | order | | | DMCY-J convert DDMMCCYY to JJJ | * | | | | | * | | | | JJJ- 3 digit julian day (1-366) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(15071987) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 DMCY-CYJ MYDATA MYRESULT /* DMCY-CYJ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='15071987' * MYDATAL =8 * MYRESULT ='1987196' * MYRESULTL=7 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *48| CYMD-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYMMDD to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951231) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYMD-D8 MYDATA MYRESULT /* CYMD-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951231' * MYDATAL =8 * MYRESULT ='DECEMBER 31, 1995' * MYRESULTL=17 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *49| CYMD-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYMMDD to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951231) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYMD-DAY MYDATA MYRESULT /* CYMD-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951231' * MYDATAL =8 * MYRESULT ='SUNDAY' * MYRESULTL=6 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *50| CYMD-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYMMDD to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951231) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYMD-DOW MYDATA MYRESULT /* CYMD-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951231' * MYDATAL =8 * MYRESULT ='0' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *51| CYMD-CYJ*| req | opt | Convert date in variable VAR1 in | * | | | | format CCYYMMDD to CCYYJJJ. | * | | | | | * |*CYJ can | | | For example- | * | be in any| | | CYMD-YJ convert CCYYMMDD to YYJJJ | * | order | | | CYMD-J convert CCYYMMDD to JJJ | * | | | | | * | | | | JJJ- 3 digit julian day (1-366) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951231) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYMD-CYJ MYDATA MYRESULT /* CYMD-CYJ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951231' * MYDATAL =8 * MYRESULT ='1995365' * MYRESULTL=7 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *52| CYDM-D8 | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYDDMM to monthname DD, CCYY | * | | | | where: | * | | | | monthname - Full month name (see below) | * | | | | DD - 2 digit date (01-31) | * | | | | CCYY - 4 digit century and year | * | | | | | * | | | | Monthnames: | * | | | | 01-January 02-February 03-March | * | | | | 04-April 05-May 06-June | * | | | | 07-July 08-August 09-September | * | | | | 10-October 11-November 12-December | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951605) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYDM-D8 MYDATA MYRESULT /* CYDM-D8 */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951605' * MYDATAL =8 * MYRESULT ='MAY 16, 1995' * MYRESULTL=12 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *53| CYDM-DAY | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYDDMM to weekday name. | * | | | | | * | | | | Weekday Name: | * | | | | Sunday, Monday, Tuesday, Wednesday | * | | | | Thursday, Friday, Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951605) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYDM-DAY MYDATA MYRESULT /* CYDM-DAY */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951605' * MYDATAL =8 * MYRESULT ='TUESDAY' * MYRESULTL=7 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *54| CYDM-DOW | req | opt | Convert date in variable VAR1 in | * | | | | format CCYYDDMM to weekday number. | * | | | | | * | | | | Weekday Number: | * | | | | 0-6 | * | | | | | * | | | | Weekday Number to Weekday Name: | * | | | | 0-Sunday 1-Monday 2-Tuesday | * | | | | 3-Wednesday 4-Thursday 5-Friday | * | | | | 6-Saturday | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951605) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYDM-DOW MYDATA MYRESULT /* CYDM-DOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951605' * MYDATAL =8 * MYRESULT ='2' * MYRESULTL=1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *55| CYMD-CYJ*| req | opt | Convert date in variable VAR1 in | * | | | | format CCYYDDMM to CCYYJJJ. | * | | | | | * |*CYJ can | | | For example- | * | be in any| | | CYDM-YJ convert CCYYDDMM to YYJJJ | * | order | | | CYDM-J convert CCYYDDMM to JJJ | * | | | | | * | | | | JJJ- 3 digit julian day (1-366) | * | | | | CC - 2 digit century | * | | | | YY - 2 digit year | * | | | | | * | | | | If VAR2 is omitted, results will be | * | | | | placed into VAR1. | * -------------------------------------------------------------------- * SET MYDATA=&STR(19951605) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CYMD-CYJ MYDATA MYRESULT /* CYMD-CYJ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='19951605' * MYDATAL =8 * MYRESULT ='1995136' * MYRESULTL=7 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *56| FILL | req | req | Fill variable VAR1 with a delimiter | * | | | | value n times. | * | | | | | * | | | | VAR1 - variable for result | * | | | | | * | | | | VAR2 contains Fill Parms ---------------| * | | | | Format: cnnn | * | | | | | * | | | | c - single byte character | * | | | | default=blank | LB1100z * | | | | n - length of fill content, 1-3 digits | * | | | | valid length values, 1-256 | * | | | | default=1 | * -------------------------------------------------------------------- * SET MYDATA=&STR(02281980) /* INIT MYDATA */ * SET MYPARMS =&STR(*20) /* INIT MYPARMS */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYPARMSL = /* INIT MYPARMSL */ LB1100z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 FILL MYDATA MYPARMS /* FILL */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='********************' * MYDATAL =20 * MYPARMS ='*20' * MYPARMSL =3 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *57| LSTRIP | req | opt | Remove leading delimiter from variable | * | | | | VAR1. | * | | | | | * | | | | VAR1 will contain result | * | | | | | * | | | | VAR2 contains delimiter ----------------| * | | | | Format: c | * | | | | | * | | | | c - single byte character delimiter | * | | | | default=BLANK, if not specified | * -------------------------------------------------------------------- * SET MYDATA=&STR(,,28,BC,) /* INIT MYDATA */ * SET MYDELIM=&STR(,) /* INIT MYDELIM */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYDELIML= /* INIT MYDELIML */ LB1100z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 LSTRIP MYDATA MYDELIM /* LSTRIP */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='28,BC,' * MYDATAL =6 * MYDELIM =',' * MYDELIML =1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *58| RSTRIP | req | opt | Remove trailing delimiter from variable | * | | | | VAR1. | * | | | | | * | | | | VAR1 will contain result | * | | | | | * | | | | VAR2 contains delimiter ----------------| * | | | | Format: c | * | | | | | * | | | | c - single byte character delimiter | * | | | | default=BLANK, if not specified | * -------------------------------------------------------------------- * SET MYDATA=&STR(,,28,BC,) /* INIT MYDATA */ * SET MYDELIM =&STR(,) /* INIT MYDELIM */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYDELIML = /* INIT MYDELIML */ LB1100z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 RSTRIP MYDATA MYDELIM /* RSTRIP */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA =',,28,BC' * MYDATAL =7 * MYDELIM =',' * MYDELIML =1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *59| STRIP | req | opt | Remove leading and trailing delimiter | * | | | | from variable VAR1. | * | | | | | * | | | | VAR1 will contain result | * | | | | | * | | | | VAR2 contains delimiter ----------------| * | | | | Format: c | * | | | | | * | | | | c - single byte character delimiter | * | | | | default=BLANK, if not specified | * -------------------------------------------------------------------- * SET MYDATA=&STR(,,28,BC,) /* INIT MYDATA */ * SET MYDELIM =&STR(,) /* INIT MYDELIM */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYDELIML = /* INIT MYDELIML */ LB1100z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 STRIP MYDATA MYDELIM /* STRIP */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='28,BC' * MYDATAL =5 * MYDELIM =',' * MYDELIML =1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *60| STRIP$ | req | opt | Remove all delimiter values from | * | | | | variable VAR1. | * | | | | | * | | | | VAR1 will contain result | * | | | | | * | | | | VAR2 contains delimiter ----------------| * | | | | Format: c | * | | | | | * | | | | c - single byte character delimiter | * | | | | default=BLANK, if not specified | * -------------------------------------------------------------------- * SET MYDATA=&STR(,,28,BC,) /* INIT MYDATA */ * SET MYDELIM =&STR(,) /* INIT MYDELIM */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYDELIML = /* INIT MYDELIML */ LB1100z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 STRIP$ MYDATA MYDELIM /* STRIP$ */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='28BC' * MYDATAL =4 * MYDELIM =',' * MYDELIML =1 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *61| CONCAT | req | req | Concatenate VAR1 and VAR2 into variable | * | | | | VAR1. | * | | | | | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(String data 1.) /* INIT MYDATA */ * SET MYRESULT=&STR(A result string 2.) /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 CONCAT MYDATA MYRESULT /* CONCAT */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='String data 1.A result string 2.' * MYDATAL =32 * MYRESULT ='A result string 2.' * MYRESULTL=18 * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *62| UNSTR | req | opt | Unstring content in variable VAR1 into | * | | | | separate variables (VAR1n) based on a | * | | | | 1-byte delimiter. | * | | | | | * | | | | VAR1 contains content for unstring. | * | | | | | * | | | | VAR2 contains delimiter ----------------| * | | | | Format: c | * | | | | | * | | | | c - single byte character delimiter | * | | | | default=BLANK, if not specified | * | | | | | * | | | | VAR10 contains number of variables | * | | | | | * | | | | VAR10,1,2,3,4,5,6,7,8,9,10,11 to 99 | * | | | | are possible variable names with | * | | | | representing unstringed values. | * -------------------------------------------------------------------- * SET MYDATA=&STR(1234567 AND SO ON . I AM 78 LONG. ) /* MYDATA */ * SET MYRESULT=&STR(7) /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 UNSTR MYDATA MYRESULT /* UNSTR */ LB1100z * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1234567 AND SO ON . I AM 78 LONG. ' * MYDATAL =34 * MYRESULT ='7' * MYRESULTL=1 * MYDATA0 = '003' * MYDATA1 = '123456' * MYDATA2 = ' AND SO ON . I AM ' * MYDATA3 = '8 LONG. ' * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *63| REPLACE | req | req | Replace substring in string | LB1100z * | | | | | * | | | | RC=occurrence count | LB1105z * | | | | occurrence count of 0 = NOT FOUND | LB1105z * | | | | | * | | | | VAR1 contains content for replace. | * | | | | | * | | | | VAR2 contains Search Parms -------------| * | | | | Format: "ssss","rrrrr",bbb,eee | * | | | | | * | | | | s - search string in double quotes | * | | | | r - replace string in double quotes | * | | | | b - optional, beginning search position| LB1100z * | | | | 1-3 numeric digits, default=1 | * | | | | e - optional, ending search position | * | | | | 1-3 numeric digits, default=end | * | | | | Parms separated by commas (,): | * | | | | | * | | | | RC=4032 Start > End | LB1105f * | | | | one of the following errors: | LB1105f * | | | | - start pos > end pos | LB1105f * | | | | - start pos > VAR1 len | LB1105f * | | | | - end pos > VAR1 len | LB1105f * -------------------------------------------------------------------- * SET MYDATA=&STR(1234567 AND SO ON . I AM 7879.) /* INIT MYDATA */ * SET MYRLPARM=&STR("SO ON ","890123456--") /* INIT MYRLPARM */ LB1105z * SET MYDATAL = /* INIT MYDATAL */ * SET MYRLPARML= /* INIT MYRLPARML*/ LB1105z * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 REPLACE MYDATA MYRLPARM /* REPLACE */ LB1105z * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='1234567 AND 890123456--. I AM 7879.' * MYDATAL =35 * MYRLPARM ='"SO ON ","890123456--"' LB1105z * MYRLPARML=22 LB1105z * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *64| VEXIST | req | no | Test for existence of VAR1 variable. | * | | | | Results in return code (RC). | * | | | | | * | | | | RC=nnn Length of variable | * | | | | RC=4000 Variable NOT found | * | | | | | * | | | | No content of variable is returned. | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(TEST) /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 VEXIST MYDATA /* VEXIST */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =4 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='TEST' * MYDATAL =4 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *65| TDSN | req | no | Generate temporary DSN nodes formatted | * | | | | as 'Dyyddd.Thhmmss' concatenated to | * | | | | end of VAR1 variable. | * | | | | | * | | | | Note: A period '.' may be placed before | * | | | | the date and time nodes should one not | * | | | | exist in the provided variable VAR1. | * | | | | | * -------------------------------------------------------------------- * SET MYDATA=&STR(HERC01.CARDS) /* INIT MYDATA */ LB1100z * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 TDSN MYDATA /* TDSN */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='HERC01.CARDS.D19231.T183011' * MYDATAL =27 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *66| NOW | req | no | Current system date and time returned | * | | | | in variable VAR01. | * | | | | | * | | | | Format: | * | | | | 'MM/DD/CCYY.JJJ HH:MM:SS.TT N nnnnnnnnn'| * | | | | where - | LB1100z * | | | | MM/DD/CCYY Date | LB1100z * | | | | HH:MM:SS.TT Day of Week number | LB1100z * | | | | N Day of Week number | LB1100z * | | | | nnnnnnnnn Day Name | LB1100z * -------------------------------------------------------------------- * SET MYDATA= /* INIT MYDATA */ * SET MYRESULT= /* INIT MYRESULT */ * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 NOW MYDATA /* NOW */ * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='03/29/2020.089 21:07:26.42 0 SUNDAY ' * MYDATAL =38 * MYRESULT ='' * MYRESULTL= * EJECT * -------------------------------------------------------------------- * | Function | VAR1 | VAR2 | Description | * +----------+------+------+-----------------------------------------+ *67| PAD | req | req | Pad current string with delimiter | * | | | | for a given length. | * | | | | | * | | | | VAR1 - variable for result | * | | | | | * | | | | VAR2 contains PAD Parms ----------------| LB1100z * | | | | Format: cnnn | * | | | | | * | | | | c - single byte character | * | | | | default=blank | LB1100z * | | | | n - resulting length, 1-3 digits | * | | | | valid length values, 1-256 | * | | | | default=1 | * | | | | Note: No padding will occur when | * | | | | resulting length less than or | * | | | | equal to VAR1 length | * | | | | | * | | | | | * | | | | RC=4040 Invalid Length | * | | | | one of the following errors: | * | | | | - VAR2 contains more than 4 | * | | | | characters per above format | * | | | | - nnn is zero | * | | | | - VAR2 is null | * | | | | - resulting string > 256 bytes | * -------------------------------------------------------------------- * SET MYDATA=&STR(PAD ME TO 30 LONG) /* INIT MYDATA */ LB1100z * SET MYRESULT=&STR(.30) /* INIT MYRESULT */ LB1100z * SET MYDATAL = /* INIT MYDATAL */ * SET MYRESULTL= /* INIT MYRESULTL*/ * SET ERRMSG = /* INIT ERRMSG */ * CUTIL00 PAD MYDATA MYRESULT /* PAD */ LB1100z * SET RC=&LASTCC /* RETURN CODE */ * * Results: RC =0 * ERRMSG ='SUCCESSFUL REQUEST ' * MYDATA ='PAD ME TO 30 LONG.............' LB1100z * MYDATAL =30 * MYRESULT ='.30' LB1100z * MYRESULTL=3 * EJECT LB1100c * -------------------------------------------------------------------- LB1100c * | Function | VAR1 | VAR2 | Description | LB1100c * +----------+------+------+-----------------------------------------+ LB1100c *68| GET1V | req | req | Get single byte from position VAR1(nnn) | LB1100c * | | | | | LB1100c * | | | | VAR1 - variable | LB1100c * | | | | | LB1100c * | | | | VAR2 contains GET1V Parms --------------| LB1100c * | | | | Format: cnnn | LB1100c * | | | | | LB1100c * | | | | c - single character RETURNED from | LB1100c * | | | | VAR1 at position n | LB1100c * | | | | default=blank | LB1100c * | | | | n - position within VAR1, , 1-3 digits | LB1100c * | | | | valid length values, 1-256 | LB1100c * | | | | default=1 | LB1100c * | | | | max=length of VAR1 | LB1100c * | | | | | LB1100c * | | | | RC=4040 Invalid Length | LB1100c * | | | | one of the following errors: | LB1100c * | | | | - nnn more than 3 digits per | LB1100c * | | | | above format | LB1100c * | | | | - nnn is zero | LB1100c * | | | | - nnn > VAR1 length | LB1100c * | | | | - resulting string > 256 bytes | LB1100c * -------------------------------------------------------------------- LB1100c * SET MYDATA=&STR(THE TABLE TOP IS CLEAR) /* INIT MYDATA */ LB1100c * SET MYDATAL = /* INIT MYDATAL */ LB1100c * SET MYPEEK =&STR(x11) /* INIT MYPEEK */ LB1100c * SET MYPEEKL= /* INIT MYPEEKL */ LB1100c * SET ERRMSG = /* INIT ERRMSG */ LB1100c * CUTIL00 GET1V MYDATA MYPEEK /* GET1V */ LB1100c * SET RC=&LASTCC /* RETURN CODE */ LB1100c * LB1100c * Results: RC =0 LB1100c * ERRMSG ='SUCCESSFUL REQUEST ' LB1100c * MYDATA ='THE TABLE TOP IS CLEAR' LB1100c * MYDATAL =22 LB1100c * MYPEEK ='T11' LB1100c * MYPEEKL =3 LB1100c * LB1100c EJECT LB1100d * -------------------------------------------------------------------- LB1100d * | Function | VAR1 | VAR2 | Description | LB1100d * +----------+------+------+-----------------------------------------+ LB1100d *69| PUT1V | req | req | Put single byte to position VAR1(nnn) | LB1100d * | | | | | LB1100d * | | | | VAR1 - variable | LB1100d * | | | | | LB1100d * | | | | VAR2 contains PUT1V Parms --------------| LB1100d * | | | | Format: cnnn | LB1100d * | | | | | LB1100d * | | | | c - single character OVERLAID into | LB1100d * | | | | VAR1 at position n | LB1100d * | | | | default=blank | LB1100d * | | | | n - position within VAR1, , 1-3 digits | LB1100d * | | | | valid length values, 1-256 | LB1100d * | | | | default=1 | LB1100d * | | | | max=length of VAR1 | LB1100d * | | | | | LB1100d * | | | | RC=4040 Invalid Length | LB1100d * | | | | one of the following errors: | LB1100d * | | | | - nnn more than 3 digits per | LB1100d * | | | | above format | LB1100d * | | | | - nnn is zero | LB1100d * | | | | - nnn > VAR1 length | LB1100d * | | | | - resulting string > 256 bytes | LB1100d * -------------------------------------------------------------------- LB1100d * SET MYDATA=&STR(THE TABLE TOP IS CLEAR) /* INIT MYDATA */ LB1100d * SET MYDATAL = /* INIT MYDATAL */ LB1100d * SET MYPOKE =&STR(N22) /* INIT MYPOKE */ LB1100d * SET MYPOKEL= /* INIT MYPOKEL */ LB1100d * SET ERRMSG = /* INIT ERRMSG */ LB1100d * CUTIL00 PUT1V MYDATA MYPOKE /* PUT1V */ LB1100d * SET RC=&LASTCC /* RETURN CODE */ LB1100d * LB1100d * Results: RC =0 LB1100d * ERRMSG ='SUCCESSFUL REQUEST ' LB1100d * MYDATA ='THE TABLE TOP IS CLEAN' LB1100d * MYDATAL =22 LB1100d * MYPEEK ='N22' LB1100d * MYPEEKL =3 LB1100d * LB1100d EJECT LB1100e * -------------------------------------------------------------------- LB1100e * | Function | VAR1 | VAR2 | Description | LB1100e * +----------+------+------+-----------------------------------------+ LB1100e *70| MCAL | req | opt | Monthly calendar given MMDDCCYY. | LB1100e * | | | | | LB1100e * | | | | Result is 168 bytes in length and | LB1100e * | | | | may be displayed in 21-byte segments | LB1100e * | | | | to give calendar appearance (8-rows): | LB1100e * | | | | | LB1100e * | | | | 0 1 2 | LB1100e * | | | | 1...5....0....5....0. | LB1100e * | | | | | LB1100e * | | | | / December 2018 349 | LB1106z * | | | | / S M T W T F S | LB1100e * | | | | / . . . . . . 1 | LB1100e * | | | |Result { 2 3 4 5 6 7 8 | LB1100e * | | | | \ 9 10 11 12 13 14@15 | LB1100e * | | | | \ 16 17 18 19 20 21 22 | LB1100e * | | | | \ 23 24 25 26 27 28 29 | LB1100e * | | | | \ 30 31 . | LB1100e * | | | | | LB1100e * | | | | Todays julian date and marking of | LB1100e * | | | | date is part of the result when | LB1100e * | | | | request month and year is current | LB1100e * | | | | month and year. Otherwise, it is | LB1100e * | | | | not contained in the result. | LB1100e * | | | | | LB1100e * | | | | If VAR2 is omitted, results will be | LB1100e * | | | | placed into VAR1. | LB1100e * | | | | | LB1100e * | | | | If requested date is null, todays | LB1100e * | | | | date is used. | LB1100e * | | | | | LB1100e * -------------------------------------------------------------------- LB1100e * SET MYDATA= /* INIT MYDATA */ LB1100e * SET MYCALNDR= /* INIT MYCALNDR */ LB1100e * SET MYDATAL = /* INIT MYDATAL */ LB1100e * SET MYCALNDRL= /* INIT MYCALNDRL*/ LB1100e * SET ERRMSG = /* INIT ERRMSG */ LB1100e * CUTIL00 MCAL MYDATA /* MCAL */ LB1100e * SET RC=&LASTCC /* RETURN CODE */ LB1100e * LB1100e * Results: RC =0 LB1100e * ERRMSG ='SUCCESSFUL REQUEST ' LB1100e * MYDATA ='12152018' LB1100e * MYDATAL =8 LB1100e * MYCALNDR =calendar as shown above LB1100e * MYCALNDRL=168 LB1100e * LB1100e * LB1100e EJECT LB1106z * -------------------------------------------------------------------- LB1106z * | Function | VAR1 | VAR2 | Description | LB1106z * +----------+------+------+-----------------------------------------+ LB1106z *71| MCALA | req | opt | Monthly calendar given MMDDCCYY with | LB1106z * | | | | embedded hex ISPF attributes. | LB1106z * | | | | | LB1106z * | | | | Result is 168 bytes in length and | LB1106z * | | | | may be displayed in 21-byte segments | LB1106z * | | | | to give calendar appearance (8-rows): | LB1106z * | | | | | LB1106z * | | | | 0 1 2 | LB1106z * | | | | 1...5....0....5....0. | LB1106z * | | | | | LB1106z * | | | | / aDecember 2018 b359 | LB1106z * | | | | / c Sd Md Td Wd Td Fc S | LB1106z * | | | | / d .d .d .d .d .d .d 1 | LB1106z * | | | |Result { d 2d 3d 4d 5d 6d 7d 8 | LB1106z * | | | | \ d 9d10d11d12d13d14d15 | LB1106z * | | | | \ d16d17d18d19d20d21d22 | LB1106z * | | | | \ d23d24e25d26d27d28d29 | LB1106z * | | | | \d30d31d d d d d . | LB1106z * | | | | | LB1106z * | | | | (a) X'51' Month Name and Year | LB1106z * | | | | (b) X'52' Julian Date JJJ | LB1106z * | | | | (c) X'53' Weekend Day Names | LB1106z * | | | | (d) X'54' Calendar Dates | LB1106z * | | | | (e) X'55' Current Calendar Date | LB1106z * | | | | | LB1106z * | | | | If VAR2 is omitted, results will be | LB1106z * | | | | placed into VAR1. | LB1106z * | | | | | LB1106z * | | | | If requested date is null, todays | LB1106z * | | | | date is used. | LB1106z * | | | | | LB1106z * -------------------------------------------------------------------- LB1106z * SET MYDATA= /* INIT MYDATA */ LB1106z * SET MYCALNDR= /* INIT MYCALNDR */ LB1106z * SET MYDATAL = /* INIT MYDATAL */ LB1106z * SET MYCALNDRL= /* INIT MYCALNDRL*/ LB1106z * SET ERRMSG = /* INIT ERRMSG */ LB1106z * CUTIL00 MCALA MYDATA /* MCALA */ LB1106z * SET RC=&LASTCC /* RETURN CODE */ LB1106z * LB1106z * Results: RC =0 LB1106z * ERRMSG ='SUCCESSFUL REQUEST ' LB1106z * MYDATA ='12252018' LB1106z * MYDATAL =8 LB1106z * MYCALNDR =calendar as shown above w/ ISPF attributes LB1106z * MYCALNDRL=168 LB1106z * LB1106z * LB1106z EJECT LB1100e * -------------------------------------------------------------------- LB1105a * | Function | VAR1 | VAR2 | Description | LB1105a * +----------+------+------+-----------------------------------------+ LB1105a *72| LEN | req | no | Length of data in string | LB1105a * | | | | | LB1105a * | | | | VAR1 - variable | LB1105a * | | | | | LB1105a * | | | | VAR2 - ignored | LB1105a * | | | | | LB1105a * | | | | RC=length of data in string | LB1105a * | | | | | LB1105a * -------------------------------------------------------------------- LB1105a * SET MYDATA=&STR( MY WORD IN THE STRING ) /* INIT MYDATA */ LB1105a * SET MYDATAL = /* INIT MYDATAL */ LB1105a * SET ERRMSG = /* INIT ERRMSG */ LB1105a * CUTIL00 LEN MYDATA /* LEN */ LB1105a * SET RC=&LASTCC /* RETURN CODE */ LB1105a * LB1105a * Results: RC =22 LB1105a * ERRMSG ='SUCCESSFUL REQUEST - LEN ' LB1105a * MYDATA =' MY WORD IN THE STRING ' LB1105a * MYDATAL =26 LB1105a * LB1105a * LB1105a EJECT LB1105a * -------------------------------------------------------------------- LB1105a * | Function | VAR1 | VAR2 | Description | LB1105a * +----------+------+------+-----------------------------------------+ LB1105a *73| SLEN | req | no | Length of string | LB1105a * | | | | | LB1105a * | | | | VAR1 - variable | LB1105a * | | | | | LB1105a * | | | | VAR2 - ignored | LB1105a * | | | | | LB1105a * | | | | RC=length of string | LB1105a * | | | | | LB1105a * -------------------------------------------------------------------- LB1105a * SET MYDATA=&STR( MY WORD IN THE STRING ) /* INIT MYDATA */ LB1105a * SET MYDATAL = /* INIT MYDATAL */ LB1105a * SET ERRMSG = /* INIT ERRMSG */ LB1105a * CUTIL00 LEN MYDATA /* LEN */ LB1105a * SET RC=&LASTCC /* RETURN CODE */ LB1105a * LB1105a * Results: RC =26 LB1105a * ERRMSG ='SUCCESSFUL REQUEST - LEN ' LB1105a * MYDATA =' MY WORD IN THE STRING ' LB1105a * MYDATAL =26 LB1105a * LB1105a * LB1105a EJECT LB1105c * -------------------------------------------------------------------- LB1105c * | Function | VAR1 | VAR2 | Description | LB1105c * +----------+------+------+-----------------------------------------+ LB1105c *74| OVERLAY | req | req | Overlay substring within VAR1. | LB1105c * | | | | | LB1105c * | | | | VAR1 contains content for overlay. | LB1105c * | | | | | LB1105c * | | | | VAR2 contains Overlay Parms ------------| LB1105c * | | | | Format: "oooo",bbb | LB1105c * | | | | | LB1105c * | | | | o - overlay string in double quotes | LB1105c * | | | | b - optional, begin overlay position | LB1105c * | | | | 1-3 numeric digits, default=1 | LB1105c * | | | | Parms separated by commas (,): | LB1105c * | | | | | LB1105c * | | | | RC=4032 Start > End | LB1105c * | | | | one of the following errors: | LB1105c * | | | | - str start pos > VAR1 len | LB1105c * | | | | - str len > VAR1 len | LB1105c * | | | | - str content overflows VAR1 | LB1105c * -------------------------------------------------------------------- LB1105c * SET MYDATA=&STR( MY TEXT TO BE OVERLAYED OK!! ) /* INIT MYDATA */ LB1105c * SET MYOPARM =&STR("----- ",7) /* INIT MYOPARM */ LB1105c * SET MYDATAL = /* INIT MYDATAL */ LB1105c * SET MYOPARML = /* INIT MYOPARML */ LB1105c * SET ERRMSG = /* INIT ERRMSG */ LB1105c * CUTIL00 OVERLAY MYDATA MYOPARM /* OVERLAY */ LB1105c * SET RC=&LASTCC /* RETURN CODE */ LB1105c * LB1105c * Results: RC =0 LB1105c * ERRMSG ='SUCCESSFUL REQUEST ' LB1105c * MYDATA =' MY TE----- BE OVERLAYED OK!! ' LB1105c * MYDATAL =30 LB1105c * MYOPARM ='"----- ",7' LB1105c * MYOPARML =10 LB1105c * LB1105c EJECT LB1105g * -------------------------------------------------------------------- LB1105g * | Function | VAR1 | VAR2 | Description | LB1105g * +----------+------+------+-----------------------------------------+ LB1105g *75| UTDSN | req | no | Generate temporary user DSN formatted | LB1105g * | | | | as 'USERID.VAR1.Dyyddd.Thhmmss' | LB1105g * | | | | | LB1105g * | | | | VAR1 contains content of appending | LB1105g * | | | | DSN node(s). | LB1105g * | | | | | LB1105g * | | | | USERID is assigned TSO Prefix. | LB1105g * | | | | | LB1105g * | | | | If TSO Prefix is blank, USERID is | LB1105g * | | | | assigned TSO Userid. | LB1105g * | | | | | LB1105g * | | | | No MVS DSN validation performed. | LB1105g * | | | | | LB1105g * | | | | Note: A period '.' may be placed before | LB1105g * | | | | the date and time nodes should one not | LB1105g * | | | | exist in the provided variable VAR1. | LB1105g * | | | | | LB1105g * -------------------------------------------------------------------- LB1105g * SET MYDATA=&STR(CARDS) /* INIT MYDATA */ LB1105g * SET MYRESULT= /* INIT MYRESULT */ LB1105g * SET MYDATAL = /* INIT MYDATAL */ LB1105g * SET MYRESULTL= /* INIT MYRESULTL*/ LB1105g * SET ERRMSG = /* INIT ERRMSG */ LB1105g * CUTIL00 UTDSN MYDATA /* UTDSN */ LB1106z * SET RC=&LASTCC /* RETURN CODE */ LB1105g * LB1105g * Results: RC =0 LB1105g * ERRMSG ='SUCCESSFUL REQUEST ' LB1105g * MYDATA ='HERC01.CARDS.D19231.T183011' LB1105g * MYDATAL =27 LB1105g * MYRESULT ='' LB1105g * MYRESULTL= LB1105g * -- Assuming TSO user is HERC01. LB1105g * LB1105g EJECT LB1105h * -------------------------------------------------------------------- LB1105h * | Function | VAR1 | VAR2 | Description | LB1105h * +----------+------+------+-----------------------------------------+ LB1105h *76| TRUNC | req | req | Truncate VAR1 at n length | LB1105h * | | | | | LB1105h * | | | | VAR1 - variable | LB1105h * | | | | | LB1105h * | | | | VAR2 contains TRUNC Parms --------------| LB1105h * | | | | Format: cnnn | LB1105h * | | | | | LB1105h * | | | | c - placeholder, any character | LB1105h * | | | | n - new length of VAR1, 1-3 digits | LB1105h * | | | | valid length values, 1-256 | LB1105h * | | | | default=1 | LB1105h * | | | | max=length of VAR1 | LB1105h * | | | | | LB1105h * | | | | RC=4040 Invalid Length | LB1105h * | | | | one of the following errors: | LB1105h * | | | | - nnn more than 3 digits per | LB1105h * | | | | above format | LB1105h * | | | | - nnn is zero | LB1105h * | | | | - nnn > VAR1 length | LB1105h * | | | | - resulting string > 256 bytes | LB1105h * -------------------------------------------------------------------- LB1105h * SET MYDATA=&STR(THE MAN WALKED HERE) /* INIT MYDATA */ LB1105h * SET MYDATAL = /* INIT MYDATAL */ LB1105h * SET MYTRUNC =&STR(x07) /* INIT MYTRUNC */ LB1105h * SET MYTRUNCL = /* INIT MYTRUNCL */ LB1105h * SET ERRMSG = /* INIT ERRMSG */ LB1105h * CUTIL00 TRUNC MYDATA MYTRUNC /* TRUNC */ LB1105h * SET RC=&LASTCC /* RETURN CODE */ LB1105h * LB1105h * Results: RC =0 LB1105h * ERRMSG ='SUCCESSFUL REQUEST ' LB1105h * MYDATA ='THE MAN' LB1105h * MYDATAL =7 LB1105h * MYTRUNC ='x07' LB1105h * MYTRUNCL =3 LB1105h * LB1105h EJECT LB1106a * -------------------------------------------------------------------- LB1106a * | Function | VAR1 | VAR2 | Description | LB1106a * +----------+------+------+-----------------------------------------+ LB1106a *77| ISHEX | req | no | Test variable VAR1 for all hexadecimal | LB1106a * | | | | values (0-9,A-F) returning a true-false | LB1106a * | | | | indication. | LB1106a * | | | | | LB1106a * | | | | RC=4000 &ERRMSG='FALSE' | LB1106a * | | | | RC=4001 &ERRMSG='TRUE' | LB1106a * -------------------------------------------------------------------- LB1106a * SET MYDATA=&STR(A123FA67BD) /* INIT MYDATA */ LB1106a * SET MYRESULT= /* INIT MYRESULT */ LB1106a * SET MYDATAL = /* INIT MYDATAL */ LB1106a * SET MYRESULTL= /* INIT MYRESULTL*/ LB1106a * SET ERRMSG = /* INIT ERRMSG */ LB1106a * CUTIL00 ISHEX MYDATA /* ISHEX */ LB1106a * SET RC=&LASTCC /* RETURN CODE */ LB1106a * LB1106a * Results: RC =4001 LB1106a * ERRMSG ='TRUE ' LB1106a * MYDATA ='A123FA67BD' LB1106a * MYDATAL =10 LB1106a * MYRESULT ='' LB1106a * MYRESULTL=0 LB1106a * LB1106a EJECT LB1106c * -------------------------------------------------------------------- LB1106c * | Function | VAR1 | VAR2 | Description | LB1106c * +----------+------+------+-----------------------------------------+ LB1106c *78| CC2H | req | opt | Convert data in variable VAR1 from | LB1106c * | | | | 1-byte character to 2-byte hexadecimal | LB1106c * | | | | in EBCDIC format. | LB1106c * | | | | | LB1106c * | | | | For example- | LB1106c * | | | | Convert 'ABC' to 'C1C2C3' | LB1106c * | | | | | LB1106c * | | | | If VAR2 is omitted, results will be | LB1106c * | | | | placed into VAR1. | LB1106c * -------------------------------------------------------------------- LB1106c * SET MYDATA=&STR(1995STAR) /* INIT MYDATA */ LB1106c * SET MYRESULT= /* INIT MYRESULT */ LB1106c * SET MYDATAL = /* INIT MYDATAL */ LB1106c * SET MYRESULTL= /* INIT MYRESULTL*/ LB1106c * SET ERRMSG = /* INIT ERRMSG */ LB1106c * CUTIL00 CC2H MYDATA MYRESULT /* CC2H */ LB1106c * SET RC=&LASTCC /* RETURN CODE */ LB1106c * LB1106c * Results: RC =0 LB1106c * ERRMSG ='SUCCESSFUL REQUEST ' LB1106c * MYDATA ='1995STAR' LB1106c * MYDATAL =8 LB1106c * MYRESULT ='F1F9F9F5E2E3C1D9' LB1106c * MYRESULTL=16 LB1106c * LB1106c EJECT LB1106d * -------------------------------------------------------------------- LB1106d * | Function | VAR1 | VAR2 | Description | LB1106d * +----------+------+------+-----------------------------------------+ LB1106d *79| CH2C | req | opt | Convert data in variable VAR1 from | LB1106d * | | | | 2-byte hexadecimal to 1-byte character | LB1106d * | | | | in printable EBCDIC format. | LB1106d * | | | | | LB1106d * | | | | If character is not printable, a '.' | LB1106d * | | | | is displayed. | LB1106d * | | | | | LB1106d * | | | | For example- | LB1106d * | | | | Convert 'C1C203' to 'AB.' | LB1106d * | | | | | LB1106d * | | | | If VAR2 is omitted, results will be | LB1106d * | | | | placed into VAR1. | LB1106d * -------------------------------------------------------------------- LB1106d * SET MYDATA=&STR(C1C203) /* INIT MYDATA */ LB1106d * SET MYRESULT= /* INIT MYRESULT */ LB1106d * SET MYDATAL = /* INIT MYDATAL */ LB1106d * SET MYRESULTL= /* INIT MYRESULTL*/ LB1106d * SET ERRMSG = /* INIT ERRMSG */ LB1106d * CUTIL00 CH2C MYDATA MYRESULT /* CH2C */ LB1106d * SET RC=&LASTCC /* RETURN CODE */ LB1106d * LB1106d * Results: RC =0 LB1106d * ERRMSG ='SUCCESSFUL REQUEST ' LB1106d * MYDATA ='C1C203' LB1106d * MYDATAL =6 LB1106d * MYRESULT ='AB.' LB1106d * MYRESULTL=03 LB1106d * LB1106d EJECT LB1106e * -------------------------------------------------------------------- LB1106e * | Function | VAR1 | VAR2 | Description | LB1106e * +----------+------+------+-----------------------------------------+ LB1106e *80| ISEVEN | req | no | Test variable VAR1 for all numeric | LB1106e * | | | | and EVEN number returning a true-false | LB1106e * | | | | indication. | LB1106e * | | | | | LB1106e * | | | | RC=4000 &ERRMSG='FALSE' (odd) | LB1106e * | | | | RC=4001 &ERRMSG='TRUE' (even) | LB1106e * -------------------------------------------------------------------- LB1106e * SET MYDATA=&STR(1234567890) /* INIT MYDATA */ LB1106e * SET MYRESULT= /* INIT MYRESULT */ LB1106e * SET MYDATAL = /* INIT MYDATAL */ LB1106e * SET MYRESULTL= /* INIT MYRESULTL*/ LB1106e * SET ERRMSG = /* INIT ERRMSG */ LB1106e * CUTIL00 ISEVEN MYDATA /* ISEVEN */ LB1106e * SET RC=&LASTCC /* RETURN CODE */ LB1106e * LB1106e * Results: RC =4001 LB1106e * ERRMSG ='TRUE ' LB1106e * MYDATA ='1234567890' LB1106e * MYDATAL =10 LB1106e * MYRESULT ='' LB1106e * MYRESULTL=0 LB1106e * LB1106e
Return Codes
* * +------+----------------------------------------------------------+ * |RETURN| | * | CODE | DESCRIPTION | * +------+----------------------------------------------------------+ * | 4000 | FALSE | * +------+----------------------------------------------------------+ * | 4001 | TRUE | * +------+----------------------------------------------------------+ * | 4002 | VAR1 not found | * +------+----------------------------------------------------------+ * | 4004 | No PARM | * +------+----------------------------------------------------------+ * | 4005 | WORD GT 8 bytes | * +------+----------------------------------------------------------+ * | 4008 | CPPL no Parm | * +------+----------------------------------------------------------+ * | 4009 | Too many WORDS | * +------+----------------------------------------------------------+ * | 4010 | SETVAR no content | * +------+----------------------------------------------------------+ * | 4011 | Invalid function | * +------+----------------------------------------------------------+ * | 4012 | VAR2 not updated | * +------+----------------------------------------------------------+ * | 4014 | VAR1 GT 256 | * +------+----------------------------------------------------------+ * | 4015 | VAR2 required | * +------+----------------------------------------------------------+ * | 4016 | VAR2 not found | * +------+----------------------------------------------------------+ * | 4017 | VAR2 GT 256 | * +------+----------------------------------------------------------+ * | 4018 | VAR2 null | * +------+----------------------------------------------------------+ * | 4019 | VAR1 null | * +------+----------------------------------------------------------+ * | 4020 | ERRMSG cannot create updt | * +------+----------------------------------------------------------+ * | 4021 | VAR1 required | * +------+----------------------------------------------------------+ * | 4022 | VAR2 not required | * +------+----------------------------------------------------------+ * | 4023 | Result GT 256 | * +------+----------------------------------------------------------+ * | 4030 | No begin " | * +------+----------------------------------------------------------+ * | 4031 | No end " | * +------+----------------------------------------------------------+ * | 4032 | Start GT End | * +------+----------------------------------------------------------+ * | 4033 | Invalid Char | * +------+----------------------------------------------------------+ * | 4034 | Not numeric | * +------+----------------------------------------------------------+ * | 4035 | Too many digits | * +------+----------------------------------------------------------+ * | 4036 | Null value not allowed | * +------+----------------------------------------------------------+ * | 4037 | No begin QUOTE | * +------+----------------------------------------------------------+ * | 4038 | No end QUOTE | * +------+----------------------------------------------------------+ * | 4039 | No end QUOTE found | * +------+----------------------------------------------------------+ * | 4040 | Invalid length | * +------+----------------------------------------------------------+ * | 4047 | Invalid DD | * +------+----------------------------------------------------------+ * | 4048 | Invalid DOW | LB1100f * +------+----------------------------------------------------------+ LB1100f * | 4049 | Invalid MM | * +------+----------------------------------------------------------+ * | 4050 | Invalid DD for MM | * +------+----------------------------------------------------------+ * | 4051 | Invalid JJJ | * +------+----------------------------------------------------------+ * | 4060 | Call error in CUTILTBL | LB1100g * +------+----------------------------------------------------------+ LB1100g * | 4071 | Invalid function | LB1100e * +------+----------------------------------------------------------+ LB1100e * | 4072 | Invalid function | LB1100e * +------+----------------------------------------------------------+ LB1100e * | 4073 | Invalid function | LB1100e * +------+----------------------------------------------------------+ LB1100e * | 4074 | Invalid function | LB1100e * +------+----------------------------------------------------------+ LB1100e * | 4075 | Invalid function | LB1100e * +------+----------------------------------------------------------+ LB1100e * | 4097 | Cannot load CUTILTBL | LB1105b * +------+----------------------------------------------------------+ LB1105b * | 4098 | Cannot link to IKJCT441 | * +------+----------------------------------------------------------+ * Note: -Symbolic Variable &LASTCC contains CUTIL00 return code
TSO CLIST Testing Harness
With CCUTIL00 under TSO, a function and other parameters can be used to invoke CUTIL00 and display results in a TSO session screen.
At the TSO Ready prompt, enter the following command:
READY
CCUTIL00 TRIM VAR01(' TRIM MY SPACE ') VAR02('') CLS(N)
Results are:
READY CCUTIL00 TRIM VAR01(' TRIM MY SPACE ') VAR02('') CLS(N) --- CCUTIL00: CUTIL00 TEST TOOL CUTIL00 TRIM VAR01 VAR02 --- CUTIL00 RESPONSE .......................................... RC =0 SUCCESSFUL REQUEST VAR01 =' TRIM MY SPACE ' VAR01L=00018 VAR02 ='TRIM MY SPACE' VAR02L=00014 --- CCUTIL00: CUTIL00 TEST TOOL ... DONE! TRIM READY
ISPF Testing Application
Comprised of two panels (application and help) and a CLIST driver under ISPF 2.x, a data set name with optional parameters can be passed to CCUTIL0I to process request and display results.
On the ISPF main menu panel, enter the following on the OPTION line:
OPTION ===> TSO %CCUTIL0I
The CUTIL00 panel will be displayed. Enter function and variable data as depicted below.
-------------------------- CCUTIL0 for MVS38J ------- ENTER DATA COMMAND ===> PANEL - PCUTIL00 FUNCTION => pad USERID - LARRY01 VAR1 Quote => Y Y,N TIME - 18:59 VAR2 Use => Y Y,N,$NOVAR2 DATE - 11/04/20
- 20.102 Return CD: SYSTEM - BSP1 TERMINAL - 3277
TermSize 0056 0090 APPLID - ISP VAR1 Len= 0 1 2 3 4 5 6 7 1...5....0....5....0....5....0....5....0....5....0....5....0....5....0....5... 'pad me to 30 bytes' VAR2 Len= 0 1 2 3 4 5 6 7 1...5....0....5....0....5....0....5....0....5....0....5....0....5....0....5... 30 PF1 Help PF3 End ENTER process
Below is the results panel for the PAD request:
-------------------------- CCUTIL0 for MVS38J ------- ENTER DATA COMMAND ===> PANEL - PCUTIL00 FUNCTION => PAD USERID - LARRY01 VAR1 Quote => Y Y,N TIME - 18:59 VAR2 Use => Y Y,N,$NOVAR2 DATE - 11/04/20 CUTIL00 PAD VAR01 VAR02 QUOTE - 20.102 Return CD: 0 SYSTEM - BSP1 Successful Request TERMINAL - 3277 TermSize 0056 0090 APPLID - ISP VAR1 Len=00030 0 1 2 3 4 5 6 7 1...5....0....5....0....5....0....5....0....5....0....5....0....5....0....5... pad me to 30 bytes VAR2 Len=00078 0 1 2 3 4 5 6 7 1...5....0....5....0....5....0....5....0....5....0....5....0....5....0....5... 30 PF1 Help PF3 End ENTER process
The HELP panel for this function follows:
--HELP-------------------- CUTIL00 for MVS38J --------------------------------- COMMAND ===> PANEL - HCUTIL00 USERID - LARRY02 This panel is used to invoke CUTIL00 as a driver of a single function with varying data as an interactive unit test facility. o FUNCTION Function to be performed o VAR1 Quote Y VAR1 content and length is determined by quote (') delimiters N VAR1 content is 78 bytes in length o VAR2 Use Y VAR2 specified in command line N VAR2 is NOT specified in command line $ $NOVAR2 placeholder is used as VAR2 in command line (same as NOT specifying a VAR2 variable name) o command line displayed here for invoked function o Return CD Return code and error message from operation o VAR1 VAR1 input of 78 bytes in length or delimited by single quotes Len= represents length of a VAR1 result. o VAR2 VAR2 input is always 78 bytes in length. Len= represents length of a VAR2 result. MYTUTOR command invokes CUTIL00 tutorial. Note: VAR1 and VAR2 limited to 78 characters due to panel presentation.
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.
CUTIL00 for MVS3.8J / Hercules . ============================== . Date: 04/15/2024 Release V1R1M09 02/14/2024 Release V1R1M08 * not released 06/07/2023 Release V1R1M07 * not released 01/31/2023 Release V1R1M06 10/05/2021 Release V1R1M05 4/10/2021 Release V1R1M00 5/03/2020 Release V1R0M10 3/20/2020 Release V1R0M00 **INITIAL software distribution * Author: Larry Belmontes Jr. * https://ShareABitOfIT.net/CUTIL00-for-mvs-3-8j/ * Copyright (C) 2020-2024 Larry Belmontes, Jr. ---------------------------------------------------------------------- | CUTIL00 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. Good luck and enjoy this software as added value to MVS 3.8J! -Larry Belmontes ---------------------------------------------------------------------- | CUTIL00 C h a n g e H i s t o r y | ---------------------------------------------------------------------- * * MM/DD/CCYY Version Change Description * ---------- ------- ----------------------------------------------- * 04/15/2024 1.1.09 - Correct REPLACE function return # of changed * sub-strings in RC * - Correct ZFILL to return zeros when blank string * is passed * - Add new panel to display results from MCAL * and MCALA * * 02/14/2024 1.1.08 - Add MYTUTOR command to panel from CCUTIL0I * - Add tutorial screens * - Correct '2J2M' function in CUTILTBL module * - Stop command line parse when '/*' (comment) * is detected in CUTIL00 module * - Miscellaneous documentation and program updates * * 06/07/2023 1.1.07 - Add trailing attribute4 at end of month * for MCALA function and documentation update * * 01/31/2023 1.1.06 - Add new functions ISHEX H2C C2H ISEVEN * - Modify MCALA function to use hex attributes * - Miscellaneous documentation and program updates * * 10/05/2021 1.1.05 - Add new functions LEN SLEN OVERLAY UTDSN TRUNC * - Correction to REPLACE function * - Load CUTILTBL and call via BALR * - Miscellaneous documentation and program updates * * 04/10/2021 1.1.00 - Add new functions GET1 PUT1 MCAL * - Externalize constants and tables to new program * - Miscellaneous documentation and program updates * * 05/03/2020 1.0.10 - Change software distribution packaging and * installation procedure to use Hercules * Emulated Tape (HET) * - No change to CUTIL00 program * * 04/20/2020 1.0.01 - Correction to Step ADDHELP in $inst01.JCL to * load two HELP members instead of one * - Thanks to Tom Armstrong!! * * 03/20/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 CUTIL00.V1R1M09.HET Hercules Emulated Tape (HET) multi-file volume volser=VS1109 containing software distribution library. o CUTIL00.V1R1M09.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: ISPF v2.0+ (ISPF-like product from Wally Mclaughlin) must be ----- installed under MVS 3.8J TSO including associated user-mods per ISPF Installation Pre-reqs. 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/ ====================================================================== * 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.CUTIL00.V1R1M09.ASM PUB006 50 17 PO FB 34 1 SHRABIT.CUTIL00.V1R1M09.CLIST PUB006 15 4 PO FB 26 1 SHRABIT.CUTIL00.V1R1M09.CNTL PUB006 20 7 PO FB 35 1 SHRABIT.CUTIL00.V1R1M09.HELP PUB006 4 1 PO FB 25 1 SHRABIT.CUTIL00.V1R1M09.ISPF PUB006 40 34 PO FB 85 1 SHRABIT.CUTIL00.V1R1M09.MACLIB PUB006 2 1 PO FB 50 1 **END** TOTALS: 131 TRKS ALLOC 64 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, seeSubmitting JCL to MVS 3.8Jo For more information on SHRABIT software distribution library, seeSHRABIT Distributions for MVS38Jo For more information on SHRABIT software installation, seeSHRABIT 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.CUTIL00.V1R1M09.CNTL($RECVXMI) | | JCL Member: SHRABIT.CUTIL00.V1R1M09.CNTL($RECVTSO) | +--------------------------------------------------------------------+ ______________________________________________________________________ //RECV000A JOB (SYS),'Receive CUTIL00 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.CUTIL00',VRM=V1R1M09,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 DVTOC 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,(20,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,(04,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,(15,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,(40,05,10)), // 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,(50,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,(02,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 CUTIL00 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 CUTIL00 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.CUTIL00.V1R1M09.XMIPDS') - VOL(volser) NOPROMPT /* Receive CNTL */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(CNTL)') - DA('SHRABIT.CUTIL00.V1R1M09.CNTL') - VOL(volser) NOPROMPT /* Receive HELP */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(HELP)') - DA('SHRABIT.CUTIL00.V1R1M09.HELP') - VOL(volser) NOPROMPT /* Receive CLIST */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(CLIST)') - DA('SHRABIT.CUTIL00.V1R1M09.CLIST') - VOL(volser) NOPROMPT /* Receive ISPF */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(ISPF)') - DA('SHRABIT.CUTIL00.V1R1M09.ISPF') - VOL(volser) NOPROMPT /* Receive ASM */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(ASM)') - DA('SHRABIT.CUTIL00.V1R1M09.ASM') - VOL(volser) NOPROMPT /* Receive MACLIB */ RECEIVE IN('SHRABIT.CUTIL00.V1R1M09.XMIPDS(MACLIB)') - DA('SHRABIT.CUTIL00.V1R1M09.MACLIB') - VOL(volser) NOPROMPT /* Delete XMIPDS */ DELETE 'SHRABIT.CUTIL00.V1R1M09.XMIPDS' /* // ______________________________________________________________________ Figure 1b: $RECVXMI.JCL a) Transfer CUTIL00.V1R1M09.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.CUTIL00.V1R1M09.ASM SHRABIT.CUTIL00.V1R1M09.CLIST SHRABIT.CUTIL00.V1R1M09.CNTL SHRABIT.CUTIL00.V1R1M09.HELP SHRABIT.CUTIL00.V1R1M09.ISPF SHRABIT.CUTIL00.V1R1M09.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.CUTIL00.V1R1M09.CNTL($INST00) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL000 JOB (SYS),'Def CUTIL00 Alias', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for 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 1: $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.CUTIL00.V1R1M09.CNTL($INST01) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL001 JOB (SYS),'Install CNTL PDS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * JOB: $INST01 Load CNTL PDS from distribution tape * //* * Note: Uses tape drive 480 * //* -------------------------------------------------------* //LOADCNTL PROC THLQ=CUTIL00,TVOLSER=VS1109, // HLQ='SHRABIT.CUTIL00',VRM=V1R1M09, // 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,(20,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\CUTIL00.V1R1M09.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.CUTIL00.V1R1M09.CNTL($INST02) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL002 JOB (SYS),'Install Other PDSs', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 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=CUTIL00,TVOLSER=VS1109, // HLQ='SHRABIT.CUTIL00',VRM=V1R1M09, // 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,(15,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(04,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(40,05,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(50,10,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //MACLIB DD DSN=&HLQ..&VRM..MACLIB,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,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\CUTIL00.V1R1M09.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.CUTIL00.V1R1M09.CNTL($UP1109) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL00U JOB (SYS),'Upgrade CUTIL00', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * * //* * JOB: $UP1109 * //* * Upgrade CUTIL00 Software from release V1R1M06 * //* * * //* * Review JCL before submitting!! * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * * //* * PROC: ASMLKED * //* * Assembler Link-Edit * //* * * //* -------------------------------------------------------* //ASML PROC HLQ=WHATHLQ,VRM=VXRXMXX, // MBR=WHOWHAT //* //ASM EXEC PGM=IFOX00, // PARM='NODECK,LOAD,RENT,TERM,XREF' //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='MAP,LIST,LET,RENT,XREF', // 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 //* //* -------------------------------------------------------* //* * * //* * 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 //* //STEP001 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=SHRABIT.CUTIL00.V1R1M09.CLIST,DISP=SHR //INHELP DD DSN=SHRABIT.CUTIL00.V1R1M09.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=NO#MBR# /*dummy entry no mbrs! */ COPY INDD=((INHELP,R)),OUTDD=OUTHELP SELECT MEMBER=CCUTIL00 /* //* //* -------------------------------------------------------* //* * Assemble Link-Edit CUTIL00 to SYS2.CMDLIB * //* -------------------------------------------------------* //CUTILTBL EXEC ASML,HLQ='SHRABIT.CUTIL00',VRM=V1R1M09,MBR=CUTIL00, // PARM.LKED='MAP,LIST,LET,RENT,XREF,REUS,REFR' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.CMDLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * Assemble Link-Edit CUTILTBL to SYS2.CMDLIB * //* -------------------------------------------------------* //CUTILTBL EXEC ASML,HLQ='SHRABIT.CUTIL00',VRM=V1R1M09,MBR=CUTILTBL, // PARM.LKED='MAP,LIST,LET,RENT,XREF,REUS,REFR' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.CMDLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * ISPF Components * //* -------------------------------------------------------* //ISPF EXEC PARTSI,HLQ='SHRABIT.CUTIL00',VRM=V1R1M09, // 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=CCUTIL0I //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=PCUTIL00 SELECT MEMBER=PCUTIL01 SELECT MEMBER=HCUTIL00 SELECT MEMBER=TCUTF01A SELECT MEMBER=TCUTF01B SELECT MEMBER=TCUTF02A SELECT MEMBER=TCUTF02B SELECT MEMBER=TCUTF03A SELECT MEMBER=TCUTF03B SELECT MEMBER=TCUTF04A SELECT MEMBER=TCUTF04B SELECT MEMBER=TCUTF07A SELECT MEMBER=TCUTF07B SELECT MEMBER=TCUTF08A SELECT MEMBER=TCUTF08B SELECT MEMBER=TCUTF09A SELECT MEMBER=TCUTF09B SELECT MEMBER=TCUTF10A SELECT MEMBER=TCUTF10B SELECT MEMBER=TCUTF11A SELECT MEMBER=TCUTF11B SELECT MEMBER=TCUTF12A SELECT MEMBER=TCUTF12B SELECT MEMBER=TCUTF13A SELECT MEMBER=TCUTF13B SELECT MEMBER=TCUTF14A SELECT MEMBER=TCUTF14B SELECT MEMBER=TCUTF15A SELECT MEMBER=TCUTF15B SELECT MEMBER=TCUTF16A SELECT MEMBER=TCUTF16B SELECT MEMBER=TCUTF17A SELECT MEMBER=TCUTF17B SELECT MEMBER=TCUTF18A SELECT MEMBER=TCUTF18B SELECT MEMBER=TCUTF19A SELECT MEMBER=TCUTF19B SELECT MEMBER=TCUTF20A SELECT MEMBER=TCUTF20B SELECT MEMBER=TCUTF21A SELECT MEMBER=TCUTF21B SELECT MEMBER=TCUTF22A SELECT MEMBER=TCUTF22B SELECT MEMBER=TCUTF23A SELECT MEMBER=TCUTF23B SELECT MEMBER=TCUTF24A SELECT MEMBER=TCUTF24B SELECT MEMBER=TCUTF25A SELECT MEMBER=TCUTF25B SELECT MEMBER=TCUTF26A SELECT MEMBER=TCUTF26B SELECT MEMBER=TCUTF27A SELECT MEMBER=TCUTF27B SELECT MEMBER=TCUTF28A SELECT MEMBER=TCUTF28B SELECT MEMBER=TCUTF29A SELECT MEMBER=TCUTF29B SELECT MEMBER=TCUTF30A SELECT MEMBER=TCUTF30B SELECT MEMBER=TCUTF31A SELECT MEMBER=TCUTF31B SELECT MEMBER=TCUTF32A SELECT MEMBER=TCUTF32B SELECT MEMBER=TCUTF33A SELECT MEMBER=TCUTF33B SELECT MEMBER=TCUTF34A SELECT MEMBER=TCUTF34B SELECT MEMBER=TCUTF35A SELECT MEMBER=TCUTF35B SELECT MEMBER=TCUTF36A SELECT MEMBER=TCUTF36B SELECT MEMBER=TCUTF37A SELECT MEMBER=TCUTF37B SELECT MEMBER=TCUTF38A SELECT MEMBER=TCUTF38B SELECT MEMBER=TCUTF39A SELECT MEMBER=TCUTF39B SELECT MEMBER=TCUTF40A SELECT MEMBER=TCUTF40B SELECT MEMBER=TCUTF41A SELECT MEMBER=TCUTF41B SELECT MEMBER=TCUTF42A SELECT MEMBER=TCUTF42B SELECT MEMBER=TCUTF43A SELECT MEMBER=TCUTF43B SELECT MEMBER=TCUTF44A SELECT MEMBER=TCUTF44B SELECT MEMBER=TCUTF45A SELECT MEMBER=TCUTF45B SELECT MEMBER=TCUTF46A SELECT MEMBER=TCUTF46B SELECT MEMBER=TCUTF47A SELECT MEMBER=TCUTF47B SELECT MEMBER=TCUTF48A SELECT MEMBER=TCUTF48B SELECT MEMBER=TCUTF49A SELECT MEMBER=TCUTF49B SELECT MEMBER=TCUTF50A SELECT MEMBER=TCUTF50B SELECT MEMBER=TCUTF51A SELECT MEMBER=TCUTF51B SELECT MEMBER=TCUTF52A SELECT MEMBER=TCUTF52B SELECT MEMBER=TCUTF53A SELECT MEMBER=TCUTF53B SELECT MEMBER=TCUTF54A SELECT MEMBER=TCUTF54B SELECT MEMBER=TCUTF55A SELECT MEMBER=TCUTF55B SELECT MEMBER=TCUTF56A SELECT MEMBER=TCUTF56B SELECT MEMBER=TCUTF57A SELECT MEMBER=TCUTF57B SELECT MEMBER=TCUTF58A SELECT MEMBER=TCUTF58B SELECT MEMBER=TCUTF59A SELECT MEMBER=TCUTF59B SELECT MEMBER=TCUTF60A SELECT MEMBER=TCUTF60B SELECT MEMBER=TCUTF61A SELECT MEMBER=TCUTF61B SELECT MEMBER=TCUTF62A SELECT MEMBER=TCUTF62B SELECT MEMBER=TCUTF62C SELECT MEMBER=TCUTF63A SELECT MEMBER=TCUTF63B SELECT MEMBER=TCUTF64A SELECT MEMBER=TCUTF64B SELECT MEMBER=TCUTF65A SELECT MEMBER=TCUTF65B SELECT MEMBER=TCUTF66A SELECT MEMBER=TCUTF66B SELECT MEMBER=TCUTF67A SELECT MEMBER=TCUTF67B SELECT MEMBER=TCUTF68A SELECT MEMBER=TCUTF68B SELECT MEMBER=TCUTF69A SELECT MEMBER=TCUTF69B SELECT MEMBER=TCUTF70A SELECT MEMBER=TCUTF70B SELECT MEMBER=TCUTF70C SELECT MEMBER=TCUTF71A SELECT MEMBER=TCUTF71B SELECT MEMBER=TCUTF71C SELECT MEMBER=TCUTF72A SELECT MEMBER=TCUTF72B SELECT MEMBER=TCUTF73A SELECT MEMBER=TCUTF73B SELECT MEMBER=TCUTF74A SELECT MEMBER=TCUTF74B SELECT MEMBER=TCUTF75A SELECT MEMBER=TCUTF75B SELECT MEMBER=TCUTF76A SELECT MEMBER=TCUTF76B SELECT MEMBER=TCUTF77A SELECT MEMBER=TCUTF77B SELECT MEMBER=TCUTF78A SELECT MEMBER=TCUTF78B SELECT MEMBER=TCUTF79A SELECT MEMBER=TCUTF79B SELECT MEMBER=TCUTF80A SELECT MEMBER=TCUTF80B SELECT MEMBER=TCUTL001 SELECT MEMBER=TCUTL002 SELECT MEMBER=TCUTL003 SELECT MEMBER=TCUTL100 SELECT MEMBER=TCUTLA01 SELECT MEMBER=TCUTLA02 SELECT MEMBER=TCUTLA03 SELECT MEMBER=TCUTLB01 SELECT MEMBER=TCUTLB02 SELECT MEMBER=TCUTLB03 SELECT MEMBER=TCUTLB04 SELECT MEMBER=TCUTLC01 SELECT MEMBER=TCUTLC02 SELECT MEMBER=TCUTLC03 SELECT MEMBER=TCUTLC04 SELECT MEMBER=TCUTLC05 SELECT MEMBER=TCUTLC06 SELECT MEMBER=TCUTLC07 SELECT MEMBER=TCUTLD01 SELECT MEMBER=TCUTLD02 SELECT MEMBER=TCUTLD03 SELECT MEMBER=TCUTLD04 //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! */ //* //* -------------------------------------------------------* //* * If SYSn.LINKLIB or SYSn.CMDLIB is updated * //* -------------------------------------------------------* //DBSTOP EXEC DBSTOP, // COND=(0,NE) //DBSTART EXEC DBSTART, // COND=(0,NE) // ______________________________________________________________________ Figure 5: $UP1109.JCL Upgrade from previous version to V1R1M09 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: - Upgrading from V1R1M06, use $UP1109.JCL - All other releases must be full installs! e) After upgrade is applied, proceed to validation, STEP 11. +--------------------------------------------------------------------+ | Step 7. Install TSO parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.CUTIL00.V1R1M09.CNTL($INST03) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL003 JOB (SYS),'Install TSO Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 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.CUTIL00.V1R1M09.CLIST,DISP=SHR //INHELP DD DSN=SHRABIT.CUTIL00.V1R1M09.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=CCUTIL00 SELECT MEMBER=CCUTIL0V COPY INDD=((INHELP,R)),OUTDD=OUTHELP SELECT MEMBER=CUTIL00 SELECT MEMBER=CCUTIL00 /* // ______________________________________________________________________ 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 CUTIL00 Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.CUTIL00.V1R1M09.CNTL($INST04) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL004 JOB (SYS),'Install CUTIL00', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST04 Install CUTIL00 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, // MBR=WHOWHAT //* //ASM EXEC PGM=IFOX00, // PARM='NODECK,LOAD,RENT,TERM,XREF' //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='MAP,LIST,LET,RENT,XREF', // 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 CUTIL00 to SYS2.CMDLIB * //* -------------------------------------------------------* //CUTIL00 EXEC ASML,HLQ='SHRABIT.CUTIL00',VRM=V1R1M09,MBR=CUTIL00, // PARM.LKED='MAP,LIST,LET,RENT,XREF,REUS,REFR' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.CMDLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * Assemble Link-Edit CUTILTBL to SYS2.CMDLIB * //* -------------------------------------------------------* //CUTILTBL EXEC ASML,HLQ='SHRABIT.CUTIL00',VRM=V1R1M09,MBR=CUTILTBL, // PARM.LKED='MAP,LIST,LET,RENT,XREF,REUS,REFR' //LKED.SYSLMOD DD DISP=SHR, // DSN=SYS2.CMDLIB(&MBR) <--TARGET //* //* -------------------------------------------------------* //* * * //* * If SYSn.LINKLIB or SYSn.CMDLIB is updated * //* * * //* -------------------------------------------------------* //DBSTOP EXEC DBSTOP, // COND=(0,NE) //DBSTART EXEC DBSTART, // COND=(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.CUTIL00.V1R1M09.CNTL($INST05) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL005 JOB (SYS),'Install ISPF Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST05 Install ISPF parts * //* * * //* * Note: Duplicate members are over-written. * //* * * //* * * //* * - Uses ISPF 2.1 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.CUTIL00',VRM=V1R1M09, // 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=CCUTIL0I //ADDMLIB.SYSIN DD * MLIB COPY INDD=((MLIBIN,R)),OUTDD=MLIBOUT SELECT MEMBER=CUTIL0 //ADDPLIB.SYSIN DD * PLIB COPY INDD=((PLIBIN,R)),OUTDD=PLIBOUT SELECT MEMBER=PCUTIL00 SELECT MEMBER=PCUTIL01 SELECT MEMBER=HCUTIL00 SELECT MEMBER=TCUTF01A SELECT MEMBER=TCUTF01B SELECT MEMBER=TCUTF02A SELECT MEMBER=TCUTF02B SELECT MEMBER=TCUTF03A SELECT MEMBER=TCUTF03B SELECT MEMBER=TCUTF04A SELECT MEMBER=TCUTF04B SELECT MEMBER=TCUTF07A SELECT MEMBER=TCUTF07B SELECT MEMBER=TCUTF08A SELECT MEMBER=TCUTF08B SELECT MEMBER=TCUTF09A SELECT MEMBER=TCUTF09B SELECT MEMBER=TCUTF10A SELECT MEMBER=TCUTF10B SELECT MEMBER=TCUTF11A SELECT MEMBER=TCUTF11B SELECT MEMBER=TCUTF12A SELECT MEMBER=TCUTF12B SELECT MEMBER=TCUTF13A SELECT MEMBER=TCUTF13B SELECT MEMBER=TCUTF14A SELECT MEMBER=TCUTF14B SELECT MEMBER=TCUTF15A SELECT MEMBER=TCUTF15B SELECT MEMBER=TCUTF16A SELECT MEMBER=TCUTF16B SELECT MEMBER=TCUTF17A SELECT MEMBER=TCUTF17B SELECT MEMBER=TCUTF18A SELECT MEMBER=TCUTF18B SELECT MEMBER=TCUTF19A SELECT MEMBER=TCUTF19B SELECT MEMBER=TCUTF20A SELECT MEMBER=TCUTF20B SELECT MEMBER=TCUTF21A SELECT MEMBER=TCUTF21B SELECT MEMBER=TCUTF22A SELECT MEMBER=TCUTF22B SELECT MEMBER=TCUTF23A SELECT MEMBER=TCUTF23B SELECT MEMBER=TCUTF24A SELECT MEMBER=TCUTF24B SELECT MEMBER=TCUTF25A SELECT MEMBER=TCUTF25B SELECT MEMBER=TCUTF26A SELECT MEMBER=TCUTF26B SELECT MEMBER=TCUTF27A SELECT MEMBER=TCUTF27B SELECT MEMBER=TCUTF28A SELECT MEMBER=TCUTF28B SELECT MEMBER=TCUTF29A SELECT MEMBER=TCUTF29B SELECT MEMBER=TCUTF30A SELECT MEMBER=TCUTF30B SELECT MEMBER=TCUTF31A SELECT MEMBER=TCUTF31B SELECT MEMBER=TCUTF32A SELECT MEMBER=TCUTF32B SELECT MEMBER=TCUTF33A SELECT MEMBER=TCUTF33B SELECT MEMBER=TCUTF34A SELECT MEMBER=TCUTF34B SELECT MEMBER=TCUTF35A SELECT MEMBER=TCUTF35B SELECT MEMBER=TCUTF36A SELECT MEMBER=TCUTF36B SELECT MEMBER=TCUTF37A SELECT MEMBER=TCUTF37B SELECT MEMBER=TCUTF38A SELECT MEMBER=TCUTF38B SELECT MEMBER=TCUTF39A SELECT MEMBER=TCUTF39B SELECT MEMBER=TCUTF40A SELECT MEMBER=TCUTF40B SELECT MEMBER=TCUTF41A SELECT MEMBER=TCUTF41B SELECT MEMBER=TCUTF42A SELECT MEMBER=TCUTF42B SELECT MEMBER=TCUTF43A SELECT MEMBER=TCUTF43B SELECT MEMBER=TCUTF44A SELECT MEMBER=TCUTF44B SELECT MEMBER=TCUTF45A SELECT MEMBER=TCUTF45B SELECT MEMBER=TCUTF46A SELECT MEMBER=TCUTF46B SELECT MEMBER=TCUTF47A SELECT MEMBER=TCUTF47B SELECT MEMBER=TCUTF48A SELECT MEMBER=TCUTF48B SELECT MEMBER=TCUTF49A SELECT MEMBER=TCUTF49B SELECT MEMBER=TCUTF50A SELECT MEMBER=TCUTF50B SELECT MEMBER=TCUTF51A SELECT MEMBER=TCUTF51B SELECT MEMBER=TCUTF52A SELECT MEMBER=TCUTF52B SELECT MEMBER=TCUTF53A SELECT MEMBER=TCUTF53B SELECT MEMBER=TCUTF54A SELECT MEMBER=TCUTF54B SELECT MEMBER=TCUTF55A SELECT MEMBER=TCUTF55B SELECT MEMBER=TCUTF56A SELECT MEMBER=TCUTF56B SELECT MEMBER=TCUTF57A SELECT MEMBER=TCUTF57B SELECT MEMBER=TCUTF58A SELECT MEMBER=TCUTF58B SELECT MEMBER=TCUTF59A SELECT MEMBER=TCUTF59B SELECT MEMBER=TCUTF60A SELECT MEMBER=TCUTF60B SELECT MEMBER=TCUTF61A SELECT MEMBER=TCUTF61B SELECT MEMBER=TCUTF62A SELECT MEMBER=TCUTF62B SELECT MEMBER=TCUTF62C SELECT MEMBER=TCUTF63A SELECT MEMBER=TCUTF63B SELECT MEMBER=TCUTF64A SELECT MEMBER=TCUTF64B SELECT MEMBER=TCUTF65A SELECT MEMBER=TCUTF65B SELECT MEMBER=TCUTF66A SELECT MEMBER=TCUTF66B SELECT MEMBER=TCUTF67A SELECT MEMBER=TCUTF67B SELECT MEMBER=TCUTF68A SELECT MEMBER=TCUTF68B SELECT MEMBER=TCUTF69A SELECT MEMBER=TCUTF69B SELECT MEMBER=TCUTF70A SELECT MEMBER=TCUTF70B SELECT MEMBER=TCUTF70C SELECT MEMBER=TCUTF71A SELECT MEMBER=TCUTF71B SELECT MEMBER=TCUTF71C SELECT MEMBER=TCUTF72A SELECT MEMBER=TCUTF72B SELECT MEMBER=TCUTF73A SELECT MEMBER=TCUTF73B SELECT MEMBER=TCUTF74A SELECT MEMBER=TCUTF74B SELECT MEMBER=TCUTF75A SELECT MEMBER=TCUTF75B SELECT MEMBER=TCUTF76A SELECT MEMBER=TCUTF76B SELECT MEMBER=TCUTF77A SELECT MEMBER=TCUTF77B SELECT MEMBER=TCUTF78A SELECT MEMBER=TCUTF78B SELECT MEMBER=TCUTF79A SELECT MEMBER=TCUTF79B SELECT MEMBER=TCUTF80A SELECT MEMBER=TCUTF80B SELECT MEMBER=TCUTL001 SELECT MEMBER=TCUTL002 SELECT MEMBER=TCUTL003 SELECT MEMBER=TCUTL100 SELECT MEMBER=TCUTLA01 SELECT MEMBER=TCUTLA02 SELECT MEMBER=TCUTLA03 SELECT MEMBER=TCUTLB01 SELECT MEMBER=TCUTLB02 SELECT MEMBER=TCUTLB03 SELECT MEMBER=TCUTLB04 SELECT MEMBER=TCUTLC01 SELECT MEMBER=TCUTLC02 SELECT MEMBER=TCUTLC03 SELECT MEMBER=TCUTLC04 SELECT MEMBER=TCUTLC05 SELECT MEMBER=TCUTLC06 SELECT MEMBER=TCUTLC07 SELECT MEMBER=TCUTLD01 SELECT MEMBER=TCUTLD02 SELECT MEMBER=TCUTLD03 SELECT MEMBER=TCUTLD04 //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.CUTIL00.V1R1M09.CNTL($INST40) | +--------------------------------------------------------------------+ ______________________________________________________________________ //CUTIL040 JOB (SYS),'Install Other Pgms', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for 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 11. Validate CUTIL00 | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.CUTIL00.V1R1M09.CNTL($IVP1) | +--------------------------------------------------------------------+ ______________________________________________________________________ //IVP1 JOB (SYS),'CUTIL00 IPV1', <-- Review and Modify // CLASS=A,MSGCLASS=A, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * * //* * JOB: $IVP1 * //* * Run CUTIL00 Validation * //* * * //* * CUTIL00 validation via CCLIST0V using BATCH TSO * //* * of documented function in program documentation. * //* * * //* * Note: CLIST are resolved from SYS2.CMDPROC * //* * and tagged with <--TARGET for search * //* * purposes. * //* -------------------------------------------------------* //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 //* //TESTIT0 EXEC BATCHTSO //STEP01.SYSTSIN DD * CCUTIL0V /* // ______________________________________________________________________ Figure 10: $IVP1 JCL a) Member $IVP1 validates CUTIL00. 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. Return codes will vary but a PASS / FAIL message is displayed for each function. Expected results are all PASS. +--------------------------------------------------------------------+ | Step 12. CUTIL00 Samples | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.CUTIL00.V1R1M09.CNTL($SAMPLES) | +--------------------------------------------------------------------+ ______________________________________________________________________ //IVPS JOB (SYS),'CUTIL00 IPVS', <-- Review and Modify // CLASS=A,MSGCLASS=A, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * CUTIL00 for MVS3.8J TSO / Hercules * //* * * //* * JOB: $IVP1 * //* * Run CUTIL00 Samples * //* * * //* * CUTIL00 validation via CCUTIL00 using BATCH TSO * //* * of sample functions. * //* * * //* * Note: CLIST are resolved from SYS2.CMDPROC * //* * and tagged with <--TARGET for search * //* * purposes. * //* -------------------------------------------------------* //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 //* //TESTITS EXEC BATCHTSO //STEP01.SYSTSIN DD * CCUTIL00 ABOUT VERBOSE(N) CCUTIL00 LTRIM VAR01(' LEADING SPACES') VAR02('') VERBOSE(N) CCUTIL00 RTRIM VAR01('TRAILING SPACES ') VAR02('') VERBOSE(N) CCUTIL00 TRIM VAR01(' TRIM MY DATA ') VAR02('') VERBOSE(N) CCUTIL00 TRIM$ VAR01(' TRIM MY DATA ') VAR02('') VERBOSE(N) CCUTIL00 INDEX VAR01('MY, STRING, OK? ') VAR02('","') VERBOSE(N) CCUTIL00 INDEXB VAR01('MY, STRING, OK? ') VAR02('","') VERBOSE(N) CCUTIL00 ISNUM VAR01('0123456789') VERBOSE(N) CCUTIL00 ISALPHA VAR01('ABCDEFGHIJ') VERBOSE(N) CCUTIL00 ISLOWER VAR01('abcdefghij') VERBOSE(N) CCUTIL00 ISUPPER VAR01('ABCDEFGHIJ') VERBOSE(N) CCUTIL00 ISBLANK VAR01(' ') VERBOSE(N) CCUTIL00 ISDSN VAR01('A.A1234567') VERBOSE(N) CCUTIL00 ECHO VAR01('MY DATA TO DISPLAY') VERBOSE(N) CCUTIL00 ECHOQ VAR01('MY DATA TO DISPLAY') VERBOSE(N) CCUTIL00 REVRS VAR01('ABCDEFGHIJKLM96%QRS') VAR02('') VERBOSE(N) CCUTIL00 UPPERC VAR01('ABCDEFGHIJKLMNOPQRS') VERBOSE(N) CCUTIL00 LOWERC VAR01('ABCDEFGHIJKLMNOPQRS') VAR02('') VERBOSE(N) CCUTIL00 COUNT VAR01('MY NAME IS DINO, BIG DINO.') VAR02('"DINO"') - VERBOSE(N) CCUTIL00 FIND VAR01('MY NAME IS DINO, BIG DINO.') VAR02('"DINO"') - VERBOSE(N) CCUTIL00 FINDL VAR01('MY NAME IS DINO, BIG DINO.') VAR02('"DINO"') - VERBOSE(N) CCUTIL00 CENTER VAR01('CENTER THIS T E X T ... ') VAR02('') - VERBOSE(N) CCUTIL00 LJUST VAR01(' JUSTIFY THIS TEXT ') VAR02('') VERBOSE(N) CCUTIL00 RJUST VAR01(' JUSTIFY THIS TEXT ') VAR02('') VERBOSE(N) CCUTIL00 ZFILL VAR01('12 ') VAR02('') VERBOSE(N) CCUTIL00 WORDS VAR01(' ONE TEWO THREE33 FOUR., FIVE ') VERBOSE(N) CCUTIL00 GEN# VAR01('') VERBOSE(N) CCUTIL00 DD2DSN VAR01('SYSPROC') VAR02('') VERBOSE(N) CCUTIL00 JOBINFO VAR01('') VERBOSE(N) CCUTIL00 DAYSMM VAR01('022016') VERBOSE(N) CCUTIL00 DAYSYY VAR01('2020') VERBOSE(N) CCUTIL00 ISLEAP VAR01('2020') VERBOSE(N) CCUTIL00 CYJ-D8 VAR01('2020061') VAR02('') VERBOSE(N) CCUTIL00 CYJ-DAY VAR01('1981061') VAR02('') VERBOSE(N) CCUTIL00 CYJ-DOW VAR01('1981061') VAR02('') VERBOSE(N) CCUTIL00 CYJ-MDCY VAR01('2020061') VAR02('') VERBOSE(N) CCUTIL00 JCY-D8 VAR01('1612017') VAR02('') VERBOSE(N) CCUTIL00 JCY-DAY VAR01('0611981') VAR02('') VERBOSE(N) CCUTIL00 JCY-DOW VAR01('0611981') VAR02('') VERBOSE(N) CCUTIL00 JCY-MDCY VAR01('1612017') VAR02('') VERBOSE(N) CCUTIL00 MDCY-D8 VAR01('12101990') VAR02('') VERBOSE(N) CCUTIL00 MDCY-DAY VAR01('12101990') VAR02('') VERBOSE(N) CCUTIL00 MDCY-DOW VAR01('12101990') VAR02('') VERBOSE(N) CCUTIL00 MDCY-CYJ VAR01('12101990') VAR02('') VERBOSE(N) CCUTIL00 DMCY-D8 VAR01('15071987') VAR02('') VERBOSE(N) CCUTIL00 DMCY-DAY VAR01('15071987') VAR02('') VERBOSE(N) CCUTIL00 DMCY-DOW VAR01('15071987') VAR02('') VERBOSE(N) CCUTIL00 DMCY-CYJ VAR01('15071987') VAR02('') VERBOSE(N) CCUTIL00 CYMD-D8 VAR01('19951231') VAR02('') VERBOSE(N) CCUTIL00 CYMD-DAY VAR01('19951231') VAR02('') VERBOSE(N) CCUTIL00 CYMD-DOW VAR01('19951231') VAR02('') VERBOSE(N) CCUTIL00 CYMD-CYJ VAR01('19951231') VAR02('') VERBOSE(N) CCUTIL00 CYDM-D8 VAR01('19951605') VAR02('') VERBOSE(N) CCUTIL00 CYDM-DAY VAR01('19951605') VAR02('') VERBOSE(N) CCUTIL00 CYDM-DOW VAR01('19951605') VAR02('') VERBOSE(N) CCUTIL00 CYDM-CYJ VAR01('19951605') VAR02('') VERBOSE(N) CCUTIL00 FILL VAR01('') VAR02('*20') VERBOSE(N) CCUTIL00 LSTRIP VAR01(',,28,BC,') VAR02(',') VERBOSE(N) CCUTIL00 RSTRIP VAR01(',,28,BC,') VAR02(',') VERBOSE(N) CCUTIL00 STRIP VAR01(',,28,BC,') VAR02(',') VERBOSE(N) CCUTIL00 STRIP$ VAR01(',,28,BC,') VAR02(',') VERBOSE(N) CCUTIL00 CONCAT VAR01('STRING DATA 1.') - VAR02('A RESULT STRING 2.') VERBOSE(N) CCUTIL00 UNSTR VAR01('1234567 AND SO ON . I AM 78 LONG. ') - VAR02('7') VERBOSE(N) CCUTIL00 REPLACE VAR01('1234567 AND SO ON . I AM 7879.') - VAR02('"SO ON ","890123456--"') VERBOSE(N) CCUTIL00 VEXIST VAR01('VAR01') VERBOSE(N) CCUTIL00 VEXIST VAR01('DDD01') VERBOSE(N) CCUTIL00 TDSN VAR01('HERC01.CARDS.') VERBOSE(N) CCUTIL00 NOW VAR01('') VERBOSE(N) CCUTIL00 PAD VAR01('MAKE ME 30 LONG') VAR02(' 30') VERBOSE (N) CCUTIL00 GET1V VAR01('THE TABLE TOP IS CLEAR') VAR02('x11') - VERBOSE (N) CCUTIL00 PUT1V VAR01('THE TABLE TOP IS CLEAR') VAR02('N22') - VERBOSE (N) CCUTIL00 MCAL VAR01('') VAR02('') VERBOSE (N) CCUTIL00 LEN VAR01(' MY WORD IN THE STRING ') - VERBOSE (N) CCUTIL00 SLEN VAR01(' MY WORD IN THE STRING ') - VERBOSE (N) CCUTIL00 OVERLAY VAR01(' MY TEXT TO BE OVERLAYED OK!! ') - VAR02('"----- ",7') VERBOSE(N) CCUTIL00 UTDSN VAR01('CARDS') VERBOSE (N) CCUTIL00 TRUNC VAR01('THE MAN WALKED HERE') - VAR02('x07') VERBOSE(N) CCUTIL00 ISHEX VAR01('A123FA67BD') VERBOSE(N) CCUTIL00 CC2H VAR01('1995STAR') VERBOSE(N) CCUTIL00 CH2C VAR01('C1C203') VERBOSE(N) CCUTIL00 ISEVEN VAR01('1234567890') VERBOSE(N) /* // ______________________________________________________________________ Figure 11: $SAMPLES JCL a) Member $SAMPLES runs the CUTIL00 program samples using PROC CCUTIL00. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output at your leisure. Return codes will vary by function. +--------------------------------------------------------------------+ | Step 13. Validate CUTIL00 ISPF 2.x application | +--------------------------------------------------------------------+ a) This step can be omitted if ISPF 2.x is NOT installed on your system. Proceed to the next step. b) From the ISPF Main Menu, select option 6, COMMAND. The TSO COMMAND PROCESSOR panel will display. c) Enter the TSO command: %CCUTIL0I d) The panel PCUTIL00, CUTIL00 for MVS 38J, is displayed. Type the following information in the upper left corner: o Type JOBINFO for FUNCTION o Type N for VAR1 Quote o Type N for VAR2 Use o Press ENTER o Results will display under VAR1 ruler on the panel Comprised of three 8-byte fields - Userid, TSO proc name, and Logon proc name o Press PF1 to display help panel, HCUTIL00 o Press PF3 twice to exit help and application panel e) Validation for CUTIL00 ISPF 2.x Application is complete. Enjoy CUTIL00 for MVS 3.8J! ====================================================================== * IV. S o f t w a r e I n v e n t o r y L i s t | ====================================================================== - SHRABIT.CUTIL00.V1R1M09.ASM $ . CUTIL00 TSO CP for CLIST Variables $ . CUTILTBL CUTIL00 table processor - SHRABIT.CUTIL00.V1R1M09.CLIST . CCUTIL00 Testing harness CLIST . CCUTIL0V IVP CLIST - SHRABIT.CUTIL00.V1R1M09.CNTL $ . $INST00 Define Alias for HLQ CUTIL00 $ . $INST01 Load CNTL data set from distribution tape (HET) $ . $INST02 Load other data sets from distribution tape (HET) $ . $INST03 Install TSO Parts $ . $INST04 Install CUTIL00 CP $ . $INST05 Install ISPF Parts $ . $INST40 Install Other Software # . $UP1109 Upgrade to V1R1M09 from V1R1M06 . $IVP1 IVP JCL # . $RECVTSO Receive XMI SEQ to MVS PDSs via TSO RECEIVE $ . $RECVXMI Receive XMI SEQ to MVS PDSs via RECV370 . $SAMPLES Samples JCL $ . DSCLAIMR Disclaimer $ . PREREQS Required User-mods $ . README Documentation and Installation instructions - SHRABIT.CUTIL00.V1R1M09.HELP . CUTIL00 CUTIL00 Help member $ . CCUTIL00 CCUTIL00 Help member - SHRABIT.CUTIL00.V1R1M09.ISPF $ . CCUTIL0I CUTIL00 ISPF CLIST . CUTIL0 CUTIL00 Message file $ . HCUTIL00 CUTIL00 Help panel $ . PCUTIL00 CUTIL00 ISPF panel for command line request # . PCUTIL01 CUTIL00 ISPF panel for MCAL and MCALA results # . TCALF01A CUTIL00 Tutorial Panel Function 01 # . TCALF01B CUTIL00 Tutorial Panel Function 01 b # . TCALF02A CUTIL00 Tutorial Panel Function 02 # . TCALF02B CUTIL00 Tutorial Panel Function 02 b # . TCALF03A CUTIL00 Tutorial Panel Function 03 # . TCALF03B CUTIL00 Tutorial Panel Function 03 b # . TCALF04A CUTIL00 Tutorial Panel Function 04 # . TCALF04B CUTIL00 Tutorial Panel Function 04 b # . TCALF07A CUTIL00 Tutorial Panel Function 07 # . TCALF07B CUTIL00 Tutorial Panel Function 07 b # . TCALF08A CUTIL00 Tutorial Panel Function 08 # . TCALF08B CUTIL00 Tutorial Panel Function 08 b # . TCALF09A CUTIL00 Tutorial Panel Function 09 # . TCALF09B CUTIL00 Tutorial Panel Function 09 b # . TCALF10A CUTIL00 Tutorial Panel Function 10 # . TCALF10B CUTIL00 Tutorial Panel Function 10 b # . TCALF11A CUTIL00 Tutorial Panel Function 11 # . TCALF11B CUTIL00 Tutorial Panel Function 11 b # . TCALF12A CUTIL00 Tutorial Panel Function 12 # . TCALF12B CUTIL00 Tutorial Panel Function 12 b # . TCALF13A CUTIL00 Tutorial Panel Function 13 # . TCALF13B CUTIL00 Tutorial Panel Function 13 b # . TCALF14A CUTIL00 Tutorial Panel Function 14 # . TCALF14B CUTIL00 Tutorial Panel Function 14 b # . TCALF15A CUTIL00 Tutorial Panel Function 15 # . TCALF15B CUTIL00 Tutorial Panel Function 15 b # . TCALF16A CUTIL00 Tutorial Panel Function 16 # . TCALF16B CUTIL00 Tutorial Panel Function 16 b # . TCALF17A CUTIL00 Tutorial Panel Function 17 # . TCALF17B CUTIL00 Tutorial Panel Function 17 b # . TCALF18A CUTIL00 Tutorial Panel Function 18 # . TCALF18B CUTIL00 Tutorial Panel Function 18 b # . TCALF19A CUTIL00 Tutorial Panel Function 19 # . TCALF19B CUTIL00 Tutorial Panel Function 19 b # . TCALF20A CUTIL00 Tutorial Panel Function 20 # . TCALF20B CUTIL00 Tutorial Panel Function 20 b # . TCALF21A CUTIL00 Tutorial Panel Function 21 # . TCALF21B CUTIL00 Tutorial Panel Function 21 b # . TCALF22A CUTIL00 Tutorial Panel Function 22 # . TCALF22B CUTIL00 Tutorial Panel Function 22 b # . TCALF22A CUTIL00 Tutorial Panel Function 23 # . TCALF22B CUTIL00 Tutorial Panel Function 23 b # . TCALF24A CUTIL00 Tutorial Panel Function 24 # . TCALF24B CUTIL00 Tutorial Panel Function 24 b # . TCALF25A CUTIL00 Tutorial Panel Function 25 # . TCALF25B CUTIL00 Tutorial Panel Function 25 b # . TCALF26A CUTIL00 Tutorial Panel Function 26 # . TCALF26B CUTIL00 Tutorial Panel Function 26 b # . TCALF27A CUTIL00 Tutorial Panel Function 27 # . TCALF27B CUTIL00 Tutorial Panel Function 27 b # . TCALF28A CUTIL00 Tutorial Panel Function 28 # . TCALF28B CUTIL00 Tutorial Panel Function 28 b # . TCALF29A CUTIL00 Tutorial Panel Function 29 # . TCALF29B CUTIL00 Tutorial Panel Function 29 b # . TCALF30A CUTIL00 Tutorial Panel Function 30 # . TCALF30B CUTIL00 Tutorial Panel Function 30 b # . TCALF31A CUTIL00 Tutorial Panel Function 31 # . TCALF31B CUTIL00 Tutorial Panel Function 31 b # . TCALF32A CUTIL00 Tutorial Panel Function 32 # . TCALF32B CUTIL00 Tutorial Panel Function 32 b # . TCALF32A CUTIL00 Tutorial Panel Function 33 # . TCALF32B CUTIL00 Tutorial Panel Function 33 b # . TCALF34A CUTIL00 Tutorial Panel Function 34 # . TCALF34B CUTIL00 Tutorial Panel Function 34 b # . TCALF35A CUTIL00 Tutorial Panel Function 35 # . TCALF35B CUTIL00 Tutorial Panel Function 35 b # . TCALF36A CUTIL00 Tutorial Panel Function 36 # . TCALF36B CUTIL00 Tutorial Panel Function 36 b # . TCALF37A CUTIL00 Tutorial Panel Function 37 # . TCALF37B CUTIL00 Tutorial Panel Function 37 b # . TCALF38A CUTIL00 Tutorial Panel Function 38 # . TCALF38B CUTIL00 Tutorial Panel Function 38 b # . TCALF39A CUTIL00 Tutorial Panel Function 39 # . TCALF39B CUTIL00 Tutorial Panel Function 39 b # . TCALF40A CUTIL00 Tutorial Panel Function 40 # . TCALF40B CUTIL00 Tutorial Panel Function 40 b # . TCALF41A CUTIL00 Tutorial Panel Function 41 # . TCALF41B CUTIL00 Tutorial Panel Function 41 b # . TCALF42A CUTIL00 Tutorial Panel Function 42 # . TCALF42B CUTIL00 Tutorial Panel Function 42 b # . TCALF42A CUTIL00 Tutorial Panel Function 43 # . TCALF42B CUTIL00 Tutorial Panel Function 43 b # . TCALF44A CUTIL00 Tutorial Panel Function 44 # . TCALF44B CUTIL00 Tutorial Panel Function 44 b # . TCALF45A CUTIL00 Tutorial Panel Function 45 # . TCALF45B CUTIL00 Tutorial Panel Function 45 b # . TCALF46A CUTIL00 Tutorial Panel Function 46 # . TCALF46B CUTIL00 Tutorial Panel Function 46 b # . TCALF47A CUTIL00 Tutorial Panel Function 47 # . TCALF47B CUTIL00 Tutorial Panel Function 47 b # . TCALF48A CUTIL00 Tutorial Panel Function 48 # . TCALF48B CUTIL00 Tutorial Panel Function 48 b # . TCALF49A CUTIL00 Tutorial Panel Function 49 # . TCALF49B CUTIL00 Tutorial Panel Function 49 b # . TCALF50A CUTIL00 Tutorial Panel Function 50 # . TCALF50B CUTIL00 Tutorial Panel Function 50 b # . TCALF51A CUTIL00 Tutorial Panel Function 51 # . TCALF51B CUTIL00 Tutorial Panel Function 51 b # . TCALF52A CUTIL00 Tutorial Panel Function 52 # . TCALF52B CUTIL00 Tutorial Panel Function 52 b # . TCALF52A CUTIL00 Tutorial Panel Function 53 # . TCALF52B CUTIL00 Tutorial Panel Function 53 b # . TCALF54A CUTIL00 Tutorial Panel Function 54 # . TCALF54B CUTIL00 Tutorial Panel Function 54 b # . TCALF55A CUTIL00 Tutorial Panel Function 55 # . TCALF55B CUTIL00 Tutorial Panel Function 55 b # . TCALF56A CUTIL00 Tutorial Panel Function 56 # . TCALF56B CUTIL00 Tutorial Panel Function 56 b # . TCALF57A CUTIL00 Tutorial Panel Function 57 # . TCALF57B CUTIL00 Tutorial Panel Function 57 b # . TCALF58A CUTIL00 Tutorial Panel Function 58 # . TCALF58B CUTIL00 Tutorial Panel Function 58 b # . TCALF59A CUTIL00 Tutorial Panel Function 59 # . TCALF59B CUTIL00 Tutorial Panel Function 59 b # . TCALF60A CUTIL00 Tutorial Panel Function 60 # . TCALF60B CUTIL00 Tutorial Panel Function 60 b # . TCALF61A CUTIL00 Tutorial Panel Function 61 # . TCALF61B CUTIL00 Tutorial Panel Function 61 b # . TCALF62A CUTIL00 Tutorial Panel Function 62 # . TCALF62B CUTIL00 Tutorial Panel Function 62 b # . TCALF62C CUTIL00 Tutorial Panel Function 62 c # . TCALF63A CUTIL00 Tutorial Panel Function 63 # . TCALF63B CUTIL00 Tutorial Panel Function 63 b # . TCALF64A CUTIL00 Tutorial Panel Function 64 # . TCALF64B CUTIL00 Tutorial Panel Function 64 b # . TCALF65A CUTIL00 Tutorial Panel Function 65 # . TCALF65B CUTIL00 Tutorial Panel Function 65 b # . TCALF66A CUTIL00 Tutorial Panel Function 66 # . TCALF66B CUTIL00 Tutorial Panel Function 66 b # . TCALF67A CUTIL00 Tutorial Panel Function 67 # . TCALF67B CUTIL00 Tutorial Panel Function 67 b # . TCALF68A CUTIL00 Tutorial Panel Function 68 # . TCALF68B CUTIL00 Tutorial Panel Function 68 b # . TCALF69A CUTIL00 Tutorial Panel Function 69 # . TCALF69B CUTIL00 Tutorial Panel Function 69 b # . TCALF70A CUTIL00 Tutorial Panel Function 70 # . TCALF70B CUTIL00 Tutorial Panel Function 70 b # . TCALF70C CUTIL00 Tutorial Panel Function 70 c # . TCALF71A CUTIL00 Tutorial Panel Function 71 # . TCALF71B CUTIL00 Tutorial Panel Function 71 b # . TCALF71C CUTIL00 Tutorial Panel Function 71 c # . TCALF72A CUTIL00 Tutorial Panel Function 72 # . TCALF72B CUTIL00 Tutorial Panel Function 72 b # . TCALF73A CUTIL00 Tutorial Panel Function 73 # . TCALF73B CUTIL00 Tutorial Panel Function 73 b # . TCALF74A CUTIL00 Tutorial Panel Function 74 # . TCALF74B CUTIL00 Tutorial Panel Function 74 b # . TCALF75A CUTIL00 Tutorial Panel Function 75 # . TCALF75B CUTIL00 Tutorial Panel Function 75 b # . TCALF76A CUTIL00 Tutorial Panel Function 76 # . TCALF76B CUTIL00 Tutorial Panel Function 76 b # . TCALF77A CUTIL00 Tutorial Panel Function 77 # . TCALF77B CUTIL00 Tutorial Panel Function 77 b # . TCALF78A CUTIL00 Tutorial Panel Function 78 # . TCALF78B CUTIL00 Tutorial Panel Function 78 b # . TCALF79A CUTIL00 Tutorial Panel Function 79 # . TCALF79B CUTIL00 Tutorial Panel Function 79 b # . TCALF80A CUTIL00 Tutorial Panel Function 80 # . TCALF80B CUTIL00 Tutorial Panel Function 80 b # . TCALU001 CUTIL00 Tutorial Panel Overview # . TCALU002 CUTIL00 Tutorial Panel Overview # . TCALU003 CUTIL00 Tutorial Panel Overview # . TCALUA01 CUTIL00 Tutorial Panel Command Syntax # . TCALUA02 CUTIL00 Tutorial Panel Command Syntax # . TCALUA03 CUTIL00 Tutorial Panel Command Syntax # . TCALUB01 CUTIL00 Tutorial Panel Return Codes # . TCALUB02 CUTIL00 Tutorial Panel Return Codes # . TCALUB03 CUTIL00 Tutorial Panel Return Codes # . TCALUB04 CUTIL00 Tutorial Panel Return Codes # . TCALUC01 CUTIL00 Tutorial Panel Functions # . TCALUC02 CUTIL00 Tutorial Panel Functions # . TCALUC03 CUTIL00 Tutorial Panel Functions # . TCALUC04 CUTIL00 Tutorial Panel Functions # . TCALUC05 CUTIL00 Tutorial Panel Functions # . TCALUC06 CUTIL00 Tutorial Panel Functions # . TCALUC07 CUTIL00 Tutorial Panel Functions - SHRABIT.CUTIL00.V1R1M09.MACLIB . README Dummy member, this is intentional - 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 CUTIL00 zip file to your PC local drive.
Closing
Use the utility CUTIL00 for your TSO CLIST development on your MVS3.8J system.
Please use the comment box below or the contact us link on the menu bar to communicate any suggestions, improvements, corrections or issues regarding CUTIL00.
Thank You.
Version History
* * * MM/DD/CCYY Version Change Description * ---------- ------- ----------------------------------------------- * 04/15/2024 1.1.09 - Correct REPLACE function to return # of changed * sub-strings in RC * - Correct ZFILL to return zeros when blank string * is passed * - Add new panel to display results from MCAL * and MCALA * * 02/14/2024 1.1.08 - Add MYTUTOR command to panel from CCUTIL0I * - Add tutorial screens * - Correct '2J2M' function in CUTILTBL module * - Stop command line parse when '/*' (comment) * is detected in CUTIL00 module * - Miscellaneous documentation and program updates * * 06/07/2023 1.1.07 - Add trailing attribute4 at end of month * for MCALA function and documentation update * * 01/31/2023 1.1.06 - Add new functions ISHEX H2C C2H ISEVEN * - Modify MCALA function to use hex attributes * - Miscellaneous documentation and program updates * * 10/05/2021 1.1.05 - Add new functions LEN SLEN OVERLAY UTDSN TRUNC * - Correction to REPLACE function * - Load CUTILTBL and call via BALR * - Miscellaneous documentation and program updates * * 04/10/2021 1.1.00 - Add new functions GET1 PUT1 MCAL * - Externalize constants and tables to new program * - Miscellaneous documentation and program updates * * 05/03/2020 1.0.10 - Change software distribution packaging and * installation procedure to use Hercules * Emulated Tape (HET) * - No change to CUTIL00 program * * 04/20/2020 1.0.01 - Correction to Step ADDHELP in $inst01.JCL to * load two HELP members instead of one * - Thanks to Tom Armstrong!! * * 03/20/2020 1.0.00 Initial version released to MVS 3.8J * hobbyist public domain *
I’m currently working on IKJCT441 brother/sister IRXEXCOM.
May be your cool tooling can serve rexx variables too, later on?
Great work, Thank yo
Sounds great, Mike! I’ll keep an eye out for your version of IRXEXCOM.
Hi, I think I deserve the title of your best PIA (pain in the…)
The changelog reads latest version 1.1.06 but the download link leads to version 1.1.05
Marco
Hi, Marco!
No worries. I always welcome feedback!
Thanks for the awareness update… Apparently, I partially updated the web post for CUTIL00 early last year.
Post is updated with correct download of V1R1M06 and README file.