Independent Project: Mainframe  
IBM Mainframe Competition

Part One

In the first part, "Breaking the ice", in IBM mainframe competition, basically is just to get you familiar to mainframe and a few useful commands. Example, how to log to the mainframe by using a emulator

A few points to understand.
  • You can access a z/OS mainframe remotely by using 3270 terminal emulator.
  • Folders or directories are called Dataset in mainframe while Files are Members. Data sets are created only with 1 to 8 characters
  • Right Ctrl key is used as enter key. Once you press the right Ctrl key, you allow a command to be entered. But this can be changes if an emulator is set to use ENTER to perform what the right Ctrl key does in for mainframe.
  • To navigate through the window use the arrow keys or tab key.
  • Press F3 to go back to the last window.
  • F7 page up
  • F8 page down
  • F2 splits the panel into two.
  • F9 moves you from one screen to another after splitting.
  • Card means Statement in Mainframe.
  • Procedure is also called proc or task

Once you log in Mainframe, the first window is ISPF (Interactive System Productivity Facility) Primary Option Menu. There are 13 options. Highlighted options are used in part one.

0 Settings Terminal and user parameters
1 View Display source data or listings
2 Edit Create or change source data
3 Utilities Perform Utility functions
4 Foreground Interactive language processing
5 Batch Submit job for language processing
6 Command Enter TSO or Workstation commands
7 Dialog Test Perform dialog testing
8 LM Facility Library administrator functions
9 IBM Products IBM program development products
10 SCLM SW Configuration Library Manager
11 Workplace ISPF Object/Action Workplace
SD   SDSF   System Display and Search Facility
IP   IPCS   Inter Problem Control Facility

ISPF Primary Option used in Part one

0 Settings: Allows you to change the setting of the screen. For example; you can decide to put the command line at the top instead of its default position which is bottom.
3 Utilities: Will take you to Utility Selection Panel. There are a few options in Utility Panel.

1Library 
2Data Set 
3Move/Copy 
4 Dslist Print or display (to process) list of data set names. Print or display VTOC information.
5Reset 
6Hardcopy 
7Transfer 
8Outlist 
9Commands 
11Format 
12SuperC 
13SuperCE 
14Search-For 
15Search-ForE 

In utilities Selection Panel, only option 4-Dslist is used for part one. When you select Dslist (Data Set List) you will open Data Set List Utility. If you enter your user ID at Dsname Level eg; Z9#####, then Right Ctrl Key, you will be able to see your data sets (folders). Each listed data set contains members (files). To view members in data set, Enter B on the left side of the data set or enter E if you want to edit.

TOP

Create a new member in a data set

F3 to ISPF Primary Option Menu > enter 2 for edit. A Edit Entry Panel will open.> TAB to Data Set Name … and enter the name of data set followed by the name of the member in brackets all as one word. For example; COMPETE.PARTONE(yourname). Your name should not be more than 8 characters, but can be less. > press Right Ctrl Key > Now the ISPF editor will open.

Use the TAB Key to move from line to the next.
The following are the commands used in the editor on the left side of line number

Command Definition Example What will do Results
I Insert LineI30001 This is
000002 Fun
Will insert 3 more lines000001 This is
000002 fun
000003
000004
000005
CC CopyCC0001 This is
000002 Fun
CC0003 OK
Will copy from line 1 to 3. 
A Paste After this line 000001 This is 000002 Fun A00003 OK

Will paste the above 3 lines 2 times

000001 This is 000002 Fun 000003 OK 000004 This is 000005 Fun 000006 OK 000007 This is
000008 Fun
000009 OK
B Paste Before this line 000001 This is 000002 Fun B00003 OK Will paste before line 3 which will make OK the last line 000001 This is 000002 Fun 000003 This is 000004 Fun 000005 OK
000006 This is
000007 Fun
000008 OK
000009 OK
DD Delete a line 000001 This is 000002 Fun 000003 OK DD0004 This is 000005 Fun
000006 OK
000007 This is
000008 Fun
DD0009 OK

Will delete line 4 to 9. One D will delete the current line 000001 This is 000002 Fun 000003 OK
R Repeat R20001 this is 000002 Fun 000003 OK Will repeat the 1st line twice 000001 This is 000002 This is 000003 This is
000004 Fun
000005 OK

TOP

Members sent to IBM

We had to create a member with our names and write Haiku poem to send to IBM. This was a first oart that we learned how to create a member, but we had to repeat the first line a few times.

