In Part 3, you will learn more about using an operating system environment that is used to control the world's most critical data. With this knowledge, you can significantly increase your career potential - just as other participants have in the past.
Successful completion of the challenge is allocation of hlq.P3.OUTPUT(#01) with 3 lines.
From ISPF panel
Execution of part3 routine allocated hlq.P3.OUTPUT and wrote a single line into member #01
The basic skills that you have acquired in Part 2 should allow you to complete the following tasks with abbreviated instructions.
After the first line in hlq.P3.OUTPUT(#01), copy the content from hlq.P2.OUTPUT(#01)
The result will be 3 lines in hlq.P3.OUTPUT(#01)
You are ready for the next challenge
What Computer Programmers Do?
Computer programmers write programs in a variety of computer languages. Learning to code in a new computer language becomes increasingly easy with each new language learned. Learning your first computer language can take the most time because of the need to learn programming language fundamentals which are listed below.
Computer programmers typically do the following:
What Software Developers Do?
Software developers are the creative minds behind computer programs. Some develop the applications that allow people to do specific tasks on a computer or another device. Others develop the underlying systems that run the devices or that control networks.
Many software developers work for firms that deal in computer systems design and related services or for software publishers.
Here is some information about these job roles in the United States:
If you noticed a decline in the demand for computer programmers from the above web site, this is misleading. For example, many jobs exist that assume knowledge of and some experience with computer programming and/or software development as a prerequisite for the job - such as an IT Consultant, etc.
While you have successfully demonstrated the ability to maintain an existing COBOL computer program in the final challenge of Part 2, fundamentals of computer programming apply to all computer programming languages. Experienced computer programmers know the learning curve dramatically shinks with each new computer language because the fundamentals are the same. What is different is variations in programming language syntax and how to execute the program on the target operating system.
Fundamental to learning how to read, change, and write a computer program using a new programming language is the familiarity with the programming language syntax and the target operating system environment procedures used to execute the program.
The most effective way to begin learning any new programming language is to
start with a very simple programming language construct , such as print of the literal
string "Hello World". The next step is to expand your capability with the
new programming language by reviewing and modifying sample code focusing on the
programming language specific syntax constructs that are fundamental to most
programming languages - "how to code the":
Arithmetic Operators are:
Specific programming languages will use the operator symbol, the operator english word and in some cases, the programming language will accept either.
The next several challenges will expose you to common programming languages.
So, about now you might be asking, "Is one programming language enough to get a computer to do what I want it to do?" Programming languages have strengths and weaknesses as well as attributes that make a programming language the best fit for a specific task in a specific operating system. The analogy is, "if you only have a hammer, then everything looks like a nail". These challenges expose you to common programming languages which are effective tools of the IT business application architecture trade.
The above terminology and description of programming language fundamentals will be used in the challenges - such as statement, expression, sequence, selection process, loop process, function, program construct, data string manipulation, etc.
An extremely flexible z/OS computer programming language, REXX, will be used to demonstrate the above computer programming language fundamentals. The challenge is to change the sample computer program as instructed.
Enough preparation reading. Time to do a very simple programming language challenge.
You are seeing REXX programming language code.F3 to return to hlq.SOURCE directory list
Many methods exist for executing REXX program in the z/OS environment.
Enter ex to the left of member name xyz to execute the REXX programming language code.
The XYZ REXX program writes helpful messages to your display.
Edit hlq.SOURCE member name xyz
You only need to focus on REXX Program lines 2 thru 10.
Execute the REXX program until the program writes
"The program generated a valid numeric number" message to your display.
The REXX program will write the number from the program arithmetic operations to hlq.P3.OUTPUT(#02) following that message.
There are many hundreds of computer programming languages. It is important to recognize that recent "hot" languages get the most attention by the programming community due to the specific programming language characteristics that make them a best fit for developing specific emerging technology.The following is a list of computer programming languages
Many highly experienced mainframe technicians use a scripting language that is unfamiliar to most in the distributed processing world even though this language is available to the other platforms. While numerous z/OS scripting languages exist, a preferred scripting language by highly experienced z/OS technicians is REXX. REXX was designed for ease of learning and reading. The capabilities of REXX went far beyond the original intent of quickly writing prototype code to writing production permanent code. While REXX started out as a scripting language, REXX can be compiled into machine instruction programs enabling increased execution speed.
If you end up in a job as a z/OS System Programmer or System Administrator in a large enterprise, the chances of encountering REXX code is very high. It is not necessary to memorize REXX syntax. REXX syntax and coding techniques are everywhere on the internet.
The previous REXX learning URLs are easiest to read. Below are more websites with more extensive details about the REXX programming language:
Having "REXX" on your resume, similar to having "COBOL" or "JCL", can be an attention getter. An employer that observes "REXX" may immediately think this is an applicant with potential to fill future mainframe System Programmer or System Administrator openings within the organization.
Part 2 challenge 13 involved capturing system command output about network traffic and reporting on differences between two time periods. A system command syntax correction was required to complete Part 2 Challenge 13. This same challenge involved a REXX program to read the before and after command output, then report the differences.
Completion of part 3 challenge 3 is to modify the REXX program used in part 2 challenge 13 to write a report on a subset of NETSTAT STATS command output between two time periods. Therefore, the modification to the REXX program is to delete the unwanted code and retain only the REXX program code necessary to write the requested report.
The report required for successful completion must include before and after values for Packets Received, Received Address Errors, and Current Established Connections.
Packets Received and Received Address Errors are in the NETSTAT STATS output twice, once for IPv4 and again for IPv6. The report must only include the values for IP Statistics (IPv4).
An example report follows:
The REXX code copied into member NSTATS is the REXX code used in part 2 challenge 13.
Note: You do not need to change the code at this time. You will be instructed to edit and the change the REXX code later in the challenge. For now, just review REXX program syntax constructs.While several REXX programming learning URLs were provided, below is a description of a few REXX program constructs in the REXX program you will modify to complete the challenge:
Jump to SDSF STATUS panel from the edit session by entering
=sd ; st
Observe JOB P3CH3B is in a HOLD status. Enter a to the left of P3CH3B to release the JCL JOB.
JOB P3CH3B executed the 2nd NETSTAT STATS command writing output to hlq.CH13.OUTPUT(RUN3).
Edit hlq.SOURCE to display the directory of members
Enter ex to the left of NSTATS to execute the REXX program. If you have not changed the REXX code, then you executed the same REXX code used in part 2 challenge 13. The output is written to the TN3270 display. The output is identical to the part 2 challenge 13 output.
Note: Observe the Julian date in the report may not be today. The Julian date is from output captured when you completed Part 2 Challenge 13.
Edit hlq.SOURCE member name NSTATS
Observe the "ALLOC" statements on lines 10 and 58.
Enter ex to the left of NSTATS and observe report when the program input is CH13.OUTPUT(RUN3) and CH13.OUTPUT(RUN4).
Modify NSTATS REXX program to report only the following:
Again, the objective is to delete unwanted REXX code and leave the REXX code that will write the report above.
The REXX code that writes "** No change" message when network traffic values are the same must also be deleted.
f3 to save changes and return to hlq.SOURCE directory list.
The challenge is exactly the kind of task you might be asked to complete as a new hire in a mainframe technical role.
Execute ex NSTATS again. Repeat this process until you are satisfied the report meets the requested report criteria.
Use SDSF to review P3CH3C output. Enter ? to the left of P3CH3C and select s DDNAME SYSTSPRT with associated StepName REPORT.
Once a good report is produced, then write the report to
hlq.P3.OUTPUT(#03) as follows:
Successful completion will be a valid report in hlq.P3.OUTPUT(#03)
COBOL manages some of the most critical data and business logic in the world's economy.
COBOL programming language, COBOL compiler optimization, and COBOL runtime performance have over 50 years of technology advancements that contribute to the foundation of world's economy. The core business logic of many large enterprises has decades of business improvement and tuning embedded in COBOL programs.
The point is - whatever you read or hear about COBOL, be very skeptical. If you have the opportunity to work directly with someone involved in writing or maintaining critical business logic using COBOL, you will learn about the operation of the core business. Business managers, business analysts, and decision makers come and go. The sum of all good business decisions can frequently be found in the decades of changes implemented in COBOL programs. The answer to "How does this business actually work?" can be found in COBOL programs.
Add the following to your awareness of COBOL. It is an absolute myth that you must be at least 50 years old to be good with COBOL. COBOL is incredibly easy to learn and understand. One of the many reasons financial institutions like COBOL, is the fact that it is not necessary to be a programmer to read and understand the logic. This is important because critical business logic code is subject to audit. Auditors are not programmers. However, auditors are responsible for insuring the business financial statements are presented fairly. It is COBOL processing that frequently result in the business ledger updates and subsequent financial statements.
Now for a real world lesson. A comment recently made in a well known business journal by someone with a suspect agenda was quoted as saying, "COBOL is a computing language used in business and finance. It was first designed in 1959 and is pretty old and slow." A highly experienced business technology person knows the only true part of that last sentence was that COBOL was first designed in 1959.
It's no secret that lots of banks still run millions of lines of COBOL on mainframes. They probably want to replace that at some point. So why haven't they? Most banks have been around long enough to still feel the pain from the ~1960's Software Crisis. After spending enormous amounts of money, and time, on developing their computer systems, they finally ended up with a fully functional, well-tested, stable COBOL core system.
Speaking with people that have actually worked on such systems, nowadays they have Java front ends and wrappers which add functionality or more modern interfaces, they run the application on virtualized replicated servers, but in the end, everything runs through that single core logic. And that core logic is rarely touched or changed, unless absolutely necessary.
From a software engineering perspective, that even makes sense. Rewrites are always more expensive than planned, and always take longer than planned (ok, probably not always. But often.). Never change a running system etc.., unless very good technical and business reasons exist.
That is real world!
While Part 2 exposed you to COBOL, this challenge will reenforce awareness of COBOL that could prove valuable during your career.
COBOL that runs in the z/OS Environment is called Enterprise COBOL.
The challenge involves 3 COBOL programs with COBOL syntax constructs used by experienced COBOL programmers. Remember the Flour, Sugar, Oil Company? Each of the 3 COBOL programs read 565 Flour, Sugar, Oil Company client profile records. The program objective is to read a different input source that has only the unique customer number and locate the matching detail record from the 565 client profile records.
The 1st COBOL program reads a single customer number, then begins reading the 565 client profile records until finding a match on the customer number. The 2nd COBOL program reads the 565 client profile records and writes all 565 records into an in memory table where each record can be repeatedly searched. The 3rd COBOL program is designed for online interaction to accept a customer's number and return customer details.
The challenge will be to fix a COBOL construct syntax problem in each program and display requested information from the client profile record.
Take a few minutes and quickly browse these excellent URLs to help with this challenge
1st COBOL program, FSOC050
Edit hlq.SOURCE member name FSOC050 and observe the following:
2nd COBOL program, FSOC051
Edit hlq.SOURCE member name FSOC051 and observe the following:
After successfully fixing the COBOL syntax problem, then modify the FSOC051 COBOL program to display the following fields from the table for each customer number input. Display the fields in the order listed.CUSTOMER NUMBER =
3rd COBOL program, FSOC052
Edit hlq.SOURCE member name FSOC052 and observe the following:
You can validate FSOC052 successful interactive conversation execution as follows:
After successfully fixing the COBOL syntax problem, then modify the FSOC052 COBOL program to display the following fields from the table for each customer number input. Display the fields in the order listed.CUSTOMER NAME =
Once the 3 COBOL programs successfully execute with requested modifications, then enter:
tso submit 'zos.public.jcl(p3ch4c)'
If the 3 COBOL programs successfully execute with the requested modifications, then the JCL job, p3ch4c, write output from the execution of the 3 COBOL programs into hlq.P3.OUTPUT(#04)
The IBM Z hardware architecture is the best performing environment for Java.
These capabilities include
Java 8 exploits IBM Z new SIMD vector hardware instructions for the Java libraries and numerous frequently used functions. Benchmarks exploiting SIMD vector hardware instructions improved by between 2X and 60X.
In the z/OS environment, the unix shell, JCL, and middleware such as CICS is available to execute Java where Java APIs exist to read from and write to any combination of z/OS data sources.
Java can read and write any z/OS data source. The challenge explores the very powerful Java SQL API and its ability to select, insert and update relational database tables.
A Java driver (JDBC - Java Database Connectivity) enables relational database connectivity capability.
Java program execution requires a JVM, or Java Virtual Machine. The JVM enables java program execution on any operating system without a recompile. The executable java program used in the challenge could be binary transferred to your workstation. Successful workstation execution which returns the result set from the remote relational database to the workstation requires the JDBC driver in the workstation CLASSPATH. If you want to try it, db2jcc.jar, db2jcc_license_cisuz.jar, and favorite.class must be binary transferred to your workstation. The workstation path containing favorite.class and the jar files must be made accessible by the workstation JVM using the CLASSPATH variable. Also, Java must be installed on the workstation.
You are given Java language code to compile. The program connects to z/OS relational database table and processes a SQL statement to count the number of records in the DB2 relational database table.
If you participated in 2016 Master the Mainframe Part 3, you may remember the table used in the challenge. The table required each contestant to insert a record with their favorite color, month, and time of day, dusk or dawn.
Java language constructs:
Completion of the challenge requires more virtual storage for the TSO session:
Total number of records = 1061 Total number of red = Total number of blue = Total number of green = Total number of purple = Total number of orange = Total number of yellow = Total number of white = Total number of black =
Review of hlq.P3.OUTPUT(#05) should contain the requested output.
Note: The output record format only needs 1 space between each word, the = symbol, and the total to get credit.
In the event an original copy of favorite.java is needed to start over:Copy java source code from a partitioned data set to a unix file
C and C++ can be compiled and executed using either JCL or Unix System Services shell. C and C++ in the z/OS environment can read, write, and update any of the z/OS data sources. The IBM z/Architecture enables z/OS XL C/C++ development of high-performing business applications.
The challenge is designed to demonstrate z/OS flexibility with C and C++ programs.
Your participation in Part 3 enables you to claim z/OS experience. A detail of claiming z/OS experience is the ability to locate the professional documentation related to any specific z/OS technical discipline. Below is the URL for the IBM z/OS XL C/C++ professional documentation.z/OS XL C/C++ Professional Documentation
Review the C program source code in the wikipedia URL that follows:
wikipedia C program example
The C program source was pasted into a z/OS data set member to be used in the challenge.Brief description of the example C program syntax
The challenge will compile the C program into a unix file executable, then again compile the C program into an MVS data set member executable. Just wanted you to know that z/OS flexibility makes it possible to copy the executable between unix and MVS data sets without the need to recompile.
FYI - It is possible to cut and paste the commands in most cases.
See above screen shot with method to save, tso submit, and review output following edit.Note: If the above failed to print requested output, then correct C1 source and submit P3CH6 JCL to compile and execute.
Review hlq.P3.OUTPUT(#06) to verify C1 output exists.
If struggling with compile errors:
Assembler = Speed.
There are a number of cases in large enterprises where speed is paramount over ease of programming. There may not be many assembler programs. However, any assembler program supporting large enterprise business applications are most likely extremely critical to the enterprise.
Learning assembler language programming is not easy and requires lots of practice. However, if you like the technical details of how computers really work and you want a technical skill that can separate you from other computer technicians, then developing assembler skills provides both.
The challenge will expose you to assembler language in the IBM Z environment. A subsequent challenge will provide a bit more detail about assembler in the IBM Z environment.
Upon successful execution, assembler code compile and execution prints "Hi! I can count fast", then will loop 10 times adding 1 to a total and printing each new total value.
Review of JCL job output shows reason for compile failure and subsequent execution failure.
The compile fails with a minor syntax problem. You do not need to be an experienced assembler language programmer to correct the compile problem. Correction requires review of the source code pattern to identify a mismatch where the issue is a matter of a misspelling. The compiler output error message, ASMA044E, will provide a big hint. Focus on the assembler label associated with "Hi! I can count fast" near the bottom of the source on a DC (Define Constant) instruction. Then look for an MVC, Move Character, instruction which moves those characters to an area that is printed using an assembler PUT statement.
What is an "assembler program label"?
An assembler program label is a programmer selected name starting in column 1. When the program is compiled the label is translated into an address referencing that location in the code, also known as the program "offset" from the beginning of the program instructions.Once the minor assembler code problem is fixed, then P3.OUTPUT(#07) will write:
Hi! I can count very fast. 00000001 00000002 00000003 00000004 00000005 00000006 00000007 00000008 00000009 00000010
edit source(asmpgm) and modify the in-stream
source code to successfully compile and execute.
enter hilite asm to hilite assembler reserved words
submit and review JCL job output and P3.OUTPUT(#07) for success.
An enterprise z/OS environment has thousands of disk volumes and thousands of tape volumes. These thousands of disk volumes and tape volumes are capable of storing millions of data sets.
A critical z/OS base component is DFSMS, Data Facility Storage Management Subsystem. The contest challenge will only scratch the surface of DFSMS. The fact that you are even aware of DFSMS as a critical z/OS component would impress any perspective employer.
DFSMS is a very broad category of data management technology that far exceeds data management services in other operating systems.
The Storage Management Subsystem (SMS) is part of DFSMS. SMS changes the storage management approach from user-managed volumes to SMS-managed data sets residing in SMS-managed storage groups. The system, rather than the user, determines data placement and handles data backup, movement, space, and security.
SMS provides the following storage classes and groups, which are customized by the storage administrator to fit the system environments and policies:
Storage administrators also customize SMS automatic class selection (ACS) routines, which automatically assign the SMS classes and storage groups to data sets. This allows the user to create data sets by providing only a small amount of information through ISMF panels.
ISMF, Interactive Storage Management Facility, are panels available to a storage administrator to assist with managing and monitoring disk storage capacity. ISMF is a manadatory skill for z/OS Storage Administrators.
This challenge exposes you to Storage Management Subsystem (SMS). This knowledge will begin to qualify you as a disk administrator candidate. If you were to interview for a large enterprise disk storage administrator position, the hiring authority would be impressed that you would have this knowledge.
SMS significantly simplifies JCL through implemented standards. An example is system customization that has data set name rules for new data set allocations. The challenge demonstrates system implemention of data set name rules for newly allocated data sets that ONLY require data set name and disposition of new on the JCL DD statement. The system customization results in determining data set volume placement, data set attributes, and data set space. Without this SMS customization, a newly allocated data set requires volume, attributes, and space values on the JCL DD statement.
SMS is configured, customized, and maintained by the Storage Administrator. The configuration and customization are agreed upon storage rules which would be documented and shared with the IT staff for their use. A storage rule on this system is that any data set name with a 2nd data set name qualifier of SEQ is assigned data set attributes, data set space, and a volume where the data set will be allocated.
z/OS data set allocation processing rules enforced by SMS configuration and customization consist of control data sets and processing logic. The control data sets are VSAM data sets used to define resources such as MTMSEQ associated with data set attributes and space. The processing logic is known as the SMS Automatic Class Selection (ACS) routines. The logic is interpretitive script language stored in partitioned data set members.
SMS Control Data Sets sections include:
SMS Control Data Sets also store the partition data set names and member names of the ACS routine processing logic.
Automatic Class Selection (ACS) routine processing logic includes:
ISMF, Interactive Storage Management Facility, panels are available to review the SMS Control Data Set defintions and Automatic Class Selection (ACS) routines which is the processing logic.
You just completed a review of SMS and ISMF that IT professionals attend a several day professional training class to acquire knowledge on. You are prepared to work with an experienced z/OS Storage Administrator armed with comprehension of SMS and ISMF.
The details you just reviewed has the technicals details to accomplish a simple task to complete this challenge.
Once the above is completed, then tso submit 'zos.public.jcl(p3ch8x)' to write a list of your data set names into P3.OUTPUT(#08) which includes the newly allocated partitioned data set name.
Security Administration roles and security best practices have always been critical. The internet and subsequent self serve capabilities enabled the public's indirect access to critical data sources, such as a bank account. As a result, the intense focus around security has increased. Audit functions and automated monitoring with the ability to take action based upon suspect behavior are also critical. The security administrator will typically conduct audit functions in an attempt to find and address issues. Official auditors conduct regularly scheduled reviews.
IBM Z mainframes have security and data encryption capability beyond other servers. The most significant security issue is sloppy procedures, practices, and inadequate audit reviews.
z/OS is not difficult to understand. However, the vast majority of z/OS technical capabilities in most production environments are nearly impossible to understand as a result of security policies. High z/OS security is a matter of need to know to complete responsibilities. Therefore, access is only permitted to resources that an employee must have and no more. The reason is to mitigate risk where the insiders cannot be trusted as a general practice.
z/OS Resource Security covers data, program execution, transaction execution, network traffic, and more. RACF, Resource Access Control Facility, is available to provide z/OS Resource Security.
The challenge involves:
Use of fully qualified generic data set profiles are a best practice over discrete data set profiles because a discrete data profile is deleted when the data set is deleted. A fully qualified generic data set profile is retained when the data set is deleted. If the identical data set name is allocated, then protection characteristics of the existing fully qualified generic data set profile are applied.
RACF commands used in the challenge are:
Jump to ISPF Command Shell panel, =6
Enter ld da(**) all
The output of the above command is equivalent to ld da('hlq.**') all where hlq is the high level qualifier - your ID
All your personal data sets are protected by this generic data set profile
Observe your generic data set profile has a UNIVERSAL ACCESS of NONE
This means ACCESS authority to your data sets is NONE, except the owner, you
Review the output for successful completion
P3CH9 allocated 3 new data sets:
From the ISPF Command Shell, =6
For example, you can list any of your RACF data set profiles using the following:
ld da(dataset_profile) all
or for a simple list
search mask(z#####) class(dataset)
where your id should replace z#####
Once you successfully created the 2 RACF fully qualified generic data set profiles
according to above instructions, then
The above writes your RACF data set profiles to P3.OUTPUT(#09)
If you need to delete a fully qualified generic data set profile -
However, DO NOT delete your generic data set profile, hlq.**
If you accidently delete your generic data set profile -
ad ** uacc(none)
Relational Database Management Systems (RDBMS) are used to manage a massive amount of data being simultaneously accessed by thousands of people, devices, and other applications.
Structured Query Language (SQL) is the common relational database programming language. Once you have learned to use SQL, the knowledge directly applies to other relational database management systems.
Understanding SQL is the foundation for learning any relational database management system.
A popular z/OS RDBMS is DB2
There are 4 categories of SQL:
While DML and TCL are the primary SQL categories used by developers, DDL and DCL are the primary SQL categories used by the Database Administrator, DBA.
Here are some excellent sources to learn the capabilities of SQL applied to all relational database management systems:
DB2 for z/OS SQL can be executed a variety of ways:
You might recall using JAVA programming language API to access the DB2 for z/OS favorites table in a previous challenge.
The z/OS DB2 DBA has numerous responsibilities which include:
A DB2 for z/OS DBA needs specialized knowledge about z/OS learned in previous challanges such as VSAM, Virtual Storage Access Method, SMS, Storage Management Subsystem, and the System Catalog.
DB2 for z/OS Data Structures:
The following is a diagram of DB2 for z/OS Data Structures.
A few potentially confusing DB2 for z/OS words are Storage Group and Catalog.
Relationship between DB2 and VSAM data set names
DDL steps used by a DBA to create a DB2 database table follows:
Submit JCL to allocate hlq.SQL data set with members and copy member DB2LOAD into hlq.JCL as follows:tso submit 'zos.public.jcl(p3ch10)'
DDL illustrating the above steps is available in the References drop down with title of DB2 Example. The document includes JCL to run a DB2 utility to load data into a newly allocated DB2 table, then a series of DB2 SELECT statements to extract result sets from the data loaded in the DB2 table.
The DB2 Example in the References drop down is a model for accomplishing the challenge.
DB2 Example in References drop down walks you through learning the steps necessary to complete the challenge.
The challenge is to create a tablespace, table, indexspace, index, then load the new table and index using a different data using challenge details that follow.Challenge Details:
Modifications to SQL members STEP2, DB2LOAD JCL member, and SQL member STEP4 can be used to complete the challenge.
Last step to get full credit for completing challenge 10:
Browse or View P3.OUTPUT(#10) and verify information you expected, then move on to the next challenge!
A System Programmer does not know it all. However, they get very good at knowing which professional manuals to reference and figuring things out. The more they are required to figure out, the more effective they are in their System Programmer role.
DevOps is a popular clipped compound that emphasizes the collaboration and communication between business application developers and other IT professionals where Dev represents development and Ops represents other IT professionals that setup up and maintain the environment used by development. The other IT professionals include z/OS System Programmers. This relationship has existed for many decades in the mainframe environment, long before the DevOps clipped compound was introduced. An objective of DevOps is a standard way for all organizations to approach the plan, build, and run, of the development process with standardized procedures, practices, and tool sets. The primary objective of DevOps is to speed up delivery of applications and new application features through continuous integration (CI) and continous delivery (CD).
DevOps tool sets are software products based upon "Eclipse IDE, Integrated Development Environment" which is a workstation GUI, Graphical User Interface. IBM Z DevOps tool set is IDZ, IBM Developer for Z (formerly call RDz, Rational Developer for z). Prior to the GUI tool sets used by developers to interface with z/OS, the TN3270 TSO/ISPF environment was the primary development interface. The GUI interface makes the underlying mechanics of navigating z/OS transparent to the developers while meeting the objective of DevOps. However, someone must understand and maintain the underlying mechanics critical to the DevOps GUI tool sets.
Developers (Dev) are dependent upon procedures created and maintained by System Programmers (Ops) when the target system of development is z/OS. An example would be an IDE graphical user interface with a click selection to compile a COBOL program using a DB2 table as a data source. All the developer knows is how to make a GUI click selection where the result is the z/OS executable program to test.
The z/OS technical plumbing to build the z/OS executable program needs to be developed. A z/OS System Programmer would create and support the technical plumbing enabling a simple GUI selection. What occurs as a result of the GUI selection is totally tranparent to the developer.
The challenge explores the technical plumbing to make a developers job easier, enabling the developer to deliver applications quicker.
Things you currently know as the System Programmer to accomplish the challenge:
A developer reports a problem with the following details:
A System Programmer learns to get as many details as possible from the person reporting the problem, then applies knowledge of the z/OS environment that might be related to the problem to begin to define the real problem based upon the known symptoms.
The developer reports, "my computer did everything correctly. Your computer must have a problem with what my computer requested to be done". That is the extent of the developers technical knowledge to help you.
You ask the developer to select the compile from the IDE GUI for you to observe z/OS
activity and problem symptoms.
You looked at the z/OS system log for activity as a result of the developer workstation request to compile.
For this challenge, you only need to review the steps the System Programmer took to isolate the problem. No action is needed by you until instructed.
The following actions were taken by the System Programmer:
VENDOR.PROCLIB member CBLDB2 is one of the most complex JCL procedures.
Figure 15. is a diagram of the JCL CBLDB2 PROC which you are not expected to understand to complete the challenge.
However, references will be made to Figure 15.
More things you know as the System Programmer
Take the following actions to recreate the problem using a private copy of the source, JCL, and JCL PROC:
The DB2FSO program could easily be a service for authorized employees to retrieve this information on their smartphone and to invoice the client immediately upon the delivery of the flours, sugars, and oils that were previously ordered by the client.
To get credit for the competion of challenge 11, submit the following:
tso submit 'zos.public.jcl(p3ch11)'
The JCL job writes information to P3.OUTPUT(#11) proving the challenge was completed.
In a mainframe IT organization, the systems programmer plays a central role with a diverse set of technical skills.
A systems programmer is responsible for maintaining a fully operational environment and resolving problems quickly. Responsibilities of the job include technical services, support, and consultation to the entire IT organization. The system programmer installs, customizes, and maintains the operating system, and installs or upgrades other software products that run on the system.
A highly experienced systems programmer:
A software tool exists to install z/OS and z/OS software products. The software tool tracks all modifications to z/OS and z/OS software products. The software tool is Systems Modification Program/Extended (SMP/E)
When an operating system problem is encountered and the failing component appears to be an IBM owned component, the Systems Programmer contacts IBM with the error messages. IBM will request information about the maintenance level applied to various components of the operating system. SMP/E is used to quickly answer those questions. An understanding of SMP/E is required to work with IBM to resolve problems.
SMP/E is a repository of details about the highly advanced IBM Z flagship operating system, z/OS, and the IBM products added to the z/OS environment, such as DB2 and COBOL.
Learning SMP/E is an exercise in comprehending terminology. The specialized SMP/E skill is expected of any z/OS Systems Programmer position.
z/OS system might appear to be one large block of code. Actually, z/OS is a complex system comprising of many different smaller blocks of code. Each of those smaller blocks of code perform a specific function within the system.
Each system function is composed of one or more load modules. In a z/OS environment, a load module represents the basic unit of machine-readable, executable code.
The following terminology will be referred to in the challenge. You are not expected to memorize any of the terminology. Awareness of the terminology puts you on the learning path to be a skilled Systems Programmer.
Overview of SMP/E Terminology
The challenge uses ISPF print screen. Therefore, you need to modify your ISPF defaults as follows:
From Log/List drop down, select 2 - List Data set defaults
Select 4 to Keep data set and allocate new data set
From Log/List drop down, select 3 - List Data set characteristics
Select 1 - Record Format FBA, then Logical record length 80 and Line length 80
SMP/E panels will be used to retrieve information about an active system module.
The 2016 Master the Mainframe Contest SMP/E challenge used JCL only to locate information about an active system module. 2017 challenge will use interactive panels only. The point is that either JCL or panels can be used to interact with the SMP/E Consolidated Software Inventory, CSI, environment.
Challenge situation - a system problem just came to your attention
A system element, BPXFSMKN, was involved with a reported system issue. You need to find out more about BPXFSMKN. The challenge is to use the SMP/E Dialog Panels to learn more information about this element.
The challenge does NOT provide any screen shots. Follow the instructions below to complete the challenge.
You just completed the challenge. Feel free to browse P3.OUTPUT(#12) for the print screens.
Challenge 13 is a quick, easy, and educational challenge.
The contest z/OS system is one of many operating systems running on the contest IBM Z hardware.
IBM Z hardware can run 5 unique operating systems:
If you want to read more about these operating systems, visit:
Communication between the operating systems in the IBM Z frame eliminates the requirement for extra cables. In addition, the response is near zero because the communication path can be configured to remain within the IBM Z frame.
IBM Z can be hardware partitioned. The hardware partitioning is called LPAR. This LPAR hardware hipervisor is assigned CPU's, Memory, and Peripheral Devices such as disk, network, tape, etc, from the total available resource pool.
Any of the 5 operating systems can run in an LPAR. A single IBM Z is capable or running up to 85 LPARs.
When z/VM is running in an LPAR, then 'guest' operating systems can run under the control of z/VM. z/VM is a software hipervisor. Any of the above 5 operating systems can be hosted as a virtual machine with the z/VM environment.
It is common to use z/VM hypervisor to run 100's and even 1000's of Linux operating systems. Running 8,000 virtual servers on a single system with near zero network delay between the operating systems is a fantastic industrial strength architecture.
The challenge will give you the opportunity to interface with the z/VM that is controlling the contest z/OS.
A routine exists to enter z/VM commands from your TSO/ISPF session.
Enter =6 to display ISPF Command Shell panel.
Enter the following commands to display z/VM information related to this z/OS guest operating systems:
where ####### is the VSWITCH name available from 'Q LAN ALL' and 'Q NIC ALL'
Note: Q is abbreviation for z/VM QUERY command
Checking your results:
While commands return output to your screen, it also writes output to P3.OUTPUT(#13)
Therefore, the output from the last z/VM Q command is stored in P3.OUTPUT(#13)
Success is when P3.OUTPUT(#13) contain LAN DETAILS from the VSWITCH name.
The challenge exposes you to IBM Z Assembler. Learning to be an assembler programmer takes significant time and repetition.
Learning assembler is harder than learning other programming languages.
The reason is that assembler requires the programmer to learn about the machine specific:
IBM Z Assembler coding and debugging requires:
There are employers that want and need technicians with IBM Z Assembler skills.
A humorous youtube video related to the above statement follows:
"The code I write runs on the mainframe."
A deceptively simple assembler program will be used and explained. The deceptively simple assembler program includes many technical elements of IBM Z Assembler.
Get a TSO Ready prompt by terminating the ISPF session.=x
Start the TSO TEST facility as shown below - replacing Z99999 with your IDFigure 8.
In the above display - observe the following:
Modify CH14 assembler program as instructed below.
Congratulations! You are most likely in a fraction of the contestants advancing to the
last challenge in Part 3.
Completing all Part 3 challenges qualifies you to be among the group judged and selected as the Part 3 contest winners.
Best of luck with the final challenge.
The challenge has neither a right or wrong answer. The challenge requires development of data processing services for the Flours, Sugars, and Oils Company.
COBOL source code and 2 DB2 tables are provided along with a minimum requirement to complete the challenge. The minimum requirement is a matter of following the instructions enabling interative execution of the COBOL program without any COBOL programming source code modifications.
Develop business helpful application services beyond the minimum requirement to distinguish your application from other contestants during the judging process. The quality and usefulness of your business application services will contribute to your chances of being a top place winner.Judges will execute each contestant challenge 15 COBOL program checking for:
Summary of previous challenges that can help you complete the final challenge:
Instructions to meet minimum requirements:
Competing in the final challenge demonstated your ability to be a z/OS application developer. Your completion of Part 3 demonstrates your willingness and capability to be hired by employers needing those attributes to learn from senior IBM Z technicians supporting some of the most critical systems responsible for the day to day business transactions.
Completing Part 3 makes it highly probable your name and school will be posted in Part 3 Wall of Fame. This is a distinguished and relatively short list. You will be in this list at least as an Honorable Mention and possibly as a top place winner.
Bottom line: You cannot. No routine is provided to score the answers you submitted. Additionally, the last challenge is very open ended for the purpose of distinguishing yourself from other contestants by developing a needed business service for the Flours, Sugars, and Oils company beyond the minimum requirements.
The judge's scores are averaged to select the winners.