BASIC, CLIST, COBOL, Fortran H, HTML, ISPF 2.x, JavaScript, MVS38J, TSO

GGUESS in MVS38J

GGUESS – Number Guessing Game across technology stacks from PC BASIC to MVS 3.8J TSO / ISPF / KICKS /Hercules to HTML JavaScript
(current version 0.9.00  2024-05-01)

One of my first programs to write (during the late 1970’s) was a number guessing game using interactive BASIC interpreters on the Altair 8800 and TRS-80 Model I microcomputers (Intel 8080 CPU).

The program logic consisted of random number generation, obtaining end-user guess, tracking number of guesses, providing end-user feedback (too low or too high guess) until the number is correctly guessed or end-user quits the game!!

A version of the BASIC program is below which runs on a TRS-80 Model I with Level 2 BASIC:

                                                                
10 rem *********************************************
20 rem *            NUMBER GUESSING GAME           *
25 rem *  ---------------------------------------- *
30 rem *  Randomly generate a number from 0 to 99. *
40 rem *  User attempts to guess the number while  *
50 rem *  computer tracks the number of attempts.  *
60 rem *  Game can be stopped by typing a Q or q   *
70 rem *  instead of a guess.                      *
75 rem *                                           *
80 rem *  Enjoy!                                   *
90 rem *  Larry Belmontes                          *
95 rem *********************************************
                                                          
100 print "Welcome to the Number Guessing Game" 
105 print " "               
110 print "The rules are easy for this game.."
120 print "I will think of a number and you"
130 print "try to guess the number. I will keep"
140 print "track of tries.  Sound easy, ha!"
150 print "** The number is from 0 to 99 **"
160 print " "
170 print " "
180 print "Well, key in a number as your guess to start."
200 rem *********************************************
201 rem * Generate a random number, 0-99            *
202 rem *********************************************
210 random
220 n = int(rnd(0) * 99)
230 rem print n
250 utries = 0
300 rem *********************************************
301 rem * Users Guess                               *
302 rem *********************************************
310 input "Your guess "; guess$
320 if left$(guess$,1) = "Q" goto 4000
330 if left$(guess$,1) = "q" goto 4000
340 guess = val(guess$)
350 if guess = n goto 1000
360 utries = utries + 1
370 if guess > n goto 2000
380 goto 3000

1000 rem *********************************************
1001 rem * Guessed the number!                       *
1002 rem *********************************************
1010 print "Congratulations!! You guessed my number."
1020 print "It took you "; utries; " tries."
1030 print "*** Type RUN for another game ***"
1040 print "Bye!    Enjoyed playing with you."
1050 end
 
2000 rem *********************************************
2001 rem * User Guess too high                       *
2002 rem *********************************************
2010 print "Sorry.  Try another number. -- Too High --" 
2020 goto 300

3000 rem *********************************************
3001 rem * User Guess too low                        *
3002 rem *********************************************
3010 print "Sorry.  Try another number. -- Too Low  --" 
3020 goto 300

4000 rem *********************************************
4001 rem * User quit game                            *
4002 rem *********************************************
4010 print "Game quit!"
4020 end

Once the program is loaded into the interactive BASIC interpreter , the program is executed via the RUN command as shown below:

READY                                                           
>run                                                            
Welcome to the Number Guessing Game                             
                                                                
The rules are easy for this game..                              
I will think of a number and you                                
try to guess the number. I will keep                            
track of tries.  Sound easy, ha!                                
** The number is from 0 to 99 **                                
                                                                
                                                                
Well, key in a number (2 digits) to start game.                   
Your guess ? 50                                                 
Sorry.  Try another number. -- Too Low  --                      
Your guess ? 60                                                 
Sorry.  Try another number. -- Too High --                      
Your guess ? 55                                                 
Sorry.  Try another number. -- Too Low  --                      
Your guess ? 56                                                 
Congratulations!! You guessed my number.                        
It took you  3  tries.                                          
*** Type RUN for another game ***     
READY                                                           
>                                                               

The Number Guessing Game provided entertainment and interesting conversation topics during the start of the personal computing era with my computer science pals while in college!

The above BASIC program can be downloaded from here.

As an progressive educational exercise, let’s transition the game from a micro-computer to a more mature computing platform – a Mainframe running MVS 3.8J.

Hmm…

Rewrite the Number Guessing Game using COBOL to run under CICS?

What about TSO CLIST? Or, ISPF 2.x?

Wow! I’m ready… Let’s go…

Transition to KICKS

KICKS is a stand-alone CICS-like simulator package that runs as a MVS 3.8J TSO session or VM/370 CMS written by Mike Noel. KICKS executes as a single user instance unlike the real IBM CICS product.

See this URL for more information on KICKS including downloads.

The CICS programs described below were originally written in 1982 using CICS version 1.4 (if my memory serves me right…) under DOS/VS R34.

This transition assumes KICKS v1.5 is already installed on your installation.