CHallenge 6

TOP

We has to create a member named by our usernames and execute as a REXX Program.

Member Z9####

The two Members sent to IBM in Part one.

Two members

TOP

Part Two

Challenge 2 Run a REXX program using JCL

Members in ZOS.CONTEST.JCL data set are read only, and can not be modified by any user, but can be copied to user’s data set. To do so, follow these instructions.

At ISPF Primary menu
1 → Command===> 3.4
2 → Dsname Level…ZOS.CONTEST.JCL
3 → Select the member you would like to copy, to open a member type V on the left side of a member. In this case we used RUNREXX
4 → When opened, a member will have line numbers on the left side. To copy the whole file you must specify the number of the last line plus 1. If a member’s last line is 000090, then you will copy by adding C and 91 on the left side of the first line number. Then at the command line type CREATE JCL(RUNREXX) and press CTRL. Example:

 
		Command ===> CREATE JCL(RUNREXX)

C91001 ----------------------------------------------------------------------
000002 -----------------------------------------------------------------------
.
.
.
000090 -----------------------------------------------------------------------

		

Now you have copied a member RUNREXX to your data set JCL
5 → Command===> =3.4       # Will take you to “Data Set List Utility” panel.
6 → Dsname Level. . . Z9#####       # Z9##### is your username to go to the list of your data sets.
7 →Open a member for editing by typing E on the left side of a member. Make the required changes. In this case we had to add our user id and change a file named BLA.CLIST to ZOS.CONTEST.REXX.
8 → Command===> SUB       # to send a job to JES for processing
9 → Command===> =SD       # to move to SDSF window. All the work that has been submitted to JES can be viewed from SDSF which means “Spool Display and Search Facility”. The SDSF panel will open.
10 → Command===> OWNER Z9#####      # to view only job assigned to user Z9#####.
11 → Command===> H ALL       # to view all jobs assigned to output queue.
12 → Type ? On the left side of the JOBNAME to be able to view your output and system generated output. You will see a list of outputs.
13 → Type S on the left side of the output to view the content.
NOTE: If you want to view all output in one file type S above instead of ?
14 → Once verify the output to be right. You can send all generated output in one file by going back to (12 →), this time do not type ?, but XDC on the left side of your JOBNAME. A panel will open.
15 → At Data Set name, type the data set you want your output to be sent to. In my case was COMPETE.PARTTWO. At member to use, type the name of the member you want your output to be saved into, in my case was, REXXRUN. At Disposition type OLD.
16 → CTRL. This is all it takes to run a REXX program in JCL.

TOP

Challenge 3 Debug broken JCL

In this challenge we were given a broken JCL program and we were directed to fix the problem.
This is the fixed JCL, Changes were made at line 000100 and 000300.

		File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 -------------------------------------------------------------------------------
 VIEW       Z900533.JCL(BADJCL) - 01.04                     Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ***************************** Top of Data *****************************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000100 //RJCL0533 JOB 'BROKEN JCL JOB',MSGLEVEL=(1,1),                         
 000110 //             NOTIFY=&SYSUID,MSGCLASS=H,CLASS=A                        
 000200 //TSOBATCH EXEC PGM=IKJEFT1A,DYNAMNBR=200                               
 000300 //SYSEXEC  DD DISP=SHR,DSN=Z900533.REXX                                 
 000400 //SYSPRINT DD SYSOUT=*                                                  
 000500 //SYSTSPRT DD SYSOUT=*                                                  
 000600 //SYSTSIN  DD *                                                         
 000900 %ECHOJCL                                                                
 ****** **************************** Bottom of Data ***************************
                                                                       
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
  F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up        
  F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel         
		

