Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Job Control Language
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==={{anchor}}Complexity=== [[Fred Brooks]], who supervised the OS/360 project in which JCL was created, called it "the worst computer programming language ever devised by anybody, anywhere" in [[The Design of Design]], where he used it as the example in the chapter "How Expert Designers Go Wrong".<ref>{{Cite book |title=The Design Of Design |last=Brooks |first=Frederick P. |date=2010 |publisher=[[Addison-Wesley]] |isbn=978-0-201-36298-5 |pages=167-173}}</ref> He attributed this to the failure of the designers to realize that JCL is, in fact, a programming language. Much of the complexity of OS JCL, in particular, derives from the large number of options for specifying [[Data set (IBM mainframe)|dataset]] information. While files on [[Unix]]-like operating systems are abstracted into ordered streams of bytes, with the task of reading and writing structured data belonging exclusively with user-level programs (which, ultimately, ingest and emit such streams), and the practical details of data storage and access handled in large part by the operating system without the knowledge of user programs; datasets on OS/360 and its successors expose their file types and sizes, record types and lengths, block sizes, device-specific information like [[Magnetic tape data storage|magnetic tape]] density, and label information. Although there are system defaults for many options, there is still a lot to be specified by the programmer, through a combination of JCL and information coded in the program. The more information coded in the program, the less flexible it is, since information in the program overrides anything in the JCL; thus, most information is usually supplied through JCL. For example, to [[File copying|copy a file]] on [[Unix]] operating system, the user would enter a command like: cp oldFile newFile The following example, using JCL, might be used to copy a file on OS/360: <syntaxhighlight lang="jcl" highlight="3"> //IS198CPY JOB (IS198T30500),'COPY JOB',CLASS=L,MSGCLASS=X //COPY01 EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=OLDFILE,DISP=SHR //SYSUT2 DD DSN=NEWFILE, // DISP=(NEW,CATLG,DELETE), // SPACE=(CYL,(40,5),RLSE), // DCB=(LRECL=115,BLKSIZE=1150) //SYSIN DD DUMMY </syntaxhighlight> A second explanation for the complexity of JCL is the different expectations for running a job from those found in a [[IBM PC|PC]] or Unix-like environment. *Low-end System/360 CPUs were less powerful and more expensive than the mid-1980s PCs for which MS-DOS was designed. OS/360 was intended for systems with a minimum memory size of 32 KB and DOS/360 for systems with a minimum of 16 KB. A [[IBM 2030|360/30]] CPU—low-end when System/360 was announced in 1964—processed 1.8K to 34.5K instructions per second.<ref>{{Cite web|url=http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|archive-url=https://web.archive.org/web/20041217213638/http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP2030.html|url-status=dead|archive-date=December 17, 2004|title=IBM Archives: System/360 Model 30|date=2003-01-23|website=www-03.ibm.com|language=en-US|access-date=2016-04-25}}</ref> The first IBM PC in 1981 had 16 KB or 64 KB of memory and would process about 330K instructions per second.<ref name="vintageComputerIBMPC">{{Cite web |url=http://www.vintage-computer.com/ibm_pc.shtml |title=IBM PC |access-date=2007-10-21 |archive-date=2006-07-05 |archive-url=https://web.archive.org/web/20060705211337/http://www.vintage-computer.com/ibm_pc.shtml |url-status=dead }}</ref><ref name="iathVirginiaEduPCs">[http://www3.iath.virginia.edu/elab/hfl0108.html IBM-compatible computers] History of PCs {{webarchive |url=https://web.archive.org/web/20070814010809/http://www3.iath.virginia.edu/elab/hfl0108.html |date=August 14, 2007 }}</ref> As a result, JCL had to be easy for the ''computer'' to process, and ease of use by programmers was a much lower priority. In this era, programmers were much cheaper than computers. *JCL was designed for [[batch processing]]. As such, it has to tell the operating system everything, including what to do depending on the result of a step. For example, <code>DISP=(NEW,CATLG,DELETE)</code> means "if the program runs successfully, create a new file and catalog it; otherwise delete the new file." Programs run on a PC frequently depend on the user to clean up after processing problems. *System/360 machines were designed to be shared by all the users in an organization. So the <code>JOB</code> card tells the operating system how to bill the user's account (<code>IS198T30500</code>), what predefined amount of storage and other resources may be allocated (<code>CLASS=L</code>), and several other things. <code>{{nowrap|1=//SYSPRINT DD SYSOUT=*}}</code> tells the computer to print the program's report on the default [[printer (computing)|printer]] which is loaded with ordinary paper, not on some other printer which might be loaded with blank checks. <code>DISP=SHR</code> tells the operating system that other programs can read <code>OLDFILE </code>[[multiprogramming|at the same time]]. Later versions of the DOS/360 and OS/360 operating systems retain most features of the original JCL—although some simplification has been made, to avoid forcing customers to rewrite all their JCL files.{{Citation needed|date=October 2012}} Many users save as a ''procedure'' any set of JCL statements which is likely to be used more than once or twice.<ref>{{cite book |last1=Brown |first1=Gary DeWard |title=zOS JCL |date=2002 |publisher=John Wiley & Sons |isbn=0471-236357 |page=248 |edition=fifth |url=https://books.google.com/books?id=K8kMJa8arlIC&pg=PA248}}</ref> The syntax of OS JCL is similar to the syntax of [[Macro instruction|macros]] in System/360 [[assembly language]], and would therefore have been familiar to programmers at a time when many programs were coded in assembly language.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)