L I E> R.AR.Y OF THE UN IVLRSITY Of ILLINOIS 5I0.S4- U6r no.355-3G0 cop.2. The person charging this material is re- sponsible for its return on or before the Latest Date stamped below. Theft, mutilation, and underlining of books are reasons for disciplinary action and may result in dismissal from the University. UNIVERSITY OF ILLINOIS LIBRARY AT URBANA-CHAMPAIGN NOV 1 1971 OCT 13 Recto L161— O-1096 /SpL^&H Report No. 356 # ICL: A CONTROL LANGUAGE FOR ILLIAC IV by Denise Christine Pavis October 13, I969 DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN URBANA, ILLINOIS THE LIBRARY OF THE fSfilLINfllS Report No. 356 ICL: A CONTROL LANGUAGE FOR ILLIAC IV by Denise Christine Pavis October 13, I969 Department of Computer Science University of Illinois at Urbana-Champaign Urbana, Illinois 6l801 *This work was supported in part by the Advanced Research Projects Agency as administered by the Rome Air Development Center under Contract No. US AF 30(602)UlU4 and submitted in partial fulfillment of the requirements for the degree of Master of Science in Computer Science, October, I969. Digitized by the Internet Archive in 2013 http://archive.org/details/iclcontrollangua356pavi ii ABSTRACT This paper describes ICL, Illiac Control Language and the job parser which interprets the ICL. ICL is a free format, ALGOL-like language which allows the user to specify tasks to be processed in serial or parallel and provides for the conditional execution of tasks dependent upon the results of previously processed tasks. The job parser builds a tree which represents the ordering of tasks and dossiers, which contains in tabular form all information about a task and its associated files necessary to process the task. ACKNOWLEDGMENT The author would like to express her sincere appreciation to the members of the operating systems group and Mr. Peter Alsberg in particular for their invaluable advice and criticism during the design of ICL. Mrs. Patricia Douglas must be thanked for her excellent job of typing the manuscript. Finally, the author would like to express her gratitude to the Department of Computer Science and the ILLIAC TV project for its financial support and for the use of its facilities and the aid of its staff. IV TABLE OF CONTENTS Page 1. INTRODUCTION 1 2. SYNTAX 2 2.1 Task 2 2.1.1 Introduction 2 2.1.2 Procedure Declaration 2 2.1.3 Procedure Body 3 2.1.2+ Execute Card 3 2.1.5 1^ File Card k 2.1.6 B6500 File Card 9 2.1.7 Examples of Procedures 9 2.2 Logic 10 2.2.1 Logic Card 10 2.2.2 Conditional Logic Statement 11 2.2.3 STOP 12 2.2.4 STEP 12 2.2.5 Switch Set Statement 12 2.2.6 Example of Logic Card 13 2.3 An ICL Program 13 2.3.1 Control Program 13 2.3.2 Library 15 3. IMPLEMENTATION: THE JOB PARSER 16 3.1 Introduction 16 3-2 The Tree Builder 16 3.3 The Doer 22 Page LIST OF REFERENCES 25 APPENDIX: ICL SYNTAX 26 VI LIST OF FIGURES Figure Page 1. Logic Tree Ik 2. B6500 Disk File Name Block for MY/FIRST/ PR OGRAMLIB 21 3- Disk Blocks 23 V) J LIST OF TABLES Table Page 1. THE ILLIAC DOSSIER 19 2. THE ILLIAC FILE DOSSIER 20 3. B6500 DISK FILE NAME BLOCK 21 1. INTRODUCTION The Illiac Control Language, ICL, is the user's interface to ILLIAC IV. The job parser interprets the ICL and builds a tree which represents the entire job. Each node represents a task to be performed on the ILLIAC IV or the B6500 and points to a dossier which describes the task and the data files required by the task. Several tasks may be specified to be executed in parallel, since each node has a pointer to the next parallel task and a pointer to the next sequen- tial task associated with it. Several design criteria strongly influenced ICL. First, a user famil- iar with B5500 - B6500 control language should not have to learn an entirely new language. Second, the language should be free format. Third, the language should reflect the parallel capabilities of ILLIAC IV by allowing the user to specify tasks to be done in parallel. Fourth, the language should allow for conditional execution of tasks depending upon the results of completed tasks. Fifth, the job parser, the ICL interpreter, should be capable of interacting with the on-line user, reporting to him the status of his job and any errors in his ICL code. Sixth, as much advantage as possible should be taken of the B65OO MCP. Chapter 2 describes the syntax of ICL. Chapter 3 describes the job parser and gives the format of the tables and dossiers built by the job parser. of a four-quadrant configuration. SYNTAX The syntax of ICL is specified in TBNF [1]. All identifiers in ICL have a maximum length of 17 characters and are represented by the symbol <*I> in the TBNF productions. The symbol <*N> represents an integer. The complete syntax is given in the Appendix; the following description is intended as an in- troduction to ICL and as a user's manual for the first edition. 2.1 Task 2.1.1 Introduction An ICL task is defined to be a single program to be executed on the B65OO or the ILLIAC IV or any series of operations which can be specified by a legal sequence of E-6500 control cards. Syntactically , a task or tasks may be * ** declared as a procedure to be invoked by the appearance of a procedure call. 2.1.2 Procedure Declaration ::= PROCEDURE <*I> ? ? ; ::= ( LIST [<*I> ?] SEPARATOR ,) ::= "=" ::= IN The insert option allows the user to automatically place the proce- dure into the library file given by the B6500 disk file name. 2.1.3 Procedure Body ::= | BEGIN END ::= [ [ * | * ]*]* | < any legal B6500 control card sequence with the "?" replaced by "#" > If more than one execution is specified by a procedure, the tasks represented are processed sequentially. A B65OO control card sequence is trans- ferred to a zip file after replacing the "##" by "?" and is handed to the B65OO MCP [2] by the B6500 scheduler [3]. 2.1. k Execute Card ::= EXECUTE ? ON