After submitting the JCL program to SDSF, The output was the following: This is the output I sent to IBM.

		 File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 -------------------------------------------------------------------------------
 VIEW       Z900533.Z900533.COMPETE.PARTTWO(FIXEDJCL) - 01. Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ***************************** Top of Data ****************************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 1                   J E S 2  J O B  L O G  --  S Y S T E M  S 0 W 1  -- N O D E  Z 9 S H R S Y S
 000002 0                                                                       
 000003  01.41.54 JOB07518 ---- THURSDAY,  02 NOV 2006 ----        
 000004  01.41.54 JOB07518  IRR010I  USERID Z900533  IS ASSIGNED TO THIS JOB.   
 000005  01.41.55 JOB07518  ICH70001I Z900533  LAST ACCESS AT 00:35:18 ON THURSDAY, NOVEMBER 2, 2006
 000006  01.41.55 JOB07518  $HASP373 DBJB0533 STARTED - INIT 2    - CLASS A - SYS S0W1
 000007  01.41.55 JOB07518  -                                                --TIMINGS (MINS.)--            ----PAGING COUNTS---
 000008  01.41.55 JOB07518  -JOBNAME  STEPNAME PROCSTEP    RC   EXCP   CONN    TCB    SRB  CLOCK   SERV  PG  PAGE  SWAP   VIO SWAPS
 000009  01.41.55 JOB07518  -DBJB0533 TSOBATCH             00     25     17    .00    .00     .0    389   0     0     0     0     0
 000010  01.41.55 JOB07518  -DBJB0533 ENDED.  NAME-                     TOTAL TCB CPU TIME=   .00  TOTAL ELAPSED TIME=    .0
 000011  01.41.55 JOB07518  $HASP395 DBJB0533 ENDED                             
 000012 0------ JES2 JOB STATISTICS ------                                      
 000013 -  02 NOV 2006 JOB EXECUTION DATE                                       
 000014 -            8 CARDS READ                                               
 000015 -           47 SYSOUT PRINT RECORDS  
000016 -            0 SYSOUT PUNCH RECORDS                                     
 000017 -            3 SYSOUT SPOOL KBYTES                                      
 000018 -         0.00 MINUTES EXECUTION TIME                                   
 000019          1 //DBJB0533 JOB 'RUN REXX FROM JCL',MSGLEVEL=(1,1),   	JOB07518         
 000020            //             NOTIFY=&SYSUID,MSGCLASS=H,CLASS=A     		00011000        
 000021            IEFC653I SUBSTITUTION JCL - 'RUN REXX FROM JCL',MSGLEVEL=(1,1),NOTIFY=Z900533,MSGCLASS=H,CLASS=A
 000022          2 //TSOBATCH EXEC PGM=IKJEFT1A,DYNAMNBR=200                    	00020000
 000023          3 //SYSEXEC  DD DISP=SHR,DSN=ZOS.CONTEST.REXX                  	00030003
 000024          4 //SYSPRINT DD SYSOUT=*  				00040000                                     
 000025          5 //SYSTSPRT DD SYSOUT=*                                       		00050003
 000026          6 //SYSTSIN  DD *                                              		00060000
 000027  ICH70001I Z900533  LAST ACCESS AT 00:35:18 ON THURSDAY, NOVEMBER 2, 2006
 000028  IEF236I ALLOC. FOR DBJB0533 TSOBATCH                                   
 000029  IEF237I 0D84 ALLOCATED TO SYSEXEC                                      
 000030  IEF237I JES2 ALLOCATED TO SYSPRINT                                     
 000031  IEF237I JES2 ALLOCATED TO SYSTSPRT                                     
 000032  IEF237I JES2 ALLOCATED TO SYSTSIN                                      
 000033  IEF142I DBJB0533 TSOBATCH - STEP WAS EXECUTED - COND CODE 0000  
 000034  IEF285I   ZOS.CONTEST.REXX                             KEPT            
 000035  IEF285I   VOL SER NOS= WORK05.                                         
 000036  IEF285I   Z900533.DBJB0533.JOB07518.D0000102.?         SYSOUT          
 000037  IEF285I   Z900533.DBJB0533.JOB07518.D0000103.?         SYSOUT          
 000038  IEF285I   Z900533.DBJB0533.JOB07518.D0000101.?         SYSIN           
 000039  IEF373I STEP/TSOBATCH/START 2006306.0141                               
 000040  IEF374I STEP/TSOBATCH/STOP  2006306.0141 CPU  0MIN 00.01SEC SRB   0M   IN 00.00SEC VIRT  76K SYS  340K EXT  196K SYS  11376K
 000041  IEF375I  JOB/DBJB0533/START 2006306.0141                               
 000042  IEF376I  JOB/DBJB0533/STOP  2006306.0141 CPU  0MIN 00.01SEC SRB   0M   IN 00.00SEC
 000043 1READY                                                                  
 000044  %RUNME                                                                 
 000045  You got it to work!                                                    
 000046  READY                                                                  
 000047  END                                                                    
 ****** **************************** Bottom of Data      
  F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up        
  F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel  
		

TOP

Challenge 4 Track down the TCP/IP configuration via Active Proc.
You can split the screen and move from one screen to another easily while working on emulator.