The KICKS game software consists of two programs-

  1. Program GUESS01 (COBOL/CICS), TransID GES1
    Display game title and background message (no maps!), generate a random number via a Fortran subroutine, store random number in a transient queue for subsequent use, and issues return to transID GES2.
  2. Program GUESS02 (COBOL/CICS), TransID GES2
    Obtain end-users guess, validate guess for numeric values, fetch stored random number from transient queue, qualify guess (too high, too low), until end-user guesses correctly or quits the game.

Under the KICKS system, the EXEC CICS BIF DEEDIT command is not available. Therefore, a user-written subroutine is utilized to convert users guess input to numeric values (e.g. 1 converts to 01).

The two KICKS programs are over-designed to illustrate some usage of CICS commands.

The KICKS system software requires the below PCT and PPT configuration modifications before using transactions GES1 and GES2. See this URL for more information on KICKS Configuration, Tables.

1       10        20        30        40        50        60
+---+----+----+----+----+----+----+----+----+----+----+----+
*
*        Add the two below statements to KIKPCT1$ in the
*        KICKS system installation library for V1R5M0
*
         KIKPCT TYPE=ENTRY,TRANSID=GES1,PROGRAM=GUESS01     
         KIKPCT TYPE=ENTRY,TRANSID=GES2,PROGRAM=GUESS02     


1       10        20        30        40        50        60
+---+----+----+----+----+----+----+----+----+----+----+----+
*
*        Add the two below statements to KIKPPT1$ in the
*        KICKS system installation library for V1R5M0
*
         KIKPPT TYPE=ENTRY,PROGRAM=GUESS01,PGMLANG=CMDLVL   
         KIKPPT TYPE=ENTRY,PROGRAM=GUESS02,PGMLANG=CMDLVL   

Assembly of the two tables, PCT and PPT, is required before using the CICS guess game software.

Start KICKS from your TSO session. The below snippet initiate KICKS from ISPF as shown below:

 -------------------------  ISPF PRIMARY OPTION MENU  --------
 OPTION  ===> tso kicks5                                      
                                                              
    0  ISPF PARMS  - Specify terminal and user parms          
    1  BROWSE      - Display source data using Review         
    .
    .

KICKS start-up information is displayed as shown below:

 KICKS version 1.5.0(0) startup using SIT=1$,                     
       which with command line and stdin overrides results in...  
 loading KIKSIT1$ - 80 bytes at 2C7130, ep 2C7130                 
 loading KIKPCP1$ - 59600 bytes at 244730, ep 2447B8              
 loading KIKKCP1$ - 22216 bytes at 253938, ep 254168              
 loading KIKFCP1$ - 40280 bytes at 2592A8, ep 25957C              
 loading KIKDCP1$ - 35616 bytes at 26C4E0, ep 26C654              
 loading KIKBMS1$ - 17072 bytes at 263D50, ep 264278              
 loading KIKTCP2$ - 28360 bytes at 275138, ep 275228              
 loading KIKSCP1$ - 3456 bytes at 224280, ep 224290               
 loading KIKTSP1$ - 15072 bytes at 27C520, ep 27C538              
 loading KIKPPT1$ - 4784 bytes at 268D50, ep 268D50               
 loading KIKPCT1$ - 2072 bytes at 253120, ep 253120               
 loading KIKFCT1$ - 12664 bytes at 280E88, ep 280E88              
 loading KIKDCT1$ - 256 bytes at 253020, ep 253020                
                                                                  
 OPID=999,  DMPCLASS=A,  ICVR=5000,  ENQSCOP=SYSTEMS,  CWAL=100   
 TRCFLAGS=1,  TCTUAL=100,  TRCNUM=100,  PLTPI=KSGM,  PLTSD=K999   
 NATLANG=E,  MAXDELY=180,  FFREEKB=NO                             
   - INTERNAL TRACE ENABLED                                       
 ***                                                              

Press ENTER to continue. The KICKS welcome screen is displayed as shown below:

 KSGM for tso user LARRY01  at terminal U0C2      BSP1     hh:mm:ss  MM/DD/YY   
                                                                                
                                                                                
                                                                                
                                                                                
            KK        KK   IIIIIIIIII    CCCCCCCCCC   KK        KK   SSSSSSSSSS 
           KK       KK    IIIIIIIIII   CCCCCCCCCCCC  KK       KK   SSSSSSSSSSSS 
          KK      KK         II       CC        CC  KK      KK    SS        SS  
         KK     KK          II       CC            KK     KK     SS             
        KK    KK           II       CC            KK    KK      SSS             
       KKKKKKK            II       CC            KKKKKKK        SSSSSSSSS       
      KKKKKKK            II       CC            KKKKKKK         SSSSSSSSS       
     KK    KK           II       CC            KK    KK               SSS       
    KK     KK          II       CC            KK     KK               SS        
   KK      KK         II       CC        CC  KK      KK    SS        SS         
  KK       KK    IIIIIIIIII   CCCCCCCCCCCC  KK       KK    SSSSSSSSSSSS         
 KK        KK   IIIIIIIIII    CCCCCCCCCCC  KK        KK    SSSSSSSSSS           
                                                                      TM        
                                                                                
                                                            For TSO             
                                                                                
                                                            V1R5M0              
                                                            September 2014      
 Press PF1 for help, CLEAR to continue...                   © Mike Noel         

