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.
1 | Library | |
2 | Data Set | |
3 | Move/Copy | |
4 |
Dslist |
Print or display (to process) list of data set
names. Print or display VTOC information. |
5 | Reset | |
6 | Hardcopy | |
7 | Transfer | |
8 | Outlist | |
9 | Commands | |
11 | Format | |
12 | SuperC | |
13 | SuperCE | |
14 | Search-For | |
15 | Search-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 Line | I30001 This is
000002 Fun | Will insert 3 more lines | 000001 This is
000002 fun 000003
000004 000005 |
CC |
Copy | CC0001 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.

TOP
We has to create a member named by our usernames and execute as a REXX Program.
The two Members sent to IBM in Part one.

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