F2 – Splits the screen into two. Make sure the cursor is at the top of the screen before pressing F2
F9 – Moves you back and forth from one screen to another.
F3 – Once you are done press F3 on the screen you want to cancel until you remain with one screen.

Track down TCP/IP configuration on the system.
1 →Command===> =SD       #if you are already at ISPF panel then just enter SD without =.
2 → Command===> OWNER *       # Now you will be able to view all the job in your system, even not yours.
3 → If after entering OWNER * and you still see nothing. Enter the following at the command line one after another after pressing CTRL.

PRE *
OWNER *
DA
F TCPIP 
		

F means “find”. In this case we want to find TCPIP.
If (2 →) worked well, then skip this part and continue.
4 → Type ? on the left side of TCPIP.
5 → Type S on the left side of a JCL that was used to start the task.
6 → Command===> F PROFILE To find PROFILE DD card (statement). Write down the data set on this line. Then open it as following:
7 → Command===> =3.4
8 → Dsname Level . . . ZSCHOLAR.TCPPARMS       # zscholar.tcpparms is the data set I found at PROFILE DD statement at (6 →).
9 → Type V to view ZSCHOLAR.TCPPARMS.
10 → Type V to view PROFILE. Inside this member You have to look for DEVICE and LINK definitions. In my case I saved the findings in member called TCPCONF.
11 → Command===> TSO NSLOOKUP ip_address
To look for the name of the IP address.

TOP

Challenge 5 Introduction to SYSCMDs (System Commands)
There are system command that can be run in SDSF panel to find some information like IP address etc.
→ =SD       # go to SDSF panel
→ ulog       # ulog is user log
→ /d iplinfo       # gets system IPL information
I found the following information as asked by contest.

1. z/OS 01.07.01 is the release level of the system being IPLed
2. W1 is the LOADxx member used to IPL
3. SYS1.IPLPARM is the data set where LOADxx originated
4. 0CE3 is the device where the LOADxx address originated
5. 00, LV, SV, VN are IEASYSxx members used by IPLed
6. To find available processing memory enter at the command line → ulog then → /d m = stor. I found there was 1024 real storage available to the system I was using.
7. To find processor information, at command line enter → ulog → /d = cpu. I found the machine serial number to be 01AD0E2094. 8. To display z/OS address space. → ulog → /d a, ######. Where ###### is user_id. I found my address space identifier is 3FAC9200.
9. → /d a, *master*. To find master address space identifier number which is 3FB03040

TOP

Challenge 6 Track down the TCP/IP configuration via SYSCMDs
The following are the commands I used to find the TCP/IP configurations.
→ /d tcpip netstat home # to fond IP address for TCP/IP stack.
→ /d tcpip netstat devlinks # to find Device and link status for TCP/IP stack.
→ /d tcpip netstat route # the routing table for TCP/IP stack.
→ /d tcpip netstat arp # contents of ARP cache for TCP/IP stack.
I sent all the above findings to SYCMDTCP in my data set.
Challenge 7 In Search of Storage (DFSMS)
After creating a new member in my data set, I moved to ISMF panel by entering IS from the command line in ISPF panel. Then I entered the following commands.
1 → 2       # to select Volume option
2 → 1       # to select DASD option
3 →
    Acquire Physical Data . . . Y
	Acquire Space Data . . . Y
	Storage Group Name . . . *
Then press CTRL. I had to navigate around the screen by F11 and F10 to move the screen right side and left side. I collected the following information:
1. OD89 id the physical address of this volume
2. There are 3 volumes
3. The storage group of ZOS.CONTEST.SMS.BIG2 is SMS002
4. Other volumes are in storage group SMS003
5. There are volumes in this storage less than 30% capacity left. They are BIG and BIG2.

TOP

Challenge 8 Write your own ISPF panel.
You can modify the ISPF menu to be just what you want. In this challenge we had to do that.

 Not the ISPF you were expecting?                             
 It's time to learn how to design your own ISPF panels.       
 z/OS is prized for its flexibility. Would you expect anything
 less than to be able to re-write its core menus?             
                                                                 
                                                                
               **Slim Menu *****                        
               *               *                        
               *    Edit       *                        
               *    Utility    *                        
               *    Echo JCL   *                        
               *    Command    *                           
               *    eXit       *                        
               *    SDSF       *                         
               *               *                      
               ****************                    
		