Press CLEAR to continue. The session is now under KICKS control.

Type GES1 and press ENTER.

 GES1

The Guessing Number Game is started under KICKS!

_ Welcome to the Number Guessing Game         
                                              
The rules are easy for this game..            
I will think of a number and you              
try to guess the number. I will keep          
track of tries.  Sound easy, ha!              
** The number is from 0 to 99 **              
                                              
                                              
Well, key in a number (2 digits) to start game. 
                                              

Type 50 for the guess and press ENTER.

50 Sorry.  Try another number.  -- Too High -- 
                                               
                                               

Type 25. Press ENTER.

25 Sorry.  Try another number.  -- Too Low  --
                                               
                                               

Continue to guess until the correct number is guessed…

The following shows the message displayed when the correct number is guessed.

Congratulations!! You guessed my number.   
        It took you 006 tries.             
  *** Resubmit (GES1) for another game ***

During the game, pressing the CLEAR key terminates the game and the following message is displayed.

Bye!    Enjoyed playing with you.

The user experience under KICKS (CICS) is different in comparison to the interactive BASIC interpreter:

  • No scrolling occurs as SEND TEXT commands are used to display text on the 3270 display
  • User guess input is always at the cursor position 1 per RECEIVE command

Under the KICKS, generation of a random number is facilitated by a FORTRAN H program (RANDOMF) and user guess numeric editing is performed by program INTEDIT (part of Murach Software in KICKS Users Guide).

Transition to TSO CLIST

The TSO Number Guessing software suite consists of two CLISTS-

  1. CGUESS1 (CLIST)
    Display game title and background message, generate a random number via CUTIL00 utility, pass random number as a parameter, and pass control to CGUESS2.
  2. CGUESS2 (CLIST)
    Receive random number parameter, obtain end-users guess, validate guess for numeric values using CUTIL00 utility, qualify guess (too high, too low), until end-user guesses correctly or quits the game.

Type TSO CGUESS1 and press ENTER from the OPTION line as shown below:

 -------------------------  ISPF PRIMARY OPTION MENU  --------
 OPTION  ===> tso cguess1                                      
                                                              
    0  ISPF PARMS  - Specify terminal and user parms          
    1  BROWSE      - Display source data using Review         
    .
    .

The Number Guessing game starts as depicted below:

  WELCOME TO THE NUMBER GUESSING NAME!               
                                                    
 THE RULES ARE EASY FOR THIS GAME...                
 I WILL THINK OF A NUMBER AND YOU                   
 TRY TO GUESS THE NUMBER. I WILL KEEP               
 TRACK OF TRIES.  SOUND EASY. HA!                   
 ** THE NUMBER IS FROM 0 TO 99 **                   
                                                    
                                                    
 WELL, KEY IN A NUMBER (2 DIGITS) TO START GAME.
 YOUR GUESS (Q TO QUIT) ?                           
                                                    

The first guess is 50 followed by ENTER key.
The second guess is 25 followed by ENTER key.
… and so on, until the number is guessed correctly.

Below is a partial snippet of this game TSO session:

 WELCOME TO THE NUMBER GUESSING NAME!               
                                                    
 THE RULES ARE EASY FOR THIS GAME...                
                                                    
 I WILL THINK OF A NUMBER AND YOU                   
 TRY TO GUESS THE NUMBER. I WILL KEEP               
 TRACK OF TRIES.  SOUND EASY. HA!                   
 ** THE NUMBER IS FROM 0 TO 99 **                   
                                                    
                                                    
 WELL, KEY IN A NUMBER (2 DIGITS) TO START THE GAME.
 YOUR GUESS (Q TO QUIT) ? 50
 SORRY.  TRY ANOTHER NUMBER.  ** TOO HIGH **             
 YOUR GUESS (Q TO QUIT) ? 25
 SORRY.  TRY ANOTHER NUMBER.  ** TOO HIGH **             
 YOUR GUESS (Q TO QUIT) ? 1
 SORRY.  TRY ANOTHER NUMBER.  ** TOO LOW **             
 .
 .
 YOUR GUESS (Q TO QUIT) ? 6
 CONGRATULATIONS!!  YOU GUESSED MY NUMBER. 
 IT TOOK YOU 6 TRIES.                      
                                           
 USE TSO CGUESS1 FOR ANOTHER GAME          
 ***  

During the game, typing Q instead of a number terminates the game and the following message is displayed.

 BYE!  ENJOYED PLAYING WITH YOU.
 
 ***

The user experience under TSO is different in comparison to the interactive BASIC interpreter:

  • Under MVS 3.8J, all TSO input and output is CAPITALIZED including setting of string values.
    No lower case capabilities available in this version of the TSO command processor.
  • Scrolling occurs until all 3270 display lines are consumed denoted by the three astericks (***).
    Upon pressing ENTER, the display screen is cleared and scrolling starts at line 1.
  • User is prompted for numeric guess value when not a numeric value