The above is the screen that we had to create. We were given all the codes except a few lines that we had to find by ourselves The following are the members I had to change. Changes are highlighted in gray.

ISR@PRIM

-------------------------------------------------------------------------------
 VIEW       Z900533.PANELS(ISR@PRIM) - 01.07                Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ***************************** Top of Data ******************************
 ==MSG> -CAUTION- Data contains invalid (non-display) characters. Use command   
 ==MSG>           ===> FIND P'.' to position cursor to these                    
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 )ATTR                                                                   
 000002  } TYPE(TEXT) COLOR(GREEN)                                              
 000003  { TYPE(TEXT) COLOR(BLUE)                                               
 000004  $ TYPE(TEXT) COLOR(YELLOW)                                             
 000005  ~ TYPE(TEXT) COLOR(TURQ)                                               
 000006    TYPE(TEXT) COLOR(RED)                                                
 000007  @ TYPE(OUTPUT) COLOR(PINK)                                             
 000008  ! TYPE(OUTPUT) COLOR(YELLOW)                                           
 000009  # TYPE(OUTPUT) COLOR(TURQ)                                             
 000010  ¬ TYPE(INPUT) COLOR(GREEN) CAPS(ON)                                    
 000011  _ TYPE(INPUT) COLOR(YELLOW) HILITE(USCORE) CAPS(ON)                    
 000012 )BODY                                                                   
 000013 %-----------------------~ Master The Mainframe 2006 %-------------------
 000014 %  { Part 2: Practical Experience                                       
 000015 %                                                                       
 000016 %Option  ===>_ZCMD                                                      
 000017 +                                                                       
 000018 % } Not the ISPF you were expecting?                                    
 000019 % } It's time to learn how to design your own ISPF panels.              
 000020 % } z/OS is prized for its flexibility. Would you expect anything       
 000021 % } less than to be able to re-write its core menus?                    
 000022 %                                                                       
 000023 %                                                                       
 000024 %                      **{Slim Menu *****                               
 000025 %                      *                *                               
 000026 %                      * $2  %Edit      *                               
 000027 %                      * $3  %Utility   *                               
 000028 %                      * $4  %Echo JCL  *                               
 000029 %                      * $6  %Command   *                               
 000030 %                      * $X  %eXit      *                               
 000031                        * $SD %SDSF      *                               
 000032 %                      *                *                                
 000033 %                      ******************                                
 000034 )PROC                                                                    
 000035   &ZSEL = TRANS ( TRUNC (&ZCMD,'.')                                      
 000036                 2,'PGM(ISREDIT) PARM(P,ISREDM01) SCRNAME(EDIT)'          
 000037                 3,'PANEL(ISRUTIL) SCRNAME(UTIL)'                         
 000038                 4,'PANEL(ECHOJCL) SCRNAME(ECHO)'                         
 000039                 6,'PGM(ISRPTC) SCRNAME(CMD)'                             
 000040                 SD,'PANEL(ISFSDOP2) SCRNAME(SDSF)'          
 000041               ' ',' '                                                    
 000042                 X,'EXIT'                                                 
 000043                 *,'?' )                                                  
 000044   &NEXTOPT = .TRAIL                                                      
 000045 )END                                                                     
 ****** **************************** Bottom of Data************************* 
	

Codes for: ZOS.CONTEST.CLIST(BLANKPNL)

In this had to add my user_id.PANELS on line 10 so that the first dataset to be read will be from mine not ZOS.CONTEST. Notice there are two .PANELS in BLANKPNL, the system only execute the first panel on the list and the second is ignored. The + sign on the right side is a must for the line to be executed.

VIEW       Z900533.CLIST(BLANKPNL) - 01.06                 Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ************************** Top of Data **********************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 PROC 0 PANEL()                                                          
 000002 /*********************************************************/ 
 000003 /*                                                         */ 
 000004 /* THIS CLIST REALLOCATES THE ISPPLIB CONCATENATION TO ADD */ 
 000005 /* ZOS.CONTEST.PANELS AT THE TOP, THEN INVOKES ISPF.       */ 
 000006 /*                                                         */ 
 000007 /**********************************************************/
 000008 FREE FILE(ISPPLIB)                                                      
 000009 ALLOC FI(ISPPLIB) SHR DA(                                +
 000010                          'Z900533.PANELS'                + 
 000011                          'ZOS.CONTEST.PANELS'            + 
 000012                          'VENDOR.ISPPLIB'                + 
 000013                          'SVTSC.ISPPLIB'                 + 
 000014                          'LVL0.ISPPLIB'                  + 
 000015                          'ISF.SISFPLIB'                  + 
 000016                          'ISP.SISPPENU'                  + 
 000017                          'SYS1.SBLSPNL0'                 + 
 000018                          'GIM.SGIMPENU'                  + 
 000019                          'SYS1.HRFPANL'                  + 
 000020                          'SYS1.DFQPLIB'                  + 
 000021                          'SYS1.SBPXPENU'                 + 
 000022                          'SYS1.DGTPLIB'                  + 
 000023                          'SYS1.SICEPENU'                 + 
 000024                          'EOY.SEOYPENU'                  + 
 000025                          'SYS1.SERBPENU'                 + 
 000026                          'DSN810.SDSNSPFP'               + 
 000027                          'DSN810.SDSNPFPE'               + 
 000028                          'CSQ600.SCSQPNLE')                             
 000029 ERROR RETURN                                                            
 000030 PDF &PNL                                                                
 ****** **************************** Bottom of Data ************************

TOP

Challenge 9 ISPF and REXX programming challenge

In this challenge, we worked with Echo JCL option on our slimmed-down ISPF menu we created in challenge 8. Here we get to practice common challenges in z/OS shops of modifying exiting tools.

I had to create an echo JCL panel that will accept 2 strings to run ZOS.CONTEST.REXX(RUNME). Now, the first panel must accept ZOS.CONTEST.REXX and the second string must accept RUNME. If either of the two inputs is left blank, an error should pop up. The output should be sent to SDSF.

I will explain one file at a time. All changes I have made are highlighted in gray.

.JCL(BADJCL)

File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help
 -------------------------------------------------------------------------------
  VIEW       Z900533.JCL(BADJCL) - 01.04                     Columns 00001 00072
 Command ===>                                                  Scroll ===> PAGE
 ****** ************************** Top of Data ******************************
 ==MSG> -CAUTION- Profile changed to CAPS ON (from CAPS OFF) because the
 ==MSG>           data does not contain any lower case characters.
 ==MSG> -Warning- The UNDO command is not available until you change
 ==MSG>           your edit profile using the command RECOVERY ON.
 000100 //RJCL0533 JOB 'BROKEN JCL JOB',MSGLEVEL=(1,1),
 000110 //             NOTIFY=&SYSUID,MSGCLASS=H,CLASS=A
 000200 //TSOBATCH EXEC PGM=IKJEFT1A,DYNAMNBR=200
 000300 //SYSEXEC  DD DISP=SHR,DSN=Z900533.REXX
 000400 //SYSPRINT DD SYSOUT=*
 000500 //SYSTSPRT DD SYSOUT=*
 000600 //SYSTSIN  DD * 
 000900 %ECHOJCL
 ****** ************************* Bottom of Data ****************************
  F1=Help      F2=Split     F3=Exit      F5=Rfind     F6=Rchange   F7=Up        
  F8=Down      F9=Swap     F10=Left     F11=Right    F12=Cancel                 

.CLIST(ECHOJCL)