Under the TSO, CUTIL00 is used to generate a random number and to test user guess for numeric values.

Transition to TSO / ISPF

The TSO / ISPF software suite consists of the following –

  1. CGUESS0 (CLIST)
    Display game title and background message, generate a random number via CUTIL00 utility, manage panel display, obtain end-users guess, validate guess for numeric values, qualify guess (too high, too low), until end-user guesses correctly or quits the game.
  2. PGUESS0 (Panel)
    Panel to display game title, receive end-users guess, validate for numeric values
  3. HGUESS0 (Panel)
    Help panel
  4. GUESS0 (Messages)
    Message file.

Type TSO CGUESS0 and press ENTER from the OPTION line as shown below:

 -------------------------  ISPF PRIMARY OPTION MENU  --------
 OPTION  ===> tso cguess0                                      
                                                              
    0  ISPF PARMS  - Specify terminal and user parms          
    1  BROWSE      - Display source data using Review         
    .
    .

The Number Guessing game starts as depicted below:

 -------------------------------------------------------------------------------
 SELECTION ===>                                                                 
                                                                                
                                                                                
  Welcome to the Number Guessing Game                                           
                                                                                
  The rules are easy for this game.                                             
  I will think of a number and you                                              
  try to guess the number. I will keep                                          
  track of tries.  Sound easy, ha                                               
  ** The number is from 0 to 99 **                                              
                                                                                
  Well, key in a number (2 digits) to start game.                               
  Your guess ?                                                                  
                                                                                
                                                                                
                                                                                
                                                                                
  PF3 - Quit                                                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

The first guess is 50 followed by ENTER key. Guess is too high as shown by the message on line 3.

 -------------------------------------------------------------------------------
 SELECTION ===>                                                                 
 GUESS01  Sorry.  Try another number.  ** Too High **
                                                                                
  Welcome to the Number Guessing Game                                           
                                                                                
  The rules are easy for this game.                                             
  I will think of a number and you                                              
  try to guess the number. I will keep                                          
  track of tries.  Sound easy, ha                                               
  ** The number is from 0 to 99 **                                              
                                                                                
  Well, key in a number (2 digits) to start game.                               
  Your guess ? 50 
                                                                                
                                                                                
                                                                                
                                                                                
  PF3 - Quit                                                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

The second guess is 25 followed by ENTER key. Guess is too high as shown by the message on line 3.

 -------------------------------------------------------------------------------
 SELECTION ===>                                                                 
 GUESS01  Sorry.  Try another number.  ** Too High **
                                                                                
  Welcome to the Number Guessing Game                                           
                                                                                
  The rules are easy for this game.                                             
  I will think of a number and you                                              
  try to guess the number. I will keep                                          
  track of tries.  Sound easy, ha                                               
  ** The number is from 0 to 99 **                                              
                                                                                
  Well, key in a number (2 digits) to start game.                               
  Your guess ? 25 
                                                                                
                                                                                
                                                                                
                                                                                
  PF3 - Quit                                                                    
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                

And so on, until the number is guessed correctly.

The following shows the message displayed when the correct number is guessed.

 CONGRATULATIONS!!  YOU GUESSED MY NUMBER. 
 IT TOOK YOU 9 TRIES.                      
                                           
 USE TSO CGUESS0 FOR ANOTHER GAME          
 ***                                       
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           
                                           

During the game, pressing PF3 terminates the game and the following message is displayed.

 BYE!  ENJOYED PLAYING WITH YOU.
 
 ***

The user experience under ISPF is different in comparison to the interactive BASIC interpreter:

  • Game is encapsulated into a screen “form” (ISPF panel)
  • Text is case-independent, upper-case and lower-case is supported
  • Presentation can use 7 different colors
  • No scrolling occurs during the guess game dialogue (per use of panels)
  • User guess input is a stationary field on screen

Under the TSO/ISPF, CUTIL00 is used to generate a random number and to user guess numeric values are validate in ISPF panel logic. Messaging supported by ISPF Message service.

Transition to HTML / Javascript

Yes! On the web!

As the final platform depicted in this post for executing the guessing game, the internet browser (i.e. Chrome, Opera, etc.) is targeted using internal HTML and Javascript engines to host this game as a client-side application.

Simply download a copy of the HTML zip file, open the zip file, and double-click on GUESS.HTML

The following page will be displayed on your browser –

Guessing Game hosted on Chrome Browser

The user experience under Chrome is different in comparison to the interactive BASIC interpreter:

  • Game is encapsulated into a web “form”
  • Text is case-independent, upper-case and lower-case is supported
  • Presentation can use colors
  • No scrolling occurs during the guess game dialogue (per use of web form)
  • User guess input is a stationary field on page
  • Buttons are used to submit guess or quit game
  • Game is hosted on browser

Under Chrome, all logic is performed internally including generation of random number and user guess numeric validation.

Transition to next ??

With all available technology stacks today including programming languages (procedural or object-oriented), the transition is endless!

This includes (but not limited to) a client/server technology stack (really an extension of the above web page) where the guessing game is hosted under MS IIS or Apache or similar HTTP servers.