In CLIST(ECHOJCL) SYSEXEC in line 000031 defines where the system looks for commands, and ISPMLIB in line 000044, defines where to look for messages. By adding my data set before ZOS.CONTEST.PANELS, so that the panel will look in my data set first.

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 -------------------------------------------------------------------------------
 VIEW       Z900533.CLIST(ECHOJCL) - 01.03                  Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ************************** Top of Data ******************************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 PROC 0 PANEL()                                                          
 000002 /*****************************************************************/ 
 000003 /*                                                                   */ 
 000004 /* DOC: THIS CLIST ALLOCATES THE FILES REQUIRED BY ISPF AND PDF      */ 
 000005 /*      AND THEN INVOKES PDF.                                        */ 
 000006 /*                                                                   */ 
 000007 /*****************************************************************/ 
 000008 FREE FILE(ISPPLIB)                                                      
 000009 ALLOC FI(ISPPLIB) SHR DA( +                                             
 000010                          'Z900533.PANELS'                             + 
 000011                          'ZOS.CONTEST.PANELS'                         + 
 000012                          'VENDOR.ISPPLIB'                             + 
 000013                          'SVTSC.ISPPLIB'                              + 
 000014                          'LVL0.ISPPLIB'                               + 
 000015                          'ISF.SISFPLIB'                               + 
 000016                          'ISP.SISPPENU'                               + 
 000017                          'SYS1.SBLSPNL0'                              + 
 000018                          'GIM.SGIMPENU'                               + 
 000019                          'SYS1.HRFPANL'                               + 
 000020                          'SYS1.DFQPLIB'                               + 
 000021                          'SYS1.SBPXPENU'                              + 
 000022                          'SYS1.DGTPLIB'                               + 
 000023                          'SYS1.SICEPENU'                              + 
 000024                          'EOY.SEOYPENU'                               + 
 000025                          'SYS1.SERBPENU'                              + 
 000026                          'DSN810.SDSNSPFP'                            + 
 000027                          'DSN810.SDSNPFPE'                            + 
 000028                          'CSQ600.SCSQPNLE')                             
 000029                                                                         
 000030 FREE FILE(SYSEXEC)                                                      
 000031 ALLOC FI(SYSEXEC) SHR DA( +                                             
 000032                          'Z900533.REXX'                               + 
 000033                          'ZOS.CONTEST.REXX'                           + 
 000034                          'VENDOR.SYSEXEC'                             + 
 000035                          'SVTSC.SYSEXEC'                              + 
 000036                          'LVL0.SYSEXEC'                               + 
 000037                          'ISP.SISPEXEC'                               + 
 000038                          'SYS1.SBPXEXEC'                              + 
 000039                          'QMF810.SDSQEXCE'                            + 
 000040                          'EOY.SEOYCLIB'                               + 
 000041                          'CSQ600.SCSQEXEC')                             
 000042                                                                         
 000043 FREE FILE(ISPMLIB)                                                      
 000044 ALLOC FI(ISPMLIB) SHR DA( +                                             
 000045                          'Z900533.MESSAGES'                           + 
 000046                          'ZOS.CONTEST.MESSAGES'                       + 
 000047                          'VENDOR.ISPMLIB'                             + 
 000048                          'SVTSC.ISPMLIB'                              + 
 000049                          'LVL0.ISPMLIB'                               + 
 000050                          'ISF.SISFMLIB'                               + 
 000051                          'ISP.SISPMENU'                               + 
 000052                          'SYS1.SBLSMSG0'                              + 
 000053                          'GIM.SGIMMENU'                               + 
 000054                          'SYS1.HRFMSG'                                + 
 000055                          'SYS1.DFQMLIB'                               + 
 000056                          'SYS1.SBPXMENU'                              + 
 000057                          'SYS1.DGTMLIB'                               + 
 000058                          'SYS1.SICEMENU'                              + 
 000059                          'EOY.SEOYMENU'                               + 
 000060                          'SYS1.SERBMENU'                              + 
 000061                          'DSN810.SDSNSPFM'                            + 
 000062                          'CSQ600.SCSQMSGE')                             
 000063                                                                         
 000064 ERROR RETURN                                                            
 000065 PDF &PNL                                                                
 ****** ************************* Bottom of Data ****************************		
		

.MESSAGES(EJCL00)
This has error messages for Echo JCL panel.

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 -------------------------------------------------------------------------------
 VIEW       Z900533.MESSAGES(EJCL00) - 01.01                Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ************************** Top of Data ******************************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 EJCL000 'Please Enter a String' .WINDOW=NORESP .ALARM=YES               
 000002 'You must enter a string on this line to be passed to the JCL'          
 000003 EJCL001 'Message Not Used' .WINDOW=NORESP .ALARM=YES                    
 000004 'This message is not used by anything'                                  
 000005 EJCL002 'Yo! Please input a data set name' .WINDOW=NORESP .ALARM=YES    
 000006 EJCL003 'Hey! How about a member name' .WINDOW=NORESP .ALARM=YES        
 ****** ************************* Bottom of Data ****************************
		

.PANELS(ECHOJL)
I modified this so that it can accept two inputs. STRING1 and STRING2. String1 will accept ZOS.CONTEST.REXX and string2 will accept RUNME.
.REXX(ECHOJCL)
I need to make REXX expect two parameters, store them in two strings, and point to my Skeleton member. I added ARG2 in line 000016 and String2 = ARG2 in line 000027.

   File  Edit  Edit_Settings  Menu  Utilities  Compilers  Test  Help            
 -------------------------------------------------------------------------------
 EDIT       Z900533.REXX(ECHOJCL) - 01.02                   Columns 00001 00072 
 Command ===>                                                  Scroll ===> PAGE 
 ****** ***************************** Top of Data ***********************
 ==MSG> -Warning- The UNDO command is not available until you change            
 ==MSG>           your edit profile using the command RECOVERY ON.              
 000001 /************************** REXX ******************************/
 000002 /*                                                            */        
 000003 /*  Program: ECHOJCL                                          */        
 000004 /*  Language: REXX                                            */        
 000005 /*  Author: Christopher W. Baran                              */        
 000006 /*  Date: 8/23/2006                                           */        
 000007 /*                                                            */        
 000008 /*  This program takes a string as an argument and tailors    */        
 000009 /*  the JCL to submit a job to print the string.              */        
 000010 /*                                                            */        
 000011 /*  Refer to the z/OS TSO/E REXX Reference link in the        */        
 000012 /*  contest instructions for a programming reference guide.   */        
 000013 /*                                                            */        
 000014 /**************************************************************/
 000015                                                                         
 000016 Parse Arg ARG1 ARG2 /* take all the data passed as arguments 
 000017                    and store it to the variable ARG1 */                 
 000018                /* two arguments would look like:                        
 000019                   Parse Arg ARG1 ARG2 where ARG1 will                   
 000020                    get all the data until the first                     
 000021                    space and ARG2 will get everything                   
 000022                    after the first space              */                
 000023                                                                         
 000024 String1 = ARG1 /* Take the contents of ARG1 and store it                
 000025                   in the variable String (used later in                 
 000026                   the skeleton file)                  */                
 000027 String2 = ARG2                                                          
 000028 UserID = userid() /* userid() is a system function that                 
 000029                       returns the user id that is executing             
 000030                       the program.                      */              
 000031                                                                         
 000032 JobName = 'EJCL' || RIGHT(UserID,4) /* JobName is used in the           
 000033                                         skeleton file       */          
 000034                                                                         
 000035 /* Create name for a temporary JCL dataset */                           
 000036 JCLName = 'JCL' || RANDOM()                                             
 000037 IF SYSDSN(JCLName) = "OK" THEN DO                                       
 000038   "DELETE "JCLName""                                                    
 000039 END                                                                     
 000040                                                                         
 000041 /* Allocate temporary dataset for JCL */                                
 000042 "ATTRIB LST DSORG(PS) RECFM(F B) LRECL(80) BLKSIZE(8000)"               
 000043 "ALLOCATE FILE(OUTDD) DA("JCLName") NEW SPACE(1,5) TRACK USING(LST)"
 000044 "FREE ATTRLIST(LST)"                                                    
 000045 "FREE FI(OUTDD)"                                                        
 000046                                                                         
 000047                                                                         
 000048 Address ISPEXEC  /* Process thses commands based on the
 000049                      ISPEXEC library                     */             
 000050 /********* File Tailoring Services Setup *****************/
 000051 "LIBDEF ISPSLIB" /* clear the current ISPPLIB concat */                 
 000052 "LIBDEF ISPSLIB DATASET ID('Z900533.SKELETON(ECHOJCL)')"   
 000053                /* This defines the dataset to look for                  
 000054                      the skeleton files in              */              
 000055                                                                         
 000056 "LIBDEF ISPFILE" /* clear the current ISPFILE concat */                 
 000057 "LIBDEF ISPFILE DATASET ID("JCLName")" /* This defines the output   
 000058                                dataset for the completed tailor  */     
 000059                                                                         
 000060 "FTOPEN" /* Open the output dataset for writing (ISPFILE) */            
 000061 "FTINCL ECHOJCL" /* Use the ECHOJCL member from ISPSLIB as source       
 000062                      for the tailor                              */     
 000063 "FTCLOSE" /* Complete the tailor and close the output dataset */        
 000064 /********************************************************/
 000065     
 000066 Address TSO /* Process these commands based on                          
 000067                 TSO commands (ie option 6) */                           
 000068 "SUB "JCLNAME"" /* Submit the job */                                    
 000069 "DELETE "JCLNAME"" /* Delete the temporary JCL dataset */   
	

.SKELETON(ECHOJCL)
SKELETON(ECHOJCL) is used by REXX program to for a JCL template. I copy and paste .JCL(BADJCL) to this member. I then added & so that &SYSUID is read as &&SYSUID.

TOP

Challenge 11 Compile Assembler, COBOL, PL1 and C using JCL
Members in this Challenge are very large for me to copy in this project. I am going to explain what I did. JCL can compile COBOL, PL1, C and Assembler languages. In both languages, I had to change a loop that was printing 10 times to 1000 times.