Prerequisites

KICKS v1.5 (CICS-like product from Mike Noel) is necessary to use this software. More information can be obtained from the following website:
http://www.kicksfortso.com/

ISPF v2.2+ (ISPF-like product from Wally Mclaughlin) is necessary to use this software.

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 on user-mods ZP60014 and ZP60038 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 any, other components may be pre-requisites.

See README file for a complete list of required and/or optional software including download sites.

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.

Access GGUESS ISPF now for a demo!

Take GGUESS for a ‘test drive’ before downloading and installing onto your MVS38J system.

Point your TN3270 terminal emulator using TLS to

URL: mywhs.belmontes.net
PORT: 5000
TLS : Version 1.2

Once connected, log on using any of the TK4- default user ids and passcodes.

After successful logon, select option I (I for ISPF) from the TSO Applications Menu. Note, option I is not listed on the menu – this is intentional.

Start the Number Guessing ISPF game.

From the ISPF PRIMARY OPTION MENU, type %CGUESS0 in the command field (OPTION ==>) and press ENTER.

The GUESS game application panel is displayed.

Play the game!

Use PF3 to end GUESS game.

Use PF3 to exit from ISPF and TSO Applications Menu returning to the TSO READY prompt.

Log off TSO.

Terminate 3270 session.

Installing Software

After downloading the ZIP file, the approach for this installation procedure is to transfer the distribution content (HET and/or XMI) from the your personal computing device to MVS with minimal JCL (less than 24 lines for easy copy-paste) and to continue the installation procedure using supplied JCL from the MVS CNTL data set under TSO.

  • Click here to download zip file to your PC local drive.

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


GGUESS for MVS3.8J / Hercules                                            . 
=============================                                            .

Date: 05/01/2024  Release V0R9M00  **INITIAL software distribution

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


----------------------------------------------------------------------
|    GGUESS       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



----------------------------------------------------------------------
|    GGUESS       C h a n g e   H i s t o r y                        |
----------------------------------------------------------------------
*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  05/01/2024 0.9.00   - Initial version released to MVS 3.8J
*                        hobbyist public domain
*
*                        Original BASIC program from late 1970.
*
*                        Original COBOL CICS programs from 1982.
*
*
*
======================================================================
* 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  GGUESS.V0R9M00.HET   Hercules Emulated Tape (HET) multi-file volume
   volser=VS0900        containing software distribution library.

o  GGUESS.V0R9M00.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:   KICKS V1.5 product from Mike Noel must be installed on your
-----   MVS 3.8J systems to compile and execute the CICS software in
        this distribution.    
        Current version can be downloaded and more information at:
        http://kicksfortso.com/ 

Note:   ISPF v2.1+ (ISPF-like product from Wally Mclaughlin) must be     
-----   installed under MVS 3.8J TSO including associated user-mods
        per ISPF Installation Pre-reqs.

Note:   CUTIL00 is a TSO utility that performs various functions using
-----   CLIST variables and must be installed as a pre-requisite.  
        More information including current version download link at:
        
CUTIL00 for MVS 3.8J
====================================================================== * II. P r e - i n s t a l l a t i o n R e q u i r e m e n t s | ====================================================================== o The Master Catalog name for HLQ aliases. o The Master Catalog password may be required for some installation steps. o If loading via tape files, device 480 is utilized. o DATASET List after distribution library load for reference purposes: DATA-SET-NAME------------------------------- VOLUME ALTRK USTRK ORG FRMT % XT SHRABIT.GGUESS.V0R9M00.ASM PUB006 10 1 PO FB 10 1 SHRABIT.GGUESS.V0R9M00.CLIST PUB006 2 1 PO FB 50 1 SHRABIT.GGUESS.V0R9M00.CNTL PUB006 20 4 PO FB 20 1 SHRABIT.GGUESS.V0R9M00.HELP PUB006 2 1 PO FB 50 1 SHRABIT.GGUESS.V0R9M00.ISPF PUB006 5 2 PO FB 40 1 SHRABIT.GGUESS.V0R9M00.MACLIB PUB006 2 1 PO FB 50 1 **END** TOTALS: 41 TRKS ALLOC 10 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 your local device (after unzip) may be edited using Notepad or nano (based on you host OS) and submitted via TCP/IP sockets reader if your system configuration supports this option. This option can replace some copy-paste tasks during installation. For more information on submitting JCL to MVS 3.8J, see
Submitting JCL to MVS 3.8J
o For more information on SHRABIT software distribution library, see
SHRABIT Distributions for MVS38J
o For more information on SHRABIT software installation, see
SHRABIT Installations for MVS38J
====================================================================== * III. I n s t a l l a t i o n S t e p s | ====================================================================== +--------------------------------------------------------------------+ | Step 1. Determine software installation source | +--------------------------------------------------------------------+ | HET or XMI ? | +--------------------------------------------------------------------+ a) Software can be installed from one of two sources, HET or XMI. - For tape installation (HET), proceed to STEP 3. **** or - For XMIT installation (XMI), proceed to next STEP. +--------------------------------------------------------------------+ | Step 2. Load distribution source from XMI file | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GGUESS.V0R9M00.CNTL($RECVXMI) | | JCL Member: SHRABIT.GGUESS.V0R9M00.CNTL($RECVTSO) | +--------------------------------------------------------------------+ ______________________________________________________________________ //RECV000A JOB (SYS),'Receive GGUESS 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.GGUESS',VRM=V0R9M00,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 GGUESS 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,(02,02,02)), // DISP=&DDISP //* //CLIST EXEC RECV,TYP=CLIST //RECV370.SYSUT2 DD DDNAME=&TYP //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //ISPF EXEC RECV,TYP=ISPF //RECV370.SYSUT2 DD DDNAME=&TYP //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(05,05,05)), // 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,(10,05,05)), // 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 GGUESS 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 GGUESS 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.GGUESS.V0R9M00.XMIPDS') - VOL(volser) NOPROMPT /* Receive CNTL */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(CNTL)') - DA('SHRABIT.GGUESS.V0R9M00.CNTL') - VOL(volser) NOPROMPT /* Receive HELP */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(HELP)') - DA('SHRABIT.GGUESS.V0R9M00.HELP') - VOL(volser) NOPROMPT /* Receive CLIST */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(CLIST)') - DA('SHRABIT.GGUESS.V0R9M00.CLIST') - VOL(volser) NOPROMPT /* Receive ISPF */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(ISPF)') - DA('SHRABIT.GGUESS.V0R9M00.ISPF') - VOL(volser) NOPROMPT /* Receive ASM */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(ASM)') - DA('SHRABIT.GGUESS.V0R9M00.ASM') - VOL(volser) NOPROMPT /* Receive MACLIB */ RECEIVE IN('SHRABIT.GGUESS.V0R9M00.XMIPDS(MACLIB)') - DA('SHRABIT.GGUESS.V0R9M00.MACLIB') - VOL(volser) NOPROMPT /* Delete XMIPDS */ DELETE 'SHRABIT.GGUESS.V0R9M00.XMIPDS' /* // ______________________________________________________________________ Figure 1b: $RECVTSO.JCL a) Transfer GGUESS.V0R9M00.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.GGUESS.V0R9M00.ASM SHRABIT.GGUESS.V0R9M00.CLIST SHRABIT.GGUESS.V0R9M00.CNTL SHRABIT.GGUESS.V0R9M00.HELP SHRABIT.GGUESS.V0R9M00.ISPF SHRABIT.GGUESS.V0R9M00.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.GGUESS.V0R9M00.CNTL($INST00) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS00 JOB (SYS),'Def SHRABIT Alias', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS 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 2: $INST00 JCL Note: This distribution is installed under the HLQ alias SHRABIT. $INST00 bypasses the DEFINE ALIAS action when the alias is already defined. a) Copy and paste the above JCL to a PDS member, update JOB statement to conform to your installation standard. b) Submit the job. c) Review job output for successful DEFINE ALIAS. Note: When $INST00 runs for the first time, Job step DEFALIAS returns RC=0004 due to LISTCAT ALIAS function completing with condition code of 4 and DEFINE ALIAS function completing with condition code of 0. Note: When $INST00 runs after the ALIAS is defined, Job step DEFALIAS returns RC=0000 due to LISTCAT ALIAS function completing with condition code of 0 and DEFINE ALIAS function being bypassed. +--------------------------------------------------------------------+ | Step 4. Load CNTL data set from distribution tape | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GGUESS.V0R9M00.CNTL($INST01) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS01 JOB (SYS),'Install CNTL PDS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS for MVS3.8J TSO / Hercules * //* * JOB: $INST01 Load CNTL PDS from distribution tape * //* * Note: Uses tape drive 480 * //* -------------------------------------------------------* //LOADCNTL PROC THLQ=GGUESS,VRM=V0R9M00,TVOLSER=VS0900, // HLQ='SHRABIT.GGUESS',VRM=V0R9M00, // 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\GGUESS.V0R9M00.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.GGUESS.V0R9M00.CNTL($INST02) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS02 JOB (SYS),'Install Other PDSs', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS 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=GGUESS,TVOLSER=VS0900, // HLQ='SHRABIT.GGUESS',VRM=V0R9M00, // DDISP='(,CATLG,DELETE)', // TUNIT=480,DVOLSER=PUB006,DUNIT=DISK <-- Review and Modify //LOAD02 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=&THLQ..&VRM..CLIST.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(2,SL) //INHELP DD DSN=&THLQ..&VRM..HELP.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(3,SL) //INISPF DD DSN=&THLQ..&VRM..ISPF.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(4,SL) //INASM DD DSN=&THLQ..&VRM..ASM.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(5,SL) //INMACLIB DD DSN=&THLQ..&VRM..MACLIB.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(6,SL) //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(05,05,05)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(10,05,05)), // 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\GGUESS.V0R9M00.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.GGUESS.V0R9M00.CNTL($UP0900) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS0U JOB (SYS),'Upgrade GGUESS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS for MVS3.8J TSO / Hercules * //* * * //* * JOB: $UP0900 * //* * Upgrade GGUESS Software not available. * //* * Initial release. * //* * * //* * Review JCL before submitting!! * //* -------------------------------------------------------* //* //* //* -------------------------------------------------------* //* * IEFBR14 * //* -------------------------------------------------------* //DUMMY EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //* //* ______________________________________________________________________ Figure 5: $UP0900.JCL Upgrade from previous version to V0R9M00 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 V1R2M00, use $UP1201.JCL - V1R0M00 is initial release, thus, no updates available! e) After upgrade is applied, proceed to validation, STEP 11. +--------------------------------------------------------------------+ | Step 7. Install TSO parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GGUESS.V0R9M00.CNTL($INST03) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS03 JOB (SYS),'Install TSO Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS 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.GGUESS.V0R9M00.CLIST,DISP=SHR //INHELP DD DSN=SHRABIT.GGUESS.V0R9M00.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=NO#MBR# /*dummy entry no mbrs! */ /* // ______________________________________________________________________ Figure 6: $INST03 JCL a) Member $INST03 installs TSO component(s). Note: If no TSO components are included for this distribution, ----- RC = 4 is returned by the corresponding IEBCOPY step. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful load(s). +--------------------------------------------------------------------+ | Step 8. Install GGUESS Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.GGUESS.V0R9M00.CNTL($INST04) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS04 JOB (SYS),'Install GGUESS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST04 Install GGUESS Software * //* * * //* * - Uses KICKS 1.5 product from Mike Noel * //* * - Install libraries marked... * //* * - Search for '<--KICKS' * //* * - Update install libraries per your * //* * installation standard * //* * * //* -------------------------------------------------------* //* //JOBPROC DD DSN=your.KICKSSYS.V1R5M0.PROCLIB, <--KICKS PROCLIB // DISP=SHR //* //* -------------------------------------------------------* //* * * //* * PROC: FHLKED * //* * Fortran H Link-Edit * //* * * //* -------------------------------------------------------* //FHL PROC HLQ=WHATHLQ,VRM=VXRXMXX, // MBR=WHOWHAT //* //FORT EXEC PGM=IEKAA00,REGION=228K //STEPLIB DD DUMMY //SYSPRINT DD SYSOUT=* //SYSPUNCH DD DSN=NULLFILE //SYSLIN DD DSNAME=&LOADSET,UNIT=SYSSQ,DISP=(MOD,PASS), * // SPACE=(400,(200,50),RLSE) //SYSIN DD DSN=&HLQ..&VRM..ASM(&MBR),DISP=SHR <--INPUT //* //LKED EXEC PGM=IEWL,REGION=96K,PARM=(XREF,LET,LIST),COND=(4,LT,FORT) //SYSLIB DD DUMMY //SYSLMOD DD DUMMY //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(200,20),RLSE),DCB=BLKSIZE=1024, * // DSNAME=&SYSUT1 //SYSLIN DD DSNAME=&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSIN DD DUMMY //* // PEND //* //* -------------------------------------------------------* //* * FORTRANH Link-Edit RANDOMF to TEMP PDS as RAND * //* -------------------------------------------------------* //RANDOMF EXEC ASML,HLQ='SHRABIT.GGUESS',VRM=V0R9M00,MBR=RANDOMF, // PARM.FORT='NAME=RAND,LINECNT=55,SIZE=MAX', // REGION.FORT=1024K //LKED.SYSLMOD DD DISP=(MOD,PASS),UNIT=SYSALLDA, // SPACE=(TRK,(10,5,10)), // DSN=&RANDOM(RAND) //* //* -------------------------------------------------------* //* * COBOL Link-Edit GUESS01 to KICKS RPL * //* * using K2KCOBCL KICKS procedure * //* -------------------------------------------------------* //GUESS01 EXEC K2KCOBCL,ZOUT='*' //COPY.SYSUT1 DSN=SHRABIT.GGUESS.V0R9M00.ASM(GUESS01),DISP=SHR //* INCLUDE LOADLIB for RANDOM Subroutine //LKED.SYSLIB DD // DD DSN=&RANDOM,DISP=(SHR,PASS) <--RAND //LKED.SYSIN DD * INCLUDE SKIKLOAD(KIKCOBGL) ENTRY GUESS01 NAME GUESS01(R) /* //* //* -------------------------------------------------------* //* * COBOL Link-Edit GUESS02 to KICKS RPL * //* * using K2KCOBCL KICKS procedure * //* -------------------------------------------------------* //GUESS02 EXEC K2KCOBCL,ZOUT='*' //COPY.SYSUT1 DSN=SHRABIT.GGUESS.V0R9M00.ASM(GUESS02),DISP=SHR //* INCLUDE LOADLIB for INTEDIT Subroutine //LKED.SYSLIB DD // DD DISP=SHR,DSN=&KIKSUSR..&VER..KIKRPL <--INTEDIT //LKED.SYSIN DD * INCLUDE SKIKLOAD(KIKCOBGL) ENTRY GUESS02 NAME GUESS02(R) /* // ______________________________________________________________________ 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.GGUESS.V0R9M00.CNTL($INST05) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS05 JOB (SYS),'Install ISPF Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS 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.GGUESS',VRM=V0R9M00, // 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=CGUESS0 SELECT MEMBER=CGUESS1 SELECT MEMBER=CGUESS2 //ADDMLIB.SYSIN DD * MLIB COPY INDD=((MLIBIN,R)),OUTDD=MLIBOUT SELECT MEMBER=GUESS0 //ADDPLIB.SYSIN DD * PLIB COPY INDD=((PLIBIN,R)),OUTDD=PLIBOUT SELECT MEMBER=HGUESS0 SELECT MEMBER=PGUESS0 //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.GGUESS.V0R9M00.CNTL($INST40) | +--------------------------------------------------------------------+ ______________________________________________________________________ //GGUESS40 JOB (SYS),'Install Other Pgms', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * GGUESS 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 GGUESS using ISPF | +--------------------------------------------------------------------+ a) From the ISPF Main Menu, enter the following command: TSO CGUESS0 b) The panel PGUESS0 is displayed per below representative snippet. ________________________________________________________________________________ ------------------------------------------------------------------------------- SELECTION ===> Welcome to the Number Guessing Game The rules are easy for this game. I will think of a number and you try to guess the number. I will keep track of tries. Sound easy, ha ** The number is from 0 to 99 ** Well, key in a number (2 digits) to start game. Your guess ? _ PF3 - Quit ________________________________________________________________________________ Figure 10a: Number Guessing Game Panel c) Enter your numeric guess and press ENTER. d) Continue until number is correctly guessed or press PF3 to terminate. Below display is a representative snippet of a completed game: ________________________________________________________________________________ CONGRATULATIONS!! YOU GUESSED MY NUMBER. IT TOOK YOU nn TRIES. USE TSO CGUESS0 FOR ANOTHER GAME *** ________________________________________________________________________________ Figure 10b: GGUESS TSO Allocations Panel 2 e) Press ENTER to display ISPF Main Menu. f) Validation is complete. +--------------------------------------------------------------------+ | Step 12. Done | +--------------------------------------------------------------------+ a) Congratulations! You completed the installation for GGUESS. Note: See website for steps to initiate game under TSO and KICKS. +--------------------------------------------------------------------+ | Step 13. Integrate GGUESS into ISPF Menu | +--------------------------------------------------------------------+ a) Not applicable. Enjoy GGUESS for ISPF 2.x on 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.GGUESS.V0R9M00.ASM . GUESS01 Guess Game COBOL CICS Program 1 . GUESS02 Guess Game COBOL CICS Program 2 . RANDOMF Random Number Generator Subroutin FORTRAN - SHRABIT.GGUESS.V0R9M00.CLIST . README Dummy member, this is intentional - SHRABIT.GGUESS.V0R9M00.CNTL . $INST00 Define Alias for HLQ GGUESS . $INST01 Load CNTL data set from distribution tape (HET) . $INST02 Load other data sets from distribution tape (HET) . $INST03 Install TSO Parts . $INST04 Install GGUESS Software . $INST05 Install ISPF Parts . $INST40 Install Other Software . $RECVTSO Receive XMI SEQ to MVS PDSs via TSO RECEIVE . $RECVXMI Receive XMI SEQ to MVS PDSs via RECV370 . $UP0900 Upgrade to V0R9M00 from VxRxMxx . DSCLAIMR Disclaimer . PREREQS Required User-mods . README Documentation and Installation instructions . INTEDIT Misc information for INTEDIT subroutine - SHRABIT.GGUESS.V0R9M00.HELP . README Dummy member, this is intentional - SHRABIT.GGUESS.V0R9M00.ISPF . CGUESS1 Guess Game TSO CLIST 1 . CGUESS2 Guess Game TSO CLIST 2 . CGUESS0 Guess Game ISPF CLIST Driver . GUESS0 GUESS Game Messages . PGGUESS0 Guess Game Panel . HGGUESS0 Guess Game Help Panel - SHRABIT.GGUESS.V0R9M00.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

In closing…

The above sample applications illustrate the use of the same functional software across different operating systems and technology hosting platforms.

However, some services (e.g. Randon Number generation or EXEC BIF DEEDIT) were substituted due to lack of support in products under MVS 3.8J .

The random number generator is a FORTRAN program found in a book from a college programming course.

The BIF DEEDIT function is replaced with utility program INTEDIT (from the Murach examples section) in KICKS v1.5 Users Guide.

Lastly, CUTIL00 is used for utility functions to check for numeric values and generate random numbers in the CLIST versions of the Number Guessing Game.

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

Enjoy the number guessing game across platforms,
Larry Belmontes

Version History

*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  05/01/2024 0.9.00   - Initial version released to MVS 3.8J
*                        hobbyist public domain
*
*                        Original BASIC program from late 1970.
*
*                        Original COBOL CICS programs from 1982.
*
*

Tagged , , ,

Leave a Reply

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


CAPTCHA Image
Reload Image

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