U1518_FLOW MATIC_Programming_System_1958 U1518 FLOW MATIC Programming System 1958
U1518_FLOW-MATIC_Programming_System_1958 U1518_FLOW-MATIC_Programming_System_1958
User Manual: U1518_FLOW-MATIC_Programming_System_1958
Open the PDF directly: View PDF .
Page Count: 126
Download | |
Open PDF In Browser | View PDF |
UNIVAC - - COMPARE PRODUCT NO. (A) - - . - 800940 - - - L00880 ~'J '-F_. . . . W-MATIC , 31 oQ I ~ I I• z a II < II . 1ft I ® ~I UNIVAC I -COMPARE PRODUCT NO. (A) - - • - 800940 - • - LOOaaO - - - - W-MATIC . ..-OG.-AIVIIVIIINIG S'VSTEIVI ANOTHER SERVICE OF • • . MANAGEMENT SERVICES AND OPERATIONS RESEARCH DEPARTMENT DIVISION © 1958- Of SPERR' RAND CORPORATION SPERRY RAND CORPOR"T ION © 1958- SPERRY RAND CORPORATION Preface WHAT IS THE UNIVAC FLOW~MATIC PROGRAMMING SYSTEM? THE UNIVAC FLOW-MATIC SYSTEM is a revolutionary new programming aid developed for the UNIVAC Data Automation System by the Automatic Programming Development Group of the Remington Rand Division, Sperry Rand Corporation. Using an English language description of application requirements as its instruction code, this new product is especially designed for use by those who know and can best define their data processing needs. ·With this new system, the Computer is directed to accept descriptions of application requirements in the busines~man's vocabulary and translate these descriptions automatically and accurately into detailed coded instructions. WHO CAN USE THE UNIVAC FLOW-MATIC SYSTEM? The systems and procedures analysts, the accountants, operating management can use the UNIVAC FLOW-MATIC SYSTEM wi th Ii ttle training. Familiari ty wi th detailed computer coding is not necessary. Familiarity with the desired system, and the ability to describe it are the only prerequisites. The experienced programmer will also find that the UNIVAC FLOW-MATICSYSTEM facilitates program preparation. WHY USE UNIVAC FLOW-MATIC? The UNIVAC FLOW-MATIC AUTOMATIC PROGRAMMING SYSTEM offers to its user unprecedented benefits, -- benefits such as: Faster and more accurate Programming - The coding process utilized reduces the elapsed time between the original conception of an application and the checked out final processing. The concise method of expression greatly reduces chance of error. 1 Easier Programming Analysis - The inherent step by step approach leaves a trail of easily understood documentation, important in retrospect if it becomes necessary to alter the programs either because of changed requirements or modifications in t~e data processing system. Checks Systems Des i gn - The ease of preparing UNTVAC FLOW-MArIC charts, plus the flexibility with which changes can be made facilitates greater use of pilot systems to check the basic logic of the system design. One-Shot Jobs Now Practical - The programming of many one-shot jobs formerly considered impractical is now not only feasible and economical, but also provides invaluable addi tional fact power to decisio.n making management. Flexibil ity - Changes in either the processing procedure or data format can be accomplished independently without affecting the other. ABOUT THIS MANUAL Straight-forward in approach, this manual is so designed to serve the gradational need of the user. Later chapters and appendices furnish detailed information for the experienced programmer. 11 Table Of Contents Page Chapter INTRODUCTION A COMPLETE SYSTEM WHICH MEETS ALL USER PROCESSING REQU I REMENTS ......••...•..••.••••••.••....•••••...••••••••••• 2 I 2 2 2 AVAILABLE EQUIPMENTS AND THEIR FUNCTfONS •••••• ••••••••••••• THE UN I VAC II CENTRAL COMPUTER............................. THE UN I VAC II CONTROL GROUP................................ UNIVAC INPUT DEViCES....... ••••• •••••••• •••••••••• •••••• ••• UNIVAC INPUT,..OUTPUT DEVICES . . . . . . . . . . . . . . . . . . . . . . .......... UN I VAC OUTPUT DEV ICES •••••••••••••••••••••••••••••••••••••• ILLUSTRATION OF INTERRELATIONSHIP OF EQUIPMENT ••••••••••••• 8 8 12 THE FLOW-MAT I C METHOD •••.••...••..•••••.•••••••••••••••••••.• I3 q. The steps to be followed in applying this new method of programming are described in terms of a data-proce8sing problem. 3 FLOW-MATIC CHARTING AND PROGRAM-WRITING •••••..•••••••••••••.• 26 The procedures for drawing flow charts and writing Englishlanguage programs are described. Sample Problem 1 is programmed. FILE-DATA LAYOUT AND DES IGN .................................. 35 The methods of writing descriptions of data files, items and fields is given, along with the pre-printed forms used. 5 INTERMEDIATE OR WORKING STORAGE ••••••••.••••••••••••••••••••• Sample Problem 2 is introduced requiring working storage. 60 The method of utilizing this feature of FLOW-MATIC is described. 6 RELATIVE MACHINE CODING, X-I .••••••••••••••••.••••••••••••••• 72 In order that special or unique subroutines may be included in the compiled program~ a method of machine coding is shown. Sample Problem 3 indicates how this is used in a program. 7 THE FLOW-MATIC COMPILING ROUTINE............................. S3 A rudimentary description is given of how the compiler operates, and of the record of compilation prepared for the user. Appendix A FLOW-MATIC FUNCTIONS, GUIDE FOR WRITING FLOW-MATIC CODE, FLOW-MATIC STATEMENTS........................................ 91 B DATA DESIGN PRE-PRINTED FORMS •••••••••••••••••••••••.••••..•• 101 C RELATIVE MACHINE CODING X-I .................................. 105 o FLOW-MATIC OPERATING INSTRUCTIONS ............................ II r INDEX ........ I: ••••••••• a I ••••• e· • • • • • • • • • • • • • . • • • • • • '0 • • • • • • • • •• II5 111 Introduction The FLOW-MATIC programming system provides for the UNIVAC user an entirely new, different, versatile method of writing programs. The key development in this system is the conversion of the FLOW-MATIC code in the businessman's vocabulary into standard computer code. The primary objective in the development of this system has been to create a tool to assist analysts in the preparation of programs for data-processing systems. This is the first major step in the direction of a general-purpose programming aid for dataprocessing users. The use of the FLOW-MATIC System involves the following steps: Data System Design ~ ~ Process Chart of the Run ~ Block Chart of the Program Complete Run Definition ~ FLOW-MATIC Chart ~ FLOW-MATIC Code lV The user may also be interested in the general picture of the entire process in preparing a program with the aid of the FLOW-MATIC compiling routine as shown in the graphic presentation as follows: Data System Design ~ Complete Run Definition ~ ~ Block Chart ~ FLOW-MATIC Chart Process Chart Programmer's Contribution (English Language) ~ FLOW-MATIC Code ~ COMPILER . [Translation of FLOW-MATIe] FLOW-MATIe L1brary ---. Code into Computer code ~ Computer's Contribution (Computer's Language) Compiled Running Program in computer code on tape ready for processing data The primary consideration in the design of the FLOW-MATIC system is the (data processing) user and the types of programs required by the system he defines. It provides a complete method, or procedure, which begins with the first definition of the problem or application, and continues throughout the checking out phase and into the program and system refinements which follow the initial operation of the UNIVAC system. Both the manner and the extent to which 'the FLOW-MATIe System is used depend on the individual who uses it. The expert programmer may use the FLOW-MATIC procedure during the initial definition of UNIVAC runs to facilitate communication between the computer programming group and operating management. If the major function of the expert programmer is to supervise a number of less experienced people, he can spend maximum time in the definition and analysis v phases, carrying out the steps of the FLOW-MATIC procedure only so far as is necessary, depending upon the varying abilities of his individual programmers. Still ano!her possibility is that of utilizing FLOW-MATIC to produce the first draft of a program which, because of its high degree of repetition, may later require ingenious modification and application of the "tricks of the trade" known to the expert programmers. One advantage the FLOW-MATIC programming system offers to a data-processing organization in its early stages of growth is the reduction of personnel training time. Within a comparatively short period they will become expert FLOW-MATIC programmers and system designers. As with any powerful, generalpurpose tool, users increase in competence as they gain experience. This does not, of course, remove the need for experienced, career programmers. Every UNIVAC Data Automation System installation requires, and is benefited by, experienced career programmers who discover operational flaws in programs and systems, correct them, utilize their intensive knowledge to solve especially difficult programming problems, and add to the effectiveness of FLOW-MATIC itself. It is important to point out that FLOW-MATIC is a growing system designed for continued expansion and development in a variety of directions, all within the basic framework of the existing structure. It is expected that this growth will proceed in such a way as to make the system increasingly useful. Although the programmer who uses the FLOW-MATIC Compiling system is not required to know the internal operation of the UNIVAC Data Automation System, he must be familiar with the manner in which the computer reads input data, performs various operations and delivers the desired results. Chapter I gives a brief description of the UNIVAC Data Automation System together with the specific function of each individual piece of equipment. Chapter II provides the reader with a quick, comprehensive view of the FLOWMATIC method. It presents a sample application, and traces the procedure to be followed in programming with this system. Later chapters develop the detailed techniques involved in each step of the procedure, and through the introduction of extensions of the basic application, additional features of FLOW-MATIC are explained. V1 chapter 1 A Complete System Which Meets All User Proc-essing Requirements The Univac II Data Automation System is a complete and well balanced data processing system. It will accept and prepare information through a wide variety of standard data-recording media. The user gains versatility most economically since the Central Computer, that unit which performs the actual processing, can read and wri te information directly through the magnetic. tape which is one of the most rapid input-output media in use today. Peripheral equipments convert all recorded data into the form acceptable to the Central Computer, or from the form prepared by the Central Computer (Univac II System code on magnetic tape) to the desired form. In this way, the system has a dual advantage. First, the Central Computer need not be hampered in its processing task by the necessity of working directly with input-output media unworthy of its lightning-fast internal operating speeds. Secondly, the Central Computer need not be involved in conversion process which can most economically be handled by p~pipheral equipments on an off-line basis. From a wide variety of available equipments each Univac II System user chooses the units which, when molded into a system, best meet his overall data processing requirements. AVAILABLE EQUIPMENTS AND THEIR FUNCTIONS THE UNIVAC II CENTRAL COMPUTER The Univac II Central Computer in Figure 1 is the heart of the Univac II Data Automation System . It performs all arithmetic and logical operations. In the exe c ution of a typical data processing t ask the Centra] Computer perfo r ms the following basic operations: 1. Step - by - step instructions, stating specifically the operations to be pe r formed on the data, a r e read by the Central Computer from magnetic tape and stored internally within the Central Comp ut e r . Obeying the stored inst r uctions, the Central Computer then automatically 2. Reads the d ata from magnetic tape and stores it inte r nally . 3. Performs all operations upon the data indicated by the instructions, and stores the results internally . 4. Reads the results from storage and writes them on magnetic tape . FIGURE 1 All operations are self-checked to ensure that they are performed with the unwavering accuracy and dependabilIty that has become associated with the name UNIVAC. 2 THE UNIVAC II CONTROL GROUP Two control units are directly connected to the Central Computer, and each in its own way, provides some indication of the actions of the Central Computer. Univac Supervisory Control Console The Univac Supervisory Control Console (Figure 2) provides the operator with a continuous picture of the operations t aki ng place within the Central Computer. It also provides visual indication whenever an error occurs in any operation, identifying the faulty circuit for the maintenance technician. Although the Central Computer is designed to operate automatically, there are occasions when manual intervention may be desirable. The Univac Supervisory Control Console includes a keyboard by means of which the operator can type information directly into the Central Computer. A group of switches and buttons on the Console allows the interruption of automatic operations and the institution of changes in their course or'the substitution or insertion of other operations. FIGURE 2 3 Univac Supervisory Control Printer The Univac Supervisory Control Printer (Figure 3) is a modified electric typewriter which prints information directly from the Central Computer. Its primary function is to provide the operator, in easily readable form, information concerning the processing being performed within the Central Computer. This unit is sometimes employed for printing processing results; however; it is used for this purpose only when the information to be printed is not lengthy. FIGURE 3 UNIVAC INPUT DEVICES The function of Univac II input devices is to convert information from its original form into Univac II System code recorded on magnetic tape. These devices are completely independent of the Central Computer, so that while the input devices ~repare data for future use by the computer, the computer, itself, is free to carryon the current processin g problems . This ability to overlap input preparation and computer processing represents a large saving of time and thus money, for the user. Univac Unityper II The Univac Unitype r II (Figure 4) is a device by means of which information legible to its human operator can be recorded on magnetic tape. This device is somewhat larger than, though similar in appearan c e to, an electric typewriter. The 26 letters of the alphabet, 10 numerals, and some special Univac II System Symbols a re represented on the keyboard of this device in an array similar to the familiar typewriter keyboard pattern. Striking a Unityper II key causes: 1. A pattern of magnetic spots representing the Univac II System Code for the character represented on the key to be recorded on a magnetic tape mounted in the upper portion of the device, and 2. That character to be printed on a piece of copy pape r mounted on the carriage. Thus, recording information on magnetic tape with the Unityper II involves little more than a retyping of the information. Inform a tion is tape-recorded by the Unityper II at a density of 50 characters per inch with a 2 . 4 inch spacing between each consecutive 120 characters. FIGURE 4 Univac Verifier The Univac Verifier (Figure 5) is a unit of peripheral equipment which can operate in anyone of two capacities: 1. As a primary input device which rec o rds information on magnetic tape by means of a typewriter keyboard in very much the same manner as the Unityper II. 5 2. As a proof reading device which corroborates information recorded on tape and permits the correction of detected errors. Its primary use is as a proof reading and correcting device. Information is recorded by the Verifier at a recording density of 50 characters per inch with a 2.4 inch spacing between each 120 characters. FIGURE 5 Univac Punched Card-to-Magnetic Tape Converter The Univac Punched Card-to-Magnetic Tape Converter (Figure 6) consisting of a card Reading Unit, a Control Unit and a Tape Unit, allows the entry of information into the Univac System in punched card form. Cards are loaded into the intake bin of the Card Reading Unit, and the information read from the cards is recorded on magnetic tape. The entire process is accomplished automatically and its operation is completely self-checked to ensure complete accuracy of the recorded information. The Converter is equipped with a removable plugboard which allows automatic rearranging of information during the conversion process. F IGURE 6 6 Univac Punched Card-to-Magnetic Tape Converters are offered in two models. One handles standard 90-column punched cards; the other handles standard 80column punched cards. Both models operate at a maximum conversion rate of 240 cards per minute and record information at a density of 128 characters per inch with a 1.8 inch space between each 120 characters, and a 2.4 inch space between each 720 characters. Univac Paper Tape-to-Magnetic Tape Converter The Univac Paper Tape-to-Magnetic Tape Converter (Figure 7) is a device consisting of a Perforated Tape Reader, a Translator and Control Unit, and a Magnetic Tape Recorder. This equipment allows information recorded on paper tape to be entered directly into the Univac II System. Reels or message lengths of punched paper tape generated by teletypewriters, automatic typewriters, adding or bookkeeping machines with tape punchers attached, and punched card to perforated tape converters may be mounted on the Tape Reader. Information contained in tapes are automatically translated into Univac II System Code and recorded on magnetic tape. Deletion of certain punched paper tape symbols, and addition of some Univac II System Symbols may be accomplished automatically during the conversion process. The entire operation is completely self-checked to ensure complete accuracy of the conversion process. The Univac Paper Tape-to-Magnetic Tape Converter operates at a maximum conversion rate of 200 characters per second and records information at a density of 128 characters per inch, placing a one inch space between each 120 characters, and a 2.4 inch space between each 720 characters. FI GURE 7 7 UNIVAC INPUT-OUTPUT DEVICES Univac Uniservo The Univac Uniservo (Figure 8) is the devic e through which the Central Computer communicates with its ma gnetic tapes . A maximum of 16 Uniservos may be directly connected to the Univac II Ce ntr al Computer . Each Uniservo contains a "read-write" he a d a nd mech a nism for moving the mag netic tape pas t the head at a speed of 100 inches per second. Each Uniservo is capable of reading tape moving in the forw a rd direction, re ading t ape movin g in the backwa r d di r ection, writing on tape moving in the forward direction, and rewinding its tape. Reading from anyone Uniservo, writing , on any other Uniservo, rewinding the tape on any number of the remaining Uniservos may be carried on simultaneously with Central Compnte r processjng . Uniservo operations are cont rolled by the Central Computer through programmed instructions. FIGURE 8 UNIVAC OUTPUT DEVICES Univac II output devices allow the system to prepare processed results in a wide variety of forms. They automatically convert information contained on tapes produced by Central Computer processing into the desired form. All of these output devices operate with complete independence of the Central Computer. Thus, the computer is free to handle furthe r processing while the resul ts of the previous problem are being converted. Thi-s abili ty to overlap conversion and processing operations represents a great saving in time, and money for the user. 8 Un i va c Un i p r in t e r The Univac Uniprinter (Figure 9 ) consists of a Tape Reader and a Printin g Unit which is a modified electric typewriter. A reel of magnetic tape, containing the information to be printed, is mounted on the Tape Reader. As information is read from the tape, it is printed by the electric typewriter. The Univac Uniprinter, which accepts tapes recorded at 25 characters per inch, print s at a rate of 10 characters per second, and is usually used for low volume output printing, such as the preparation of man agement r eports . FIGURE 9 Univac High-Speed Printer The Univac High-Speed Printer (Figure 10) is used f or large volume printing. This four unit assembly, consistin g of a Tape Reader, a Storage Unit, a control Unit, and a Printer, reads magnetic tape and converts the information recorded thereon into printed copy. The High-Speed Printer prints an entire line at a time. Each line may contain as many as r]o charac ters, and printing is accomplished at a maximum rate of 600 lines per minute. A removable plugboard mounted in the Control Unit controls the format of the printed page and affords wide flexibility in the a rr angement of the printed information, reducing the eqiting and thus the processing time required of the Central Computer. The entire operation of this device is completely self-checked to ensure that each character printed is the exact one recorded on the magnetic tape. It · accepts information tape-recorded at a density of from 50 to 128 characters per inch with at least one inch space between each 120 characters. 9 FIGURE 10 Univac Magnetic Tape-to-Card Converter The Univac Magnetic Tape-to-Card Converter (Figure ~ 1) consists of three uni ts: a Tape Unit, a Card Punch Unit and an Electronic Cabinet containing the cir"" cuitry necessary to control and check the Tape and Card Punch Units. This piece of equipment reads information from magnetic tap.e and converts the information into standard punched cards at a rate of 129 cards per minute. A removable plugboard permits the selection and rearrangement of information during the conversion process. The Univac Magnetic Tape-to-card Converter accepts information tape-recorded at a density of 128 characters per inch with at least one tenth inch space between each 120 characters and 2.4 inch space between each 720 characters. Its entire operation is completely selfchecked to ensure proper conversion. FIGURE 11 . 10 Univac Magnetic Tape-to-Paper Tape Converter The Univac Magnetic Tape-to-Paper Tape Converter (Figure 12) consists of a Magnetic Tape Unit, a Translator and Control Unit, and a Paper Tape Punch. It punches information recorded on magnetic tape into paper tape. The punched paper tapes may then be used directly to send information via a teletypewriter. FIGURE 12 As with all Univac II equipment the operation of the Magnetic Tape-to-Paper Tape Converter is completely self-checked to ensure accurate conversion. This conversion is accomplished at a maximum rate of 60 characters per second. It accepts information recorded at a density 0f 128 characters per inch with at least a 1 inch space between each 120 characters. II INFORMATION CAN ENTER AND EMERGE FROM THE UNIVAC II SYSTEM THROUGH A VARIETY OF STANDARD DATA RECORDING MEDIA INPUT Any legible Punched Paper Tape Standard 90 or SO-Column Punched Cards Documents PUNCHED CARDTO'- MAGNETIC INPUT DEVICES PAPER TAPE CONVERTER PROCESSING OUTPUT DEVICES OUTPUT Punched Paper Tape ~ ~ Printed Material FIGURE 13 Printed Material Standard SO-Column Punched Cards chapter 2 The Flow-Ma tic Method In the introduction it was stated that the FLOW-MATIC System provides an entirely new method of programming. In order to demonstrate this method, a simple data processing run is developed through the steps necessary to prepare the computer coded program. The run prepared is representative of a large class of business data processing runs. Typically, a series of such runs linked together form a data processing system which, depending on the sUbject matter of the programs, computes a payroll, adjusts inventory, performs sales accounting, or prepares labor distribution. Each run in any such system is characterized by a flow into the computer of files of data, read from tapes mounted on one or more input Uniservos, and a flow out from the computer of data written on tapes, also mounted on one or more Uniservos. The function of the FLOW-MATIe programming system is to produce the program which -controls the flow of data through UNIVAC and performs the required processing of the data. A file stored on magnetic tape is recorded with identifying information written at the beginning of the tape, and sentinels indicating the end of the data also entered on the tape. The body of the file contains a varying number of file items, each representing a separate entry in the file ~nd usuallY identified by some key information such as payroll number, customer name, or stock number. Frequently the items in a file are in ascending sequence according to this key. Each item within a file contains data elements related to the item, arranged in a systematic format. These data fields will be consistently placed within all items in the file. Thus, for example, by scanning the same relative position in the items of a typical payroll file, the pay rates for employees can be located. 13 With these few notions of the manner in which business data is stored on magnetic tape, the process chart or run chart can be considered. The process chart is the most general pictur-e of a UNIVAC data processing system. Figure 14 shows a series of tape files represented by circles, linked by a series of boxes which represeht computer operations. or runs. SAMPLE PROCESS CHART RUN 3 RUN 2 DATA VERIFICATION SORT RUN lj. MATCH & ME RGE PRINTED OUTPUT RUN 5 MERGE EDIT PRINTED OUTPUT I~ FIGURE 14 Figure lq. is a process chart which describ~s part of a system of runs. Prior to the preparation of such a chart, a comprehensive study of the system must be made. Some of the points to be considered in this study are the files to be processed, the computer operations required, and the information desired as output. When the process chart has been prepared, the programming task begins. This is the starting point of the FLOW-MATIC method. Consider, there'fore, the function of run number q. of the process chart (Figure 15). PROCESS CHART ABC MANUFACTURING COMPANY INVENTORY RUN-q APPLICATION OF PR ICES TO INVENTORY PRINTED OUTPUT FI GURE 15 Suppose run q. is part, of the UNIVAC inventory system for -the ABC Manufacturing Company. Inventory balance items for all manufactured products are tO'be maintained on magn~tic tape and represent one of the input files to this run. Since prices are not to be carried in this file, it is necessary at intervals during tfie year to apply current prices contained in a Price File which is the second input to the run. One output of fun q. is shown to be a Priced Inventory file containing all inventory items for which prices were found in the Price file. Since the two input files were maintained separately, it is possible that the Price file is not complete. Thus a second output file, the Unpriced Inventory, will contain those Inventory items for which no price was found. The system further 'requires that such unpriced items be printed on the Highspeed Printer so that they may be checked and the proper action taken. 15 The diagrams below show an actual example of the contents of each type of item in the problem. INVENTORY ITEM 00 o 0 0 0 907 3 A 1 0 1 01 o0 02 000 0 0 0 0 0 0 000 03 COO 000 0 000 0 0 0 0 0 010 0 2 5 ~ This is the product number; it may require as many as 12 dig~ts. This field is the quantity of this kind of product on hand; it may require as many as 6 digits. 3 05 06 Other data (not used in t his pr ob 1em) appear here. .... 07 08 09 .... PRICE ITEM 16 00 o0 01 0000000 Th is product number shows that th is item ap plies to the inventory i tern given above. 0 0 9 073 A 1 () 1 o 1 095 ...- This is the price for one unit of this product. Up to five digits may be used, and since this number represents dollars and cents, the decimal point is between the third and fourth digits $10.95. PRICED INVENTORY ITEM 00 o0 0/ o 000 02 o0 03 000 0 0 0 0 0 0 0 0 0 0 0 9 073 A / 0 / - Prod uct n umbe r. QUantity on hand. 0 0 002 543 0 0 0 0 010 I o 9 5 Unit price is inserted here. :4 05 06 Other data (not used in th is problem) appear here. ..... 07 08 09 ~ UNPRICED INVENTORY ITEM 00 o0 C 0 9 I 5 6 A 0 2 3 0/ o0 000 0 0 02 000 0 000 0 0 0 0 0 03 o0 () o5 Product number for which no price can be found Number of units of this kind of product on hand. 2 7 0 0 0 0 0 0 0 0 0 0 ~ 05 Other data (not used in th is problem) a ppear here. 06 i· .... 07 08 09 ... 17 The key by which the price is matched with the corresponding inventory item is the product number. These files are sorted in .ascending sequence according to product n~mber by previous runs. The sorting run~ are performed in ordet that the process of matching may be more efficiently carried out by UNIVAC in run Lt. The next step is to translate the description of the function of the run into a program for UNIVAC to follow in producing the desired output. It is in' the logical analysis and organization of this program that the skilled programmer or systems analyst can make the most effective con.tribution. For it is iri the overall logical design of the program that the application of programming and data processing know-how can make the difference between a correct program, and one which is both correct and efficient, in terms of making the best use both of the computer and of the data characteristics. FLOW-MATIC does not replace good systems design and careful run analysis. A verbal outline of one possible program to solve this simple problem is gi v.~n below. Assume at the start that the first item of each of the input files is available. The operations are as follows: I Compare the product number of the Inventory item with the product number of the Price item. a. b. c. If the Inventory product number is less, go on to step II. If the product numbers are equal, go on to step III. If the Price product number is less, go on to step V. II Prepare and write an Unpriced Inventory item. IV. Then go on to step III Prepare and write a Priced Inventory item. Then go on to step IV. IV Read the next Inventory item and go back to step I. Or, if the Inventory file is exhausted, wind up the problem and stop. V Read File step step the next Price item and go back to step I. Or, if the Price is exhausted, change the program so that step IY goes back to II (eliminating" a now unnecessary comparison). Then go on to II. In the preceding statements the functions of this simple run have been completely described. The next step is to translate these statements into a logical block chart for UNIVAC. (See Figure 16.) 18 BLOCK CHART ABC MANUFACTURING COMPANY INVENTORY ASSUME FIRST ITEMS AVA I lABlE COMPARE PRODUCT NUMBER INVENTORY ITEM AND PRODUCT NUMBER PRICE ITEM PRICE IS lESS READ NEXT PRICE ITEM AT END INVENTORY I S lESS I OF DATA INVENTORY fQUAlS PRICE SET EXIT FROM IV II TO GO TO.l I TO ELIMINATE COMPAR ISON PREPARE AND WRITE UNPRICED I NVENTO~Y ITEM PREPARE AND WR ITE PR ICED I NVENTORY ITEM READ NEXT I NVENTORY ITEM AT END WIND UP PROBLEM FIGURE 16 19 BLOCK CHART - The block chari is a diagram of the logical statemetits listed above. Such a diagram shows all of the paths which are required in a problem, and all intersections oL the paths. Th'-e block chart sheuld be checked for errors in logic, testing it with all variations of the data which are to be processed, arid producing some sample output. Logical checking is done at this time because, while-this version of -the problem is concisei it must be complete and correct. The block chart, then, is by definition a complete, concise, correct diagram of the computer data processing procedure. It is important to note that FLOW-MATIC does not replace the need for complete understanding of the job to"be done. Nor does it replace the need for the careful analysis which must preceed the choice of the best computer procedure to do the job. The FLOW-MATIC system does make an indirect contribution to system design by facilitating the succeeding steps of flow-charting, coding, debugging (checking) and reprogramming, to such a degree that a considerably larger proportion of the total time and emphasis can be placed on run analysis and basic system design. By permitting the analyst or methods engineer to spend more time in block charting, FLOW-MATIC encourages the exercise of analytical ability and systems engineering experience. Figure 16 is a block chart for run 4 which indicates a UNIVAC p~ocedure to carry out the functions as specified by the procedural statements. Note the use of the names of functions, items, and data fields in the block chart which relate back to the original verbal description of the run. FLOW-MATIC encourages the use of words throughout the process of translation from descriptive English to machine language in order that the procedure which the UNIVAC Data Automation System carries out may be understandable to all involved in the development and use of the system. Although the block chart contains computer know-how, since it represents the application of computer characterist ics and capac it ies to t~e requiremen ts of the Job, it is.. int elligible to the user and serves as a useful form of communication between the analyst and management. The next step is one of determining the sequence of FLOW-MATIe operations equivalent to each block on the chart. A FLOW-MATIC operation is an operational unit designed to have maximum usefulness in data processing applications. For ease of use and recognition, these units are identified by English words and phrases. Insofar as possible, words have been chGsen which are associated with the ~J?erations, in normal English language usage-. For example, such terms as TEST, TRANSFER, JUMP, STOP are used. By maintaining English wording throughout the transi tion from procedural statement' and def-inition to the complete FLOW-MATIe coded solution, the programmer and methods analyst are able to work directly in the terminology of the operations and procedure. 20 FLOW-MATIC CHART - The process of reducing the .,bl~ck chart to FLOW-MArIC sentences is most readily accomplished by drawing up a slightly expanded diagram, known as a FLOW-MATIe chart. This chart contains all of the FLOWMATIC operations required to solve the problem, in their proper sequence. To illustrate this process, consider one path, or branch, of the block chart, shown in Figure 17. SAMPLE OF BLOCK CHART ------------'" COMPARE PRODUCT NUMBER INVENTORY ITEM AND PRODUCT NUMBER PRICE ITEM 1-------------.---- INVENTOItY EQUA LS PR ICE PREPARE AND FIGURE 17 WR I TE PR ICED I NVENTORY- ITEM 21 Reference to the list of FLOW-MATIC.9perations in Appendix A~page 92 indicates that this path of the block chart may be expressed in FLOW-MATIC. terms as shown in Figure 18. The FLOW-MATIC chart is completed in this general.manner. by linking available FLOW-MATIC commands in the sequence required by the block chart. SAMPLE OF FLOW-MATIC CHART ~ I I I I I I I __ I_--__ ~_--. C 7 6 5 TRANSFER A ITEM TO C PRICE FROM 1---.... MOVEB ITEM TO C 1-----1.... WR ITE C FIGURE 18 FLOW-MATIC CODE - Writing the FLOW-MATIC code for the problem consists of transcribing the FLOW-MATIC chart into a series of imperative sentences. For every operation, one statement is written, the format of which is given in Appendix A, pages 95-99. A sample of the code in its final form is below in Figure 19. (1) COMPARE PRODUCT - NO (A) WITH PRODUCT - NO (B); IF GREATER GO TO OPERATION 10; IF EQUAL GO TO OPERATION 5; OTHERWISE GO TO OPERATION 2 • (5) TRANSFER A TO C . (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . (7) WRITE-ITEM C . SAMPLE OF FLOW-MATIC CODE FIGURE 19 22 DATA DESIGN: In order to produce a UNIVAC program, it is necessary that the compiler have information about the design of the input and output data files. The programmer supplies this information by filling out standard Data Design forms, shown in Appendix B. The Data Design information is recorded only once, even though the data files may be processed in a number of runs. Information about fhe data files is divided into three categories; File, Item, and Field. The File category contains information about the organization of the reel(s) of tape in the file; for example, whether or not the. fi Ie is multi reel , what the sentinel conventions are, and how the reelis) are labelled. The item category lists the size of the item, and, if appropriate, states by what keys these items are sequenced. The field category provides a complete description of each field in the item; where it is located, how many digits it contains, and other related information. The preprinted forms show how this information is to be listed, and, by providing the appropriate information the data is described for FLOW-MATIC. Data Designs are prepared for each of the two input files and the two output files in the Sample Problem run. By reference to the process chart (Figure IS, page IS) it can be seen that the input files, since they come from prior UNIVAC runs, have been previously defined. The FLOW-MATIC System provides for storage of such Data Designs on tape so that they may be called upon for reuse. COMPILATION - When the FLOW-MATIC code and the Data Designs have been wri t ten, the problem is ready for compilation. It is only necessary to transcribe onto tape the information which has been prepared. The layout of the tape prepared on a Unityper is shown in Figure 20,. where it . . is displayed as the input tape to the FLOW-MATIC compilat ion. The FLOW-MATIC. compiler delivers, as output, a complete UNIVAC program tape, which can be immediately tested by mounting it, together with the appropriate data tapes, and making a trial run. Since the coding which controls the movement of the files through the computer is provided by FLOW-MATIC, and since each section of machine code generated by FLOW-YATIC is correct by its~lf, the program will run if errors in logical analysis or errors undetected in proof-reading are not present. Even FLOW-MATIC cannot protect the analyst from mistakes in logical analysis. Many internal inconsistencies in the FLOW-MATle input cod~ will be detected by the FLOW-MATle System during the conversion to computer cOding. Logical errors can be located by reference to the FLOW-MATIC chart. For locating those program errors not discovered by any of the previously cited means, the compiler provides an Edited Record of compilation, which enables the analyst with an assist from a programmer, to relate the computer coding for the problem back to the FLOW-MATIC coded statements or to the thart. 23 NEW DATA DESIGNS FLOW~MATIC FLOW-MAne COMPILER RUN CHART CODE ENDING SENT INE LS FLOW-MATle eOMP I LAT ION PRINTED OUTPUT FIGURE 20 2~ Chapters 3 and ~ trace, in detail, the preparation of the FLOW-MATIe code and Data Designs fo~ the Sample Problem. Chapters 5 and 6 introduce problem variations which show additional facilities of the FLOW-MATIe compiler. Chapter 7 describes the production and testing of the compiled program. 25 chapter 3 Flow-Matic Charting And Program-Writing The complete FLOW-MATIC chart for Sample Problem 1 described in Chapter 2 is created from the process chart and the block chart with the aid of the list of FLOW-MATIC code operations given in Appendix A, page 92. Writing the FLOW-MATIC chart is, in fact, simply a matter of choosing the necessary functions from the list on Appendix A, page 9~, and arranging them in the order prescribed in the block chart. The FLOW-MATIC chart is used primarily as a guide for writing the FLOW-MATIC code, and it is simply a restatement of the logic of the problem in terms easily adaptable to the code. Figure 21 shows a partially completed FLOW-MATIC chart. All of the required functions are indicated, and their sequence is shown. Several useful conventions are employed. Circles, here labelled by lettering, indicate interconnections between paths; flags are used to assert a condition which exists at a given point; dotted lines indicate points at which a conditional change in sequence can occur; rectangular boxes are used for evaluation of a formula or straight computation and ovals are for deciding among one of various paths of computational flow, based upon the equality and/or magnitude of two quantities. Note that comments on this chart are still largely in-English, and that no numbers have yet been used. 26 INITIAL VERSION OF FLOW-MATIC CHART ABC MANUFACTURING COMPANY INVENTORY - SAMPLE PROBLEM INPUT F I L~§ INVENTORY A PR ICE B OUTPUT FILES PRICED INVENTORY C UNPRICED INVENTORY D (PRINT) 01 TRANSFER A ITEM TO D TRANSFER II ITEM TO C H WR ITE-ITEM 0 H MOVE UNIT PRICE FROM B TO C ~ JUMP WRITE-ITEM C READ-ITEM A JUMP L - -_ _ _ _..J , " J3r0 ," '~ CLOSE-OUT C. D FIGURE 21 27 The logical order of performance of these operations is now indicated by attaching a number to each of the chosen functions. There are four general rules pertaining to these numbers and their sequence: 1. The operation number sequence starts with zero, and operation zero always specifies the input and output files to be pr-ocessed by the program. 2. The operation numbers are assigned in unbroken sequence. 3. The operations are to be performed in numerical sequence, unless a specific statement to the contrary is made. q. The highest number is assigned to the operation which stops the problem. Observing these rules, the FLOW-MATIC chart is completed by numbering the boxes for each operation, and inserting the correct operation numbers at branch points. Figure 22 shows the completed FLOW-MATIC chart for the Sample Problem. are several features to notice in examining this chart. There The files in the problem are labelled with the letters A, B, C, and D. This is done for ease of reference and finds further use in writing the FLOW-MATIe c;ode. The action to be taken when each of the input files is exhausted is directly connected to the operation of obtaining a new item. This is done because any request for a new item from a file may exhaust the data. The test indicated in operation fourteen determines whether or not the Price File has been exhausted when the end of the Inventory data has been reached. A sentinel, a symbol made up of some combination of characters which cannot appear as valid data, marking the end of the file is placed at the end of each file to indicate the end of the data. The test therefore determines whether or not this sentinel is pregent in the current Price File item. Operation twelve shows a logical operation to be performec upon the program rather than on the data being processed. It directs that hereafter operation nine will return not to operation one, but to operation two, bypassing a now unnecessary step and directing all further Inventory items to the Unpriced Inventory File. 28 FINAL VERSION OF FLOW-MATIC CHART ABC MANUFACTUR I NG COMPANY INVENTORY - SAMPLE PROBLEM I A IS GREATER INPUT FILES INVENTORY A PR ICE B OUTPUT FilES PR I CfD INVENTORY C UNPRICED INVENTORY D (PRINT) ,,is>-0 ;;------.: FIGURE 22. 29 This completed chart (Figure 22 on page 29) is directly convertible to FLOWMATIC coding. Writing the sequence of Englis!,! sentences which are the code for the problem is done by cross-referencing between the chart and the description of the available statements. These statements follow common English usage in punctuation and format, that is, words are separated by spaces, and a period is used to terminate each sentence. In addition, each statement is labelled with its operation number as given in the chart. The programmer modifies the format of each statement to adapt it to his problem by choosing the correct option for his purpose, and assigning his own names to the fields and files operated upon. The general rules which apply to FLOW-MATIC cod·ing are listed below: (1) A file name assigned by the programmer may be a maximum of twelve digits in length, and none of these digits may be a space. If it is desirable to combine English words into one name, hyphens may be used, e. g., (0) INPUT INVENTORY FILE-A PRICE FILE-B; ...... . . . . PRICED-INV FILE-C ... (2) An item name is simply the assigned letter of its file, e.g., (10) READ-ITEM ~... (3) A field name is similar to a file name, twelve or fewer non-space digits. But in addition, each field n~me is modified by its file letter in parentheses, e.g., (1) COMPARE PRODUC~-NO (A) WITH ... .. . (4) Operation numbers labelling FLOW-MATIC statements are parenthesized. Those appearing in the body of the statement are not parenthesized, e. g .. , (9) JUMP TO. OPERATION 1. . In addition to the list of functions, Appendix A gives the precise format for each function, and a summary of the rules applying to the use of these statements. In reading the following descriptions of the FLOW-MATIC statements required for the Sample Problem, reference to Appendix A will clarify the manner in which they are written. In each of the statements shown below, the information supplied by the programmer is underlined. (0) INPUT INVENTORY FILE-! PRICE FILE-~ ; OUTPUT PRICED-INV FILE-C UNPRIGED-INV FILE-D HSP Q • 30 Remembering that operation zero specifies the input and output files for the problem, the function INPUT is used. Choosing the format for two input files and two output files, the programmer assigns names and letters to these files (shown underlined in the above statement). He also specifies that the UNPRICED-INV file labelled D is to be printed on the UNIVAC High Speed Printer.' Note that the code for operation zero is a description of the process chart (Figure IS, page IS) for the run. This statement has two major functions: (a) To start the movement of the specified data files through the computer in their proper sequence, and (b) To label the data files with letters so that hereafter these files, and their fields and items, may be referred to by the assigned letter. It should be noted that this version of the initial statement is only one of many possibilities. It will vary as the process chart varies from one run to another. For example, the number of inputs and outputs is variable, the specific Uniservos to be used may be given, or it may 'be stated that a file is to be prepared for conversion to punched cards, and so on. (I} COMPARE PRODUCT-NO !.!! WITH PRODUCT-NO ~ ; IF GREATER GO TO OPERATION ~ ; IF EQUAL GO TO OPERATION ~ ; OTHERWISE GO TO OPERATION ~. Since the logical operation numbered one . in the FLOW-MATIC chart calls for comparison of t\,Vo fields, the programmer uses the order COMPARE. The three conditions required are state~ by using the fourth option listed in the description of this operation. Having chosen the correct format, the programmer inserts the assigned names for the fields, and indicates, by the assigned letter, to which file he is referring. Note that the convention of labelling fields with their file letters allows the programmer to use the same name for fields from different files. Within one file, however, each field is given a unique name. It remains to specify which operation is to be performed next in each of the three cases which occur. This is done by direct reference to the FLOW-MATIC CHART. (2) TRANSFER A TO D . Operation two in the chart calls for the transfer of a complete item from the file lettered A (INV~NTORY) to the file lettered D (UNPRICED-INV). The TRANSFER order accomplishes this. 31 (3) WRITE-ITEM D . Operation three indicates that the current item in the D file (UNPRICED-INV) is to be recorded on magnetic tape. (4) JUMP TO OPERATION 8 • In operation four the chart indicates a break in the normal sequence. The programmer fills in from the chart the operation number which is to be perJ,ormed next. (5 ) TRANSFER A. TO f . The logical function to be performed is the same as in operation two, but here the A item (from the INVENTORY file) is to be moved to file C (PRICED-INV). (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) • The function of this operation is to i~sert the price from file B (the PRICE file) into the C item created by operation six. The programmer assigns field names (here the same nam2(, UNIT-PRICE, is used in both files) and attaches the proper file letters. (7) WRITE-ITEM C • In this operation the completed item in the C file is to be recorded on magnetic tape. See operation three. (8) READ-ITEM!; IF END OF DATA GO TO OPERATION 14 • The function of this statement is to obtain the next consecutive item from file A (INVENTORY). Since a request for the next item may exhaust the data file, the programmer states as a part of this function which operation is to be performed when the end of the data is encountered. In this case, the chart shows that 14 is the number required. (9) JUMP TO OPERATION 1 Operation nine in the FLOW-MATIC chart indicates a break in the normal sequence, that is, that operation number 1 is to be performed next. (10) (11) 32 READ-ITEM 1L; IF END OF DATA GO TO OPERATION 12 This operation is to obtain the next consecutive item from fi~e B and also to indicate that operation number 12 is to be performed when the end of the file is encountered. See also operation eight. JUMP TO OPERATION ~ See operation four. (12) SET OPERATION 9 TO GO TO OPERATION ~ The FLOW-MATIe. chart indicates that the function here is to alter another operation in the seQuence, namely number nine. Operation nine as originally stated is a jump to number 1. The current operation (twelve) is to change nine so that it becomes a jump to operation two. (13) JUMP TO OPERATION 2 See operation four. (14) TEST PRODUCT-NO (B) AGAINST ZZZZZZZZZZZZ 16 ; OTHERWISE GO TO OPERATION ~ . . IF EQUAL GO TO OPERATION Operation fourteen in the FLOW-MATIe chart calls for a comparison of a data field with a constant quantity, a word of Zs. This is a different logical function from the comparison of two data fields, as was done in operation one. Here the required order is TEST rather than COMPARE. The programmer chooses the option whose format provides the conditions indicated by the chart. He then inserts the name of the field to be tested, PRODUCT-NO, with its file letter, B. The constant quantity is indicated by inserting its actual value. From the chart the programmer determines the operation number to be performed in the two cases which occur. (15) REWIND B • Operation fifteen states that the current reel of the file lettered B is to be rewound. Here the logic of the problem is such that, although the end of the B data has not been encountered, the last applicable item has been used and the file can be terminated. ( 16 ) CLOSE-OUT FI LES.Q 1 .Q. • The CLOSE-OUT order of operation sixteen calls for the termination of the two output files C and D. (17) STOP. (END) The last operation in the sequence is the STOP order, and it is always followed by the word END in parentheses. Figure 23 shows the completed FLOW-MATIe code,as it is submitted for Unityping. The unused portion of the block is space-filled. 33 FLOW-MAT IC CODE FOR SAMPLE PROBLEM (0) INPUT INVENTORY FILE-A PRICE F1LE-8 ; OUTPUT PRICtD-INV FILE-C UNPRICEDINV FILE-D ; HSP D • (I) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (8) ; IF ~REATER GO TO OPERATION 10 ; IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 • (2) TRANSFER A TO D • (3) WRITE-ITEM D • (q) JUMP TO OPERATION 8 • (5) TRINSFER A TO C • (6) MOVE UNIT-PRICE (8) TO UNIT-PRICE (C) • (1) WRITE-ITEM C . (8) READ-ITEM A ; IF END OF DATA GO TO OPERATION Iq . (9) JUMP TO OPERATION I . ( I 0) REA D- I TEM 8 ; I FEN D 0 FDA TA GOT 0 0" ERA T ION I 2 . ( I I) J UMP TOO PERA T ION I . (12) SET OPERATION 9 TO GO TO OPERATION 2 . (r3) JUMP TO OPERATION 2 • (I~) TEST PRODUCT-NO (8) AGAINST ZZZZZZZZZZZZ OTHERWISE GO TO OPERATION 15 • (15) REWIND 8 . (16) CLOSE-OUT FILES C , D . (17) STOP. (END) Space Fill to End of Block. IF EQUA L GO TO OPERAT ION 16 ABC MANUFACTURING COMPANY INVENTORY FIGURE 23 chapter 4 File-Data Layout And Design The run description in Chapter 2 included a complete statement of the logical function to be performed. The FLOW-MATle charting and coding can be completed from this statement, but before the Data Designs can be completed, several detailed questions must be answered. Figure 24 is a copy of the run chart presented in Chapter 2 wi th addi tional details shown (e.g., item sizes, labels, whether single reel O~ ~ot). Figure 25 illtts~rates the item Iaybut~ for the. data filesinvolv~d in t~is problem. It 'should be noted that the use of FLOW-MltTICpernii ts postponem'ent of the proCess of making item layouts un-til the FLOW-MATle Code is wrj tten. The system does not place any limits on item layouts, but it does not eliminate the need for them.: With this inform~tion available, Data Designs c~n be prepared on the preprinted forms illustrate~ (Appendi~B). Separate forms for the File, Item, and Field designs are prov.ided at the -end of this chapter. These preprinted forms allow for future expansion of the FLOW-MATle System. Provision has been made i~ the FLOW-MATle System for storing Data Design information about specific ~iles on the FtOw-MATle library tape. Thus if a system of related runs is to be programmed using FLOW-MATle, Data Designs for files which will be processed ia.more than one run can be stored and called upon any number of times in FLOW-MATle programs. Using this facility, there is no necessity to fill out Data Design information for files already described. Since input files to one run commonly are output files of other runs, a significant reductiort of (clerical) effort in writing and recording these Data Designs is possible. 35 PROCESS CHART ABC MANUFACTURING COMPANY INVENTORY ALL FILES SEQUENCED BY PRODUCT NUMBER INVENTORY MAXIMUM OF 60,000 10 WORD ITEMS LABEL: MMDDyyIOOIOI MULTI REEL PRICE MAXIMUM OF 60,000 2 WORD ITEMS LABEL: MMDDyyI00201 S INGLE REEL RUN 4 APPLICATION OF STANDARD PRICES TO INVENTORY UNPRICED INVENTORY 10 WORD ITEMS LABE L: MMDDyyI004 01 FOR HIGH SPEED PRINTER PROBABLY SINGLE REEL, BUT MAY BE MULTI REEL PRICED INVENTORY MAXIMUM OF 60,000 10 WORD ITEMS LABEL: MMDDyyI00301 MULTI REEL CONVENTIONS ( I )LABE LS I N WORD 03 OF FIRST BLOCK ON EACH REE L. (2) BLOCK COUNTS I N WORD 01 OF LAST ITEM IN SENTINE L BLOCK. (3) SENTINELS ARE ZZZZZZZZZZZY FOR END OF REEL AND ZZZZZZZZZZZZ FOR END OF FILE. THESE ARE LOCATED IN THE KEY WORD POSITION (WORD 000) OF FIRST INVALID ITEM AND LAST ITEM OF SENTINEL BLOCK. FIGURE 24 361 ABC MANUFACTURING COMPANY INVENTORY ITEM LAYOUTS FOR RUN ~ FILE B (PR ICE) FILE A (INVENTORY) 00 PPPPP PP PP PPP 00 P PPP PPP P P PPP 01 0 0 0 0 0 0 QQ Q Q QQ 01 0 0 0 0 0 0 0 U U UAU U 02 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 0 0 0 0 0 0 0 0 0 0 04- P = PRODUCT NUMBER 05 06 U=UNITPRICE OTHER DATA Q = QUANTITY ON HAND 07 E = EXTENDED PRICE (SEE CHAPTER 6) 08 09 1\ = LOCATION OF DECIMAL POINT FILE D (UNPRICED INVENTORY) FILE C (PRICED INVENTORY) 00 PP PPP PPPPP PP 00 PPP P PPP P PPP P 01 0 0 0 0 0 0 Q QQQ QQ 01 0 0 0 0 0 0 QQQQQQ 02 0 0 0 0 0 0 0 U U U/\U U 02 0 0 0 0 0 0 0 0 0 0 0 0 03 0 0 E E E E E E E E'lE E 03 0 0 0 0 0 0 0 0 0 0 0 0 04- 04- 05 05 06 06 OTHER DATA 07 07 08 08 09 09 OTHER DATA FIGURE 25 37 NAME O.F FILE The programmer writes in the file name which may not start with the word FILE. FILE DESIGN* This section of the Data Designs contains information about the organization of the file. The data fi·le conventions to be used are listed here and they determine the details of the coding which will be produced to control the file. Nine two-word packets are required. Additional two-word entries may be made if it becomes necessary to describe other features of the file. Each twoword packet is listed and described below. The first packet is: L AB E L L L L f:l f:l f:l f:l L L L L l f:l f:l f:l L '-L L L LLLLLLLLLLLL represents the identification that has been assigned to this data file. The least significant ~igit~ should ~nd in the digit 1, indicating reel one. Allowance may be made for numbering as many reels as: are required. (If the maximum number of reels in a file is 9, one digit is allocated as a counter; 99, two digits; 999, three digit's~ etc.) If the label is not known' or if it is not desired to specify, the label, twelve spaces are used. The second packet is: - L 0 C fl -. i····· 0 F 0 0 0 0 0 A ...... " ,,--'" .. ......,,- ~ LAB EL 0 0 0 0 W W W WWW indicates the word position of the label within the label block. sixty words in the label block are addressed as 000-059. * Consult figures on pages 46, 49, 52 and 55. 38 The The third packet is: MU L T I REE L 11 11 11 ". 0 0 0 0 0 0 0 0 0 0 0 n The digit n may be eith€r zero or one. If zero, it means that this file will not exceed one reel. A one is used in all cases where files may exceed one reel. The fourth packet is: B L K 11 C T 0 0 0 0 0 11 --- I N 0 11 11 0 0 0 0 0 0 b ,b may be either zero or one. If one, it means that the tally of the number of, blocks is maintained (for input reels) or will be written (on output reels) on the end of each reel of this file. On input reels the block count recorded on the reel is checked against a counter maintained during the processing. All blocks on the data tape will be counted, including label block, data blocks and sentinel blocks. Use b = zero to indicate that this control feature is not desired. The fifth packet is: :',"0;"""""""" CT B L K 11 0 0 0 0 0 0 l:l - L0 C 0 0 0 "- I" lJ. l:l X X X XXX indicates the word posltlon of the block count within the last item of the sentinel block. The allowable range for XXX is from 000 through item-size minus one. If the block count indicator is zero, this entry is not significant and the word is filled with zeros. The sixth packet is: r:~'" .,e.....' . "'.' ,.",., .",."."'.,,,, .'"• .. '·'...'·r, ..... · ... ,....... .",,, •.••.•,, """:'"'1''''' .""., •• ENDaREELlJ.SEN s s s s s s s s s s s s SSSSSSSSSSSS represents the twelve digits used to indicate end of valid data on intermediate reels, e.g,., ZZZZZZZZZZZY. zero, spaces are written here. If the multi-reel indicator is 39 The seventh packet is: END8 F I L E 8 S EN s s s s s s s s s s s s SSSSSSSSSSSS represents the twelve digits used to indicate end of valid data on the final reel of a file, e.g., ZZZZZZZZZZZZ The eighth packet is: - L 0 C 8 0 0 0 0 I N 8 0 0 0 F I RST 0 0 W W W WWW indicates the word position of the end sentinels within the first invalid item of the sentinel block. The allowable range for WWW is from 000 through item size minus one. The ninth packet is: L0C - 8 0 0 0 0 I N 8 LAST 0 0 0 0 0 8 W W W WWW indicates the word position of the end sentinels within the last item of the sentinel block. The allowable range for WWW is from 000 through item size minus one. Although FLOW-MATIe permi ts flexibili ty in th.e conventions to be applied to tape files, it is expected that in a given installation much of this information will remain fixed, thereby providing automatic standard~zation. The flexibility is still necessary when the files are to be processed by runs other than those produced by FLOW-MATIG., e.g., sorts. ITEM DESIGN* This section of the DATA DESIGNS contains information about the data items in the file. Three two-word packets of information are required, and more can be added on an optional basis. The first packet is: I T E M.f1 S I Z E f1 0 0 0 0 n n n 0 0 0 0 0 f1 f1 nnn represents the size of the data items in the file, e.g., the item in this sample problem is ~ ten word item (see page 47). The second packet is: - -0 F N0 f1 0 0 0 0 f1 KE y S 0 0 0 0 0 0 f1 f1 0 k k is a digit from zero through nine. The key is the field or fields by which the file is sequenced. If a file is sequenced by a major key such as last name, and a minor key such· as first name, k would equal 2. The third packet is: ~..,., KEY Y y f1 1 f1 f1 f1 f1 f1 f1 f1 y y y y y y y y y y YYYYYYYYYYYY represents the assigned name of the field which is the major key in this file~ If the file is unsequenced, the k digit in the previous packet is zero and YYYYYYYYYYYY is twelve spaces. When k is greater than one, additional packets are required for each additional key in the order of decreasing significance. * Consult figures on pages 47, 50, 53 and 56. If "k" in NO. OF KEYS \ were 2, then a fourth packet wouldbe required, following the same format as the third packet: y y y y y y y y.y y y y Each field named as a key must be listed in the Field Design section under the same name used here. In the preprinted forms in Appendix B additional information may be inserted following. the name of the last key. In some problems, for example, it is desirable to treat a consecutive group of 'UNIVAC\ words within the item as a sub-item. R~ther than calling for this sub-item by mentioning all of the names of the fields within it, a new name is applied to the sub-item itself. This assigned name is then entered in the Data Design for the file in the following way: AAAAAAAAAAAA OOOSSSOOOEEE AAAAAAAAAAAA is the name chosen by the programmer, e.g., ADDRES~.6.6.6.6 . SSS is the relative·word position of the first word of the sub-item within the item. The allowable range is 000 through item size minus one. \~ EEE is the position of the last word of the sub-ite~ within the item. The allowable range is 000 through item size minus one. As many such sub-items as are required by the problem may be so named following the name of the last key. ~2 FIELD DESIGN* This section of the Data Designs contains detailed information about the data fields within the item. If the Data-Design is to :be used in many runs, all fields in the item should be described. If the Data Design is to be used to compile only one run, only those fields mentioned in the FLOW-MATIe code for the run need be described. Each field in the i tern 'is described wi th a four word packet. yyyyyyyyyyyy OOOWWWOOOOOO OOOOOTPPSLNO EEEEEEEEEEEE = Name of field = Word Location In 'i tern = Field Descriptorl = Extractor YYYYYYYYYYYY in the first word represents the name of the field exactly as it appears in the FLOW-M4TIC code. ,It, may be a maximum of twelve consecutive non-space digits. If the name con~ains fewer than twelve digits, unused digits to the right-.. are space filled. If names consist of two or more parts, these parts are separated by hyph~ns; e.g. ,PRODUCT-NO~ WWW in the second word rel!resents the word position of this field within the item, i.e., for a ten word ,item the words are ODO-009. TPPSLN in the third word: T in the 6th digit of the 3rd word rePl'es en ts the type of field. = 1 = alphabetic T = 2 = alpha-numeric T = 3 = numeric l' PP in 3rd word indicates the location of rhe assumed decimal point relative to a reference point -immediately to the left of the field. The positfon just to the lef! of the field is indicated by PPequal,tooo. If the assumed decimal is one position to the left of the reference pOint, PP is lL. If the assumed decimal is one position to the right of the refference point, PP is lR. _ Assumed desimal points may be positioned a maximum of 35 places to the left or to the right, (e.g., ZL = 35 left ML = 22 left AL = 10 left AR = 10 right JR = 19 right 7SR = 35 right). If the field has no ignores. (Ii) a~sumed decimal point, the digits PP are written as * Consult figures on pages 48. 51, 54 and 57. ~3 S in 3rd word represents the location of the sign of this numbe,r. Ignore (() is used for fields without signs. A numeric field with the S digit equal to ignore is assumed to be a positive number. If the field has a sign, the S digit may be 1 through 9, Aj B,or C. twelve digit positions within a UNIVAC word are labelled • .,J: The 2' : 3 : " : 5 : 6 : 7 : 8 : 9 :"A : B :' C ., L in the 3rd word represents the location within the UNIVAC word of the left most digit of the field excluding its sign. As mentioned above, L may be 1 through 9, A, B, or C. N in 3rd word represents the number of consecutive (adjacent) digits in the field, excluding its sign. N may equal 1 through 9, A, B, or C, where A equals 10, B equals 11, and C equals 12 digits. EEEEEEEEEEEE in the fourth word is a pattern of ones and zeros, showing the digit locations occupied by the field, including the sign digit if any. Ones indicate the digits comprising the field, and all other digits are zeros. If the field is alone in the word and can be treated as a whole word, twelve zeros are used, not twelve ones. Although the fields described for the sample problem all appear in separate UNIVAC words in the item, the more common situation is that several fields are packed in one word. In FLOW-MATIC, each such field has its own name and description in the Data Designs. It also may happen that two fields overlap each other within the UNIVAC word. For example, consider the field PRODUCT-NO in the Inventory File. The last three digits of this field may be a type number, not used in this problem as such. In a problem where the type number must be treated as well as the product number, both fields are described, as shown below: PRODUCT-NO~~ 000000000000 oooo021111CO 000000000000 Four word packet describing digit field. 12 TYPE-NUMBER~ 000000000000 0()0003111A30 000000000111 Four word packet describing 3 digit field within 12 digit field. Sentinels Immediately following the .la.st four word packet, and in word S9 of the last block of the Data Design, the sentirte} EttD~FILE~DES is written. The rest of the block is filled with zeros. After the FLOW-MATIC Code for the program has been wri t ten (Ch apter 3), and the Data Designs have been fi lIed in as described in this chapter and shown in Figures 26 a through 26 1, the input tape for FLOW-MATIC compilation may be UNITYPED. Figure 27 shows a HIGH-SPEED PRINTER copy of this information just as it appears, ready to compile the program for Sample Problem 1. PAGE: _ _ ANALYST: INPUT AND OUTPUT DATA DESIGN. DATE: _ _- - _ ABC MANUFACTURING COMPANY INVENTORY PROBLEM N A ME I ~ N V E -- 0 F {:j F I LE T 0 R Y " F I LE 0 ES I Il ~ ~ ~ English name of file. -- G N Il Il fl' Il Il Il Il II Ii1 Il Il Il L AB E L Il II II Il Il Il Il M M D D Y Y L0 C t:. 0 0 0 -0 0 QF I 0 0 0 0 0 o. Il 0 0 0 0 0 0 0 0 0 BLK II CT I 0 0 0 3 R E E L .8 a I N '0 11 0 Il CT l~) Label with reel counter. all 6' s. -2.) If label variable Il. - L0 C Word location of label in label block. Il " I I = Yes; o = No. Il II 0 0 0 0 0 0 0 0 0 0 0 LK r LAB EL Il MU L T I .~ ~ I I = Block count desired; 0 = No block count. ' 11 II I Word location of block count in last item of sentinel block. [000 to (item size-I)] R E E L II S E .N z z z z z z z z z z z y End of reel sentinel. If single reel, all 0 0 0 0 0 0 E N0 0 0 0 0 0 ,..... ll. F I L E ~' SEN z z z z Z' Z z z z z z Z L 0 C Il I N Il F I R S T End of file 0 0 0 0 0 0 0 0 0 Word location of sentinel in first invalid item. [000 to (item size-I)] . EN0 Il Il - - L0C Il I N Il s. 0 0 0 LAST 0 0 0 0 0 0 0 0 0 0 se~tinel. -, , .- II 0 0 Word location of sentinel in last item of sentinel block. [000 to (item size~I)] " '. r ~her entries may be added here, each consisting of a title word and an information word; e.g., . PARf6BU(6.."~ . Z7ZlZlZlZZZ)( LNIITPISf NOTE: After the last entry skip to the next page . . FLOW-MATIC DATA DESIGN FORM .. ~~~ F I GURE26a Sl.1499 \I~ DIVISION Of SPEll' lAND CORPORATION ANALYST: PAGE: _ _ DATE:. _ _ _ _ _ _ _ _ _---,._ _ I' T E M l:l A t::. ' .'l:l t::. 0 'E S I G N fJ. l:l' l:l l:l l:l l:l fl -0 0 0 0 - l:l l:l Il r 1 T E M l:l S I Z E N0 0 - 0 F l:l l:l l:l 0 I 0 KEyS l:l ~. 0 0 0 0 ~ 0 0 0 0 0 0 0 0 0 '0 0, I KEy 1 -u ~ t::. - N 0 p R 0 - '. ~ D ~ ~ C T ~ 1,2,3,4,5,6,10,12,15,20,30,60. 0-,1,2, .... ,9 ; number of keys - t::. l:l fj fj '<-'Name of field, ifnokey~ Further key entries'may be added here, each consisting of KFY6n6~ followed by the name of the field. If there are Sub-items to be described, the descriptions are entered following.. the last Key entry. Sub-items are described with two-word packets consisting of the name of the Sub-item followed by a word in~he format OOOSSSOOOEEE, where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. ~ UNIlYPISf l\UfE: Mter the last entry skip to the next page. IJ FLOW-MATIC DATA DES" GN FORM 2 ~7&u.L~ DIVISION Of SPEIIY lAND COIPOIATION FIGURE 26b S 1 - 1 500, i ANALYST: _ _ _ _ _ _ _ _ __ PAGE: _ _ DATE: ---------------------- F I E L D 'Il 0 E S I G N fl fl l1 fl fl fl fl fj fl p - N 0 R 0 D U C T - 0 0 0 0 0 0 0 fl fl fl - !J. !J. 0 0 0 0 0 Name of field. Word location in item. [000 to (item size-I)' 0 0 0 0 0 2 r r :r I C 0 Field descriptor of form OOOOOTPPSLNO *, 0 0 0 0 0 Extractor; if full-word field, all 0' s. 0 0 0 0 Q u A N T I 0 0 0 - 0 0 0 T Y !J. !J. !J. !J. 0 I 0 0 0 0 0 0 0 0 0 0 0 3 :r ) :r 7 6 0 0 0 I I I I I 0 0 0 E N 0 0 0 0 0 !J. F I L E !J. 0 0 0 0 I An unlimited number of fields may be described using the same four-word packet format. * Explanation of field descriptor: T 0 0 D E S 0 3 - numeric 0 0 0 0 ZE RO Fil L 1 HRl we RD 058 0 0 0 0 0 0 0 0 0 0 0 of field. 1 - alphabetic 2 - alpha-numeric PP 0 0 = Type 0 0 0 0 S = Position of decimal point in relation to a reference point immediately to the left of the left-most digit of ~he field. 00 - coincident with reference point ii - not applicable nL - n positions to the left of the reference point nn - n positions to the right of the reference point (n = 1,2, ... , 9, A, B, ... , Z) = Digit position of the sign. 1,2, ... ,9,A,B, or C i-not applicable 0 0 0 0 0 0 0 0 0 L = Digit N = Number 0 0 0 0 0 0 position of the left-most digit of the field, excluding sign. 1,2, ... ,9,A,B, or C of digits in the field, excluding sign. 1,2, ... ,9,A,B, or C (A = 10, B = 11, C = 12) 0 0 0 0 0 0 0 0 0 0 E N D 6 UR 0 0 0 0 NOfE: Place the sentinel END6FILE60ES immediately following the last fourword packet and in word 059 of that block. 0 0 FLOW-MATIC DATA DESIGN FORM 3 0 0 F 0 0 0 0 0 0 0 0 0 0 0 0 I L E 6 0 E S ~76uuL~ FIGURE 26c DIVISION Of SPfRRY RAN.D CORPORATION PAGE: _ _ ANALYST: ________~__________ DATE: ______________________ N AM E - D. P R I C E F I L E 0 F l:l -~ f--- £'j £'j £'j F I L E fj £'j £'j £'j l:l 0 E S I G N l:l l:l l:l l:l L AB E L l:l fl l:l l:l l:l l:l l:l 8 l:l l:l l:l l:l l:l l:l l:l l:l M M 0 0 y y I 0 L 0 C - II F l:l L AB EL 0 0 0 0 -00 0 0 MU L T I l:l REE L 0 0 0 0 0 0 0 0 BL K CT tl 0 2 0 I fl 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 I CT 0 0 0 0 0 0 E N0 11 £'j £'j £'j £'j £'j 0 fl SEN 6 6 L 0 C 0 0 0 RIE E L £'j - fl £'j fj - L 0 C 0 6 I 6 ~ I = Block count desired; 0 = 1\0 block count. Word location of block count in last item of sentinel block. [000 to (item size-I)1 F~d of reel sentinel. If single reel, al16's. ~~d of file sentinel. l:l I N l:l (). - F I RST 0 0 0 0 0 0 0 0 0 0 0 L0C I N L AS T fl - I = Yes; 0 = 1\0. 6 6 F I L E l:l S E N z z' z z z z z z z z z Z EN0 Word location of label in label block. l:l l:l 0 0 0 I N0 3 (). fl 1.) Label with reel counter. 2.) If label variable all 6' s. -- ~ fl S LK English name of file. l:l 0 0 0 0 0 l:l 0 0 0 0 0 0 0 0 Word location of sentinel in' first inval id item. fooo to (item size-I)] Word location of sentinel in last item of sentinel block. rOOO to (item size-D] Other entries may be added here, each consisting of a title word and an information word; e. g. , PARTffilJffiSt.N ZZZ:Z72ZZZlZX - lNln'PISf NOTE: After the last entry skip to the next page. FLOW-MATle DATA DESIGN FORM 1 ~R.nd~ FIGURE 26d Sl.1499 DIVISION OF SPERRY RAND CORPO,RATION Al'lALI;::'l: PAGE: _ _ DATE: ________________________ I TEM ~ 0 ES I GN 11 11 11 ~ ~ ~ 11 11 ~ 11 A I T E M fl S I Z E ~ ~ 11 0 0 2 KE yS ~ ~ 0 0 0 0 - - N0 ~ 0 0 F ~ 11 0 0 0 0 ~ 0 0 0 0 0 0 0 0 0 '0 0 I KEy ~ 1 ~ IJ. IJ. IJ. ~ P R 0 D U C T - N 0 ~ ~ - IJ. ~ - 1,2,3,4,5,6,10,12,15,20,30,60. 0,1,2, .... ,9 ~ame = number of keys of field, if no key ~ Further key entries may be added here, each consisting of KFYAn1:/J1MM followed by the name of the field. If there are Sub-items to be described, the descriptions are entered following the last Key entry. Sub-items are described with two-word packets consisting of the name of the Sub-item followed by a word in the format OOOSSSOOOEEE, where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. lJNI TI'PI Sf NJffi: After the last entry skip to the - - next page. FLOW-MATIC DATA DES'I GN FORM2 ~ R.nd. Unbvc. DIVISION Of SPEIRY .... ND CORPORATION FIGURE 26e S1.1500 50 ANALYST: _____________________ PAGE: _ _ DATE: ------------------------- F I EL 0 fj. II II II 0 E S I GN II II ~ II II II a a a 0 0 a a a a a 2 - N a a a .r % K' 0 p R 0 - 0 U C T 0 l:l ,ll II 6, 0.- 6, 0 Word location in item. [000 to (item size-1}1 I a a C a 0 Extractor; if full-word field, all O's. 0 0 0 0 0 0 0 0 0 0 U N I T - P R I C E 6, 6, a a a 0 0 a a a a a 3 a a a a a a 3 R ..r 8 5 a 0 0 0 0 I E N D 6, F I L E 6, 0 0 0 I a a a 0 0 I I I I D E S a a a a a a 0 0 0 I I ZERO FILL THRU WORD 058 a 0 a a a a a a a a a 0 0 a 0 Name of field. Field descriptor of form OOOOOTPPSLNO* An unlimited number of fields may be described using the same four-word packet format. * Explanation of field descriptor: T = Type of field. 1 - alphabetic 2 - alpha-numeric 3 - numeric PP = Position of 'decimal point in relation to a reference point immediately to the left of the left-most digit of the field. 00 - coincident with reference point ii - not applicable nL - n positions.to the left of the reference point fiR - n positions to the right of the reference point (n = 1, 2, ... ,9, A, B, ... , Z) S 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = Digit position of the sign. 1,2, ... ,9,A,B, or C i-not applicable L = Digit position of the left-most digit of the field, excluding sign. 1,2, ... ,9,A,B, or C N = Number of digits in the field, excluding sign. 1,2, ... ~9,A,B, or C (A = 10, B = 11, C = 12) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a E N D 6, F a a NCJfE: Place the sentinel END6,FILE6,DES immediately following the last fourword packet and in word 059 of that block. 0 FLOW-MATIC DATA DESIGN FO RM 3 0 ~ 7Iond-um.-~ I L E 6, D E S FI GURE 26f DIVISION OF SPt RRY RAND CORPORATION S 1 .1 501 51 PAGE: _ _ ANALYST: ___________________ DATE: ______________________ N· A M E D. ..........--- P R I 0 F ~ - I _'!!II!. C E 0 F I L E N V ~ ~ F I L E (). 0 E S I GN /j ~ (). /j (). /j /j /j /j L ABEL (). ~ (). ~ (). (). (). y I 0 0 3 0 I 0 F /j L ABEL 0 (). /j /j M M 0 0 y L 0 C fl 0 0 - -0 0 (). 0 0 0 0 0 3 MU L T I (). REE L /j (). 0 0 0 0 0 I /j I N0 0 0 0 0 0 /j L0 C 0 0 0 0 English name of file. 1.) Label with reel counter. 2.) If label variable all 6' s. . Word location of label 'in label block. ~ 0 0 .0 0 BL K ~ 0 CT 0 0 0 0 0 0 CT B LK /j 0 0 0 0 '0 0 0 - 0 1 = Yes; o = 1\0. 1 = Block 11 11 I fl /j 0 I count desired; 0 = 1\0 block count. Word loq"ltion of block count in last item of sentinel block. [000 to (item size-I)] RIE E L {). S E N z z z z z z z z z z z y End of reel sentinel. If single reel, aI16's. F I LE z z z z z z z Z· t~d E N0 E N0 L 0C - L0 C 11 (). /j 0 0 0 0 0 0 0 /j 0 I N 0 0 0 I N 0 f.l 0 /j (). SEN Z· Z Z Z· of file sentinel. F I RST 0 0 0 0 L AS T 0 0 0 0 0 0 Word location of sentinel in first invalid item. rOOO to (item size-I)] {). 0 Word location of sentinel in last item of sentinel block. [000 to (item size-I)] Other entries may be added here, each consisting of a title word and an information word; e.g., PAfIT6BU(6...C\b~ ZZZ;Z;ZZ722ZlX lNITIPISf NOTE: After the last entry skip to the next page. FLOW-MATIC DATA DESIGN FORM 1 ~R.nd.~ F I.GURE 26g Sl.1499 . DIVISION OF SPERRY RAND CORPORATION . ANALYST: DATE: ________________________ PAGE: __ I T E M fj 0 E S I G N a a f:j f:j f:j I TEM 0 0 0 0 - - N0 l:l fj, f:j {j, S I Z E f:j {j, f:j 0 0 0 0 0 I 0 KE y S f:j f:j 0 '0 0 I f:j f:j f:j N 0 6 6 f:j f:j f:j 0 0 F l:l f:j f:j 0 0 0 0 0 0 0 0 KEy l:l 1 f:j f:j f:j P R 0 D U C T - - f:j l:l - 1,2,3,4,5,6,10,12,15,20,30,60. 0,1,2, .... ,9 = number l\ame of field, of keys ifnokey~ Further key entries may be added here, each consisting of KFYAn!:l:l~ followed by the name of the field. If there are Sub-items to b~ described, the descriptions are entered following the last Key entry. Sub-items are described with two-word packets consisting of the name of the Sub-item followed by a word in the format OOOSSSOOOEEE, where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. UNITYPISf NJfE: After the last entry skip to the -- next page. ! I FLOW-MATIC DATA DES'IGN FORM 2 ~R.nd.~ DIVISION OF SPfRIY RAND CORPORATION i S1.1500 FIGURE 26h ANALYST:. _ _ _ _ _ _ _ _ __ PAGE: _ _ DATE: - -_ _ _ _ _ _ _ _ __ F I E· L 0 Il Il fj p - /j. 0 E S I GN f:1 Il Il Il Il 11 - ~ Il Il - t., !:1 Name of field. 0 0 0 0 0 0 a Word location in item. [000 to (item size-1)1 R 0 0 U, C T 0 0 0 0 0 N 0 0 0 a 0 0 2 ¥ K .r I C 0 Field descriptor of form OOOOOTPPSLNO* 0 0 0 0 0 0 0 0 0 0 Extractor; if full-word field, all O's. Q U A N T I T Y tJ. ~ ~ !:1 a a a a 0 0 0 0 I a a 0 0 0 3 a a .r .r 0 0 0 0 0 U N I T - P R I 0 0 0 0 0 0 0 0 0 % 7 6 0 I I I ~ !:1 2 0 0 0 0 0 a I I I C E 0 O· 0 0 0 3 3 R .r 8 ,5 0 0 0 0 I I I I I ~ ~ !:1 0 0 0 E X T - P R I 0 0 0 3 0 0 0 0 0 0 0 3 8 I I I I I E N 0 ~ F I 0 0 0 0 0 0 0 a C E 0 0 0 0 R I 3 A 0 I I I I L E ~ D E S a a 0 a I 0 0 .- 0 0 0 0 0 ZERO FILL THRU WORD 058 0 0 0 0 0 0 0 0 0 a 0 0 51.1501 tJ. F described using the same four-word packet format. * Explanation of field descriptor: T = Type of field. 1 - alphabetic 2 - alpha-numeric 3 - numeric PP = Position of decimal point in relation to a reference point immediately to the left of the left-most digit of, the field. 00 - coincident with reference point ~i - not applicable nL - n positions to the left of the reference point fiR - n positions to the right of the reference point (n = 1,2, ... ,9,A,B, ... ,Z) S = Digit position of the sign. 1,2, ... ,9,A,8, or C i-not applicable L = Digit position of the left-most digit of the field, excluding sign . 1,2, ... ,9,A,B, or C N = Number of digits in the field, excluding sign. 1,2, ... ,9,A,B, or C (A= 10, B = 11, C = 12) NOIE: Place the sentinel ENDtJ.FILE!:1DES immediately following the last fourword packet and in word 059 of that block. 0 0 FLOW-MATIC DATA DESIGN FORM 3 0 0 0 0 0 0 E N 0 a 0 0 0 0 0 0 0 0 0 An unlimited number of fields may be I L E tJ. 0 E S ~"I&uuL~ FIGURE 26 i DIVISION OF SPERRY RAND CORPORATION ANALYST: _ _ _ _ _ _ _ _ __ PAGE: _ _ DATE: ___________________ F I LE N AME A N P R I F I L E l:!l 0 E S I G N l:!l l:!l l:!l l:!l l:!l l:!l l:!l l:!l l:!l L AB E L l:!l l:!l l:!l l:!l l:!l l:!l l:l y y I 0 0 q 0 -0 F l:!l L AS EL U l:!l l:!l l:!l l:!l M M 0 0 L 0 C fl -0 0 F l:!l -~ f---- .--- C E 0 - I N V I 0 0 0 0 0 0 0 MUL T I 11 REEL l:!l l:!l 0 0 0 0 0 0 0 0 0 BL K Il CT fl I N0 0 0 0 0 0 S LK l:l 0 0 0 0 0 0 0 0 CT 0 0 0 0 0 I I l:l L 0 C fl l:l 0 0 0 0 0 I RIE E L Il S E N z z z z z z z z z z z y E N0 1.) Label with reel counter. 2.) If label variable all 6' 'so Word location of label in laLel block. 1 :: Yes; 0 :: 1\0. 8 l:l 0 0 0 0 - 3 English name of file. 1 :: Block count desired; 0 :: 1\0 block count. Word location of block count in last item of sentinel block. [000 to (item size-I)] f1 End of reel sentinel. If single reel, al16's. E N 0 fl F I L E fl S E N z z z z z z z z z z z Z L 0 C 8 I N IJ. F I R S T End of file sentinel. 0 0 0 0 Word location of sentinel in" first inval id item. rOOO to (item size-I)] - - L 0 C fl 0 0 0 0 0 0 0 I N L AST fl fl 0 0 0 0 0 0 0 0 0 0 0 0 0 Word location of sentinel in last item of sentinel block. [000 to (item size-I)] Other entries may be added here, each consisting of a title word and an information word; e. g. , PAHT6BU(6..~I~l' UZZll72ZlZX lNITI'PISf NOTE: After the last entry skip to the next page. FLOW-MATIC DATA DESIGN FORM 1 ~R.nd~ FIGURE 26j S 1 .1499 DIVISION Of SPERRY RAND CORPORATION ANALYST: DATE: ______________________ I TEM Il PAGE: __ ~ 0 E S I GN a -- II II II II II II II II II Il II II S I ZE I TEM II 0 0 0 0 0 0 0 0 0 - - N0 II 0 F II II II II 0 J< E y S I II 1 p 0 U C T R 0 0 1,2,3,4,5,6,.10,12,15,20,30,60. II II 0 0 0 0 0 0 0 0 0 0 0 KEY . 0,1,2, .... ,9 I = number of keys II II II II II II 11 - N Q ~ ~ Name of field, ifnokey~ Further key entries may be added here, each consisting of KFX6.n/:/:1MM followed by the name of the field. If there are Sub-items to be described, the descriptions are entered following the last Key entry. Sub-items are described with two-word packets consisting of the name of the Sub-item followed by a word in the format OOOSSSOOOEEE, where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. lNIlYPISf NJfE: After the last entry skip t? the next page. ! FLOW-MAliC DAlA DES'I GN FORM 2 . 51.1500 56, , • ~~~ DIVISION Of SPEIIY RAND CORPORATION FIGURE 26k ANALYST: _____________________ PAGE: _ _ DATE: ------------__--________ F I EL D d d fj Il d 11 D E S I GN d II d II II Il d - p R 0 D U C T a a 0 0 0 0 0 0 0 0 0 0 0 0 a 0 a I 0 2 i' .t A- 0 0 0 0 0 0 0 Q U A N T I T a a a a 0 0 N Y ~ ~ C 0 0 0 0 0 ~ 0 0 I 0 0 0 a 3 .r 0 Q Word location in item. [000 to (item size-1)1 Field descriptor of form OOOOOTPPSLNO * Extractor; if full-word field, all O's. ~ f1 f1 a 0 0 K K 7 6 Name 0.£ field. a An unlimited number of fields may be descri~~d using the same four-word packet format. * Explanation of field descriptor: 0 0 0 0 0 0 I I I I E N D L E ~ D E S 0 a 0 a a a ~ F I 0 0 0 a I I 0 0 0 0 0 Z·ERO FILL THRUWORD 058 a a 0 0 0 0 0 0 a a 0 0 0 a 0 a a 0 0 0 51.1501 a a 0 0 a 0 0 0 a a 0 0 a 0 0 0 0 0 a 0 0 a a a a 0 0 a a a a E N D 0 ~ F I 0 0 a 0 0 a T= Type of field. 1 - alphabetic 2 - alpha-mmeric' 3 - numeric PP = Position of decimal point in relation to a reference point immediately to the left of the left-mos~ digit of the field. 00 - coincident with reference point i~ - not applicable nL - n positions to the left of the reference point nR - n positions to the right of the reference point en = 1,2, ... ,9,A,B, ... ,Z) S = Digit position of the sign. 1,2, ... ,9,A,B, or C ~ - not applicable L = Digit position of the left-most digit of the field, excluding sign. 1,2, ... ,9,A,B, or C N = Number of digits in the field, excluding sign. 1,2, ... ,9,A,8, or C (A = 10, B = 11, C = 12) NOfE: Place the sentinel END~FILE~DES immediately following the last fourword packet and in word 059 of that block. 0 FLOW-MATIC DATA DESIGN FORM 3 a L E ~ D E s- ~~~ FIGURE 261 DIVISION Of SPEIIY lAND COIPOIATION 57 DATA DESIGN INPUT FOR SAMPLE PROBLEM en (X) NAME OF FilE INVENTORY FilE DESIGN BlK CT IND 000000000001 BlK CT lOC lOC IN lAST OOOOOOOQOOOO FIELD DESIGN MMDDYYI0010l lABEL 000000000001 ITEM DESIGN lOC OF lABEL 000000000003 MULTI REEL OOOOOOOOOOOl END REEL SEN ZZZZZZZZZZZY END FilE SEN ZZZZZZZZZZZZ lOC IN FIRST 000000000000 ITEM SIZE OOOOOOOOOOtO NO OF KEYS 000000000001 KEY PRODUCT-NO QUANTITY 000001000000 000003 760 000000111111 PRODUCT-NO 000000000000 000002 ICO 000000000000 END FilE DES ooeeOOOOOOOO 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 END FilE DES NAME OF FilE PRICE FilE DESIGN lABEL MMDDYYI00201 lOC OF lABEL 000000000003 MULTI REEL 000000000000 BlK CT IND 000000000001 BlK CT lOC END FilE SEN ZZZZZZZZZZZZ lOC IN FIRST 000000000000 000000000002 NO OF KEYS 060000000001 KEY 1 PRODUCT-NO LOC IN lAST 000000000001 END REEL SEN 000000000000 ITEM DESIGN f':'RODUCT-NO 000000000000 000002 ICO 000000000000 UNIT--PRICE 000001000000 0000033R 850 000000011111 END FilE DES 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 END FilE DES NAME OF FilE PRICED-INV FilE DESIGN lABEL MMDDYY100301 lOC OF lABEL 000000000003 MULTI REEL 000000000001 BlK CT IND 000000000001 BlK CT lOC END REEL SEN ZZZZZZZZZZZY END FilE SEN ZZZZZZZZZZZZ lOC IN FIRST 000000000000 lOC IN lAST 000000000000 ITEM DESIGN ITEM SIZE 000000000010 NO OF KEYS 000000000001 KEY PRODUCT-NO 000000000000 QUANTITY 000001000000 000003 760 000000111111 FIELD DESIGN FIELD DESIGN ITEM SIZE 000000000001 PRODUCT-NO 000000000000 000002 ICO UNIT-PRICE 000002000000 0000033R 850 000000011111 EXT-PRICE 000003000000 0000038R 3AO 001111111111 END FilE DES 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 END FilE DES NAME OF FilE UNPRICED-INV FilE DESIGN lABEL MMDDYYI00401 LOC OF lABEL 000000000003 MULTI REEL 000000000001 BlK CT IND 000000000001 BlK CT lOC END REEL SEN ZZZZZZZZZZZY END FilE SEN ZZZZZZZZZZZZ lOC IN FIRST 000000000000 lOC IN lAST 000000000000 ITEM DESIGN ITEM SIZE 000000000010 NO OF KEYS 0000000000,01 K.EY PRODUCT-NO FIELD DESIGN 000000000001 PRODUCT-NO 000000000000 000002 ICO 000000000000 QUANTITY 000001000000 000003 760 000000111111 END FILE DES 000000000000 000000000000 000000000000' 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000' 000000900000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 OOOOOOOOOOQO END FILE DES FIGURE 27a FLOWMATIC CODE INPUT FOR SAMPLE PROBLEM (0) I.NPUT INVENliORY FILE·A PRfcE. FILE·a ; OUTPUT PRICED.INV FILE·C UNPRICED·INV FILE·D ; HSP D • (1) COMPARE PRODUCT·NO (A) WITH PRODUCT~NO (e) : IF GREATER GO TO ORERATION to : IF EQUAL GO TO OPERATION 5 , OTHERWISE GO TO OPERATION 2 • (2) TRANSFER A TO D • (3) WRITE-ITEM D . (4) JUMP TO OPERATION 8 • (5) TRANSFER A TO C . (6) MOVE UNIT-PRICE (e) TO UNIT·PRICE (C) (7) WRITE-ITEM C . (8) READ-ITEM A : 1F END OF DATA GO TO OPERATION 14 • (9) JUMP TO OPERATION 1 • (to) READ-ITEM e ; IF END OF DATA GO TO OPERATION 12 . ( 11) JUMP TO OPERAT ION 1 • (12) SET OPERATION 9 TO GO TO OPERATION 2 • (13) JUMP TO OPERATION 2 . (14) TEST PRODUCT-NO (e) AGAINST ZZZZZZZZZZZZ IF EQUAL GO TO OPERATION 16 OTHERWISE GO TO OPERATION 15 • (15) REWIND e . (16) CLOSE·OUT FILE C • D . (17) STOP . (END) ZZZZZZZZZZZZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000OOOOOOOOOOOOOOO~OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOZZZZZZZZZZZZ FIGURE 27b chapter 5 Intermediate or Working Storage In order to introduce a new concept, consider a simple variation in the sample problem. Suppose that the definition is altered by the fact that duplicate product numbers may occur in the Inventory file, and that such additional items are the result of errors in the original creation of the-file. Suppose further that these extra items are to be placed in an Error output file for printing. The process chart of this second sample problem, with details of the formats of the files, is -shown in Figure 28. 60 PROCESS CHART ABC MANUFACTURING COMPANY INVENTORY PROBLEM 2 PRICE MAXIMUM OF 60,000 2 WORD ITEMS LABE L: MMOOYYI00201 S INGLE REEL RUN ij APPLICATION OF STANDARD PRICES TO INVENTORY: ELIMINATION OF DUPLICATES. PRICED INVENTORY MAXIMUM OF 60,000 10 WORD ITEMS LABEL: MMDDYYIOO301 MULTI REEL UNPRICED INVENTORY 10 WORD ITEMS LABEL: MMDDYYIO~OI FOR HIGH SPEED PR INTER PROBABLY S INGLE REEL, BUT MAY BE MULTI REEL ERRORS 10 WORD ITEMS LABEL: MMDDYYI00501 FOR HIGH SPEED PRINTER PROBABLY SINGLE REEL, BUT MAY BE MULTI REEL Conven tions (I) LABELS IN WORD 03 OF FIRST BLOCK ON EACH REEL. (2) BLOCK COUNTS IN WORD 01 OF LAST ITEM IN SENTINEL BLOCK. (3) SENTINELS ARE ZZZZZZZZZZZY FOR END OF REEL AND ZZZZZZZZZZZZ FOR END OF FILE. THESE ARE LOCATED" IN THE KEY WORD POSITION (WORD 000) OF FIRST '""VALID ITEM AND LAST ITEM OF SENTINEL BLOCK. FIGURE 28 61 An outline of the logical steps to be performed can be written as follows: Assume at the start that the first item of each of the able. I files is avail- Compare the product number of the Inventory item with the product number of the Price item. a. b. c. II i~put If the Inventory product number is less, go on to step II. If the product numbers are equal, go on to step III. If the Price product number is less, go on to step VII. Prepare and write an Unpriced Inventory item. Then go on to step IV. III Prepare and write a Priced Inventory item. IV Store the product number. V Read the next Inventory item and go on to step VI. Or, if the Inventory file is exhausted, wind up the problem and stop. VI Compare the new product number with the stored product number. VII a. If the product numbers are equal 1 a duplicate has been found. Prepare and write an Error item. Then go to step V. b. If the product numbers are not equal, go back"to step I. Read the next Price item, and go back to step I~ Note in particular step VII. If the Price file reaches end of data before the Inventory file, there is no need to eliminate the unnecessary comparison. This is true because the sentinel at the end of the Price file is in the same field as the. product number, and the sentinel is larger than any legitimate product number. Figure 16 on page 19 illustrated the method used to eliminate the unnecessary comparison. This statement of the problem can be better shown on block chart form (Figure 29) • 62 BLOCK CHART ABC MANUFACTURING COMPANY INVENTORY - PROBLEM 2 ASSUME FIRST ITEMS AVA I LABLE PRE,PARE AN~ WR ITF UMPRIC£D INVENTORY ITEM PFlFPAR£ ANI! PRICED w~ITf INYENTORY ITFN FIGURE 29 63 In Sample Problem 1, no information had to be set aside for further reference; all information could be acted upon at the time it became available. The new concept introduced here in Sample Problem 2 is that of saving information for future use. A common term for that part of the computer storage reserved for this purpose in a given problem is Working Storage. In FLOW-MATIC the term is abbreviated to W-storage. The programmer may save as many fields or items as desired in W-storage. And he may name these fields in the same way that English names are assigned to fields within the data files. It follows, that, when referring to fields in W-storage, he labels them with the letter W in parentheses, e.g., Operations (8) and (10) on page6S. The FLOW-MATIe chart for Sample Problem 2 in Figure 30 is created in the same general manner as before, but makes use of this additional facility. The development of the FLOW-MATIC. code also follows the previous methods. Note however, the use of the letter W in Figure 31, operations eight and t:en. It remains to write the Data Designs for sample problem 2. Clearly the Data Designs for files A, B, C, and D need not be changed. The Data Design for the new file, E, is shown in Figures 32 on pages 66 and 67. Note that, since no field names within the file are required in the FLOW-MATIC code, none have been described in the Data Design. FLOW-MATIC CHART ABC MANUFACTURING COMPANY INVENTORY - PROBLEM 2 IIIPUT FILES IIIVEIITORV A PRICE B OUTPUT FILES PR ICED IIIVEIITORV C UIIPRICED IUEIITORV D (PRINT) ERRORS E (PR lilT) ...-----.;....A IS GREATER FIGURE 30 FLOW-MATIC CODE (0) INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICEDtNV FILE-D ERROR FILE-E ; HSP D , E • (I) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ; IF GREATER GO TO OPERATION rll- ; IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 • (2) TRANSFER A TO D . (3) WRITE-ITEM D • (II-) JUMP TO OPERATION 8 • (5) TRANSFER A TO C • (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) • (7) WRITE-ITEM C • (8) MOVE PRODUCT-NO (A) TO PRODUCT-NO (W) • (9) READ-ITEM A ; IF END OF, DATA GO TO OPERATION 16 • (10) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (W); IF EQUAL GO TO OPERATION II OTHERWISE GO TO OPERATION J • (II) TRA~SFER (12) WRITE-ITEM E . (13) JUMP TO OPERATION 9 • (If.I.) READ-ITEM B ; I F END OF DATA GO TO OPERAT ION I . (15) JUMP TO OPERATION I . (16) TEST PRODUCT-NO (B) AGAINST ZZZZZZZZZZZZ OTHERWISE GO TO OPERATION 17 • (17) REWIND B • (18) CLOSE-OUT FILES C , D , E . (19) STOP. A TO E • IF EQUAL G~ TO OPERATION 18 (E~D) ABC MANUFACTURING COMPANY INVENTORY PROBLEM 2 FIGURE 31 65 ANALYST: _ _ _ _ _ DATE: DATA DESIGN FOR ERROR OUTPUT FILE ABC MANUFACTURING COMPANY INVENTORY PROBLEM 2 N AM E A 0 F ~ F I LE E R R 0 R ~ {). ~ F I L E 11 - ~ .~ 0 E S I GN II 11 II 11 11 II II II II 11 L ABEL ~ M M D D Y Y L 0 C 0 /J. ~ II II II II I 0 0 5 l:l 0 0 0 0 11 REE L 0 0 0 0 0 0 0 0 0 BL K II 0 0 0 0 0 0 0 0 0 0 0 BLK II 0 0 0 0 0 0 0 0 0 0 0 II 11 I L 0 C - Word location of label in label block. 11 11 0 0 I N0 3 I 1 = Yes; 0 1 = Block count desired; 0 = No. II /l I = ~o block count. II 11 I RIE E L II S E N z z z z z z z z z Z' Z Y E N0 1.) Label with reel counter. 2.) If label variable all 6' s. L AB EL M UL T I CT 11 ~ 0 English name of file. II 11 -0 0 0 -00 F0 011 CT /J. Word location of block count in last item of sentinel block. [000 to (item size-I)] II End of reel sentinel. If single reel, aI16's. E N 0 11 F I L E II S E N z z z z z z z z z z z Z L 0 C II I N /l F I R S T End of file sentinel. 0 0 0 0 Word location of sentinel in first invalid item. [000 to (item size-I)] L 0C 0 0 0 PAGE: _ _ II 0 0 0 0 0 I N II 0 0 L AST A 0 0 0 0 0 0 0 0 0 0 Word location of sentinel in last item of sentinel block. [000 to (item size-I)] ~her entries may be added here, each consisting of a title word and an information word; e.g., PAfIT{£U{tk"EN ZZlZlZz:znzx LNI1YPISf NJTE: Mter the last entry skip to the next page. FLOW-MAliC DAlA DESIGN FORM 1 ~~~ FIGURE 32a Sl.1499 66 DIVISION OF SPERRY lAND COIPORATION ANALYST: DATE: ________________________ I TE M a 0 ES I GNa tJ. tJ. fl tJ. tJ. fl Il fl fl a Il fl fl fl Il 'I T E M fl S I ZE 0 0 0 0 0 0 0 0 0 0 0 0 0 - KE y Il 1 f1 ~ ~ ~ l:::.. F I L E !:J N0 f1 Il f1 E N D 0 F Il KE y S 0 0 0 0 0 tJ. Il Il f1 !:J I 0 1,2,3,4,5,6,10,12,15,20,30,60. fl fl 0 0 0 0 Il fl fl fl ~ !:J !:J D E S !:J 0,1,2, .... ,9 = number of keys Name of field, i.f no key ~ Further key entries may be added here, each consisting' of KFY~n!YY.!MM followed by the name of the field. If there are Sub-items to be described, the descriptions are entered following the last Key entry. Sub-items' are described with two-word packets consisting of the name of the Sub-item followed by a word in the format OOOSSSOOOEEE, where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. ZERC FI iT ~U WOR ~~ is / ll'JIlYPISf NJfE: After the last entry skip to the next page. " FLOW-MAliC DAlA DES'ISN FORM2 ~~~ E N D ~ F I L E !:J D E S DIVISION Of SPEll' lAND COIPOIATION FIGURE 32b 51 ·1500 67 Now, however, there is a new kind of data to be described to FLOW-MATIe, namely, that assigned by the programmer to W-storage. This data is described to the compiler as if it were data from a file, except that none of the irrformation pertaining to the organization of a tape is applicable. In Sample Problem 2, in fact, the only necessary description is of a single field, the product number. Therefore, no item design information is written, and under the field design section only one nar~ is listed. The information required for this problem is shown below. 00 01 NAME6QFl\F!LE W-STQRAGEI166 F!ELD6DES!GN 02 03 04- 66~666666666 05 000000000000 06 07 0000021111CO 000000000000 08 END6FILE~DES } Heading 1 Sub-Head ing PRQDUCT-NQ66 4- word Field Description Sentinels Zero fill 59 END 6 F! LE~D ES This Data Design is placed on the input tape for FLOW-MATIC together with other Data Designs. It will not be stored for use in other runs, since it is designed specifically for one program. In addition, it is necessary to inform the compiler that some W-storage has been reserved by the programmer. This is done by writing a Directory for inclusion on the FLOW-MATIC input tape. The Directory is a list showing the number of words in the programmer's W-storage. 00 D! R.E CT QRYIJ.IJ.IJ. 01 ~~~~11~~661J.~1J. 02 03 04- OOWOOOOOWxxx W-STQRAGEIJ.66 END6D!RECTRY Ze 59 rO f ill END6D!RECTRY } I Header Sentinels WOOD - iW-storage always starts with the zero word. Wxxx - This is the highest number assigned tq a W-storage word by the programmer. 68 In Sample Problem 2, only one word of W-storage is used. Therefore, the Directory is: Oq DlRECT~RY666 666666666666 OOWOOOOOWOOO W-STQRAGE666 END6D!RECTRY 59 END6D!RECTRY 00 01 02 03 Zero fi 11 } Header I Sentinels The problem has now been completely prepared for FLOW-MATIC .. The arrangement of the input tape is shown in Figure 33. Note that there are two additions to the format of the tape: the W-storage Data Design, and the Di rec tory. The Directory must follow all Data Designs and p,recede the FLOW-MATIC code. FLOW-MATIC INPUT TAPE ABC MANUFACTURING COMPANY INVENTORY PROBLEM 2 INVENTORY PR ICE PRICED-INV DATA DESIGNS FOR INPUT AND OUTPUT FILES UNPRICED-INV ERROR W-STORAGE DATA DESIGNS FOR W-STORAGE DIRECTORY DIRECTORY FLOW-MATIC CODE SENT INEL BLOCK FIGURE 33 69 As implied above, it is sometimes useful to include some information under the Item section in the W-storage Data Design. For example, how can several entire items from a file be saved in W-storage? This is done by naming subitems, groups of UNIVAC words, within W-storage and entering the assigned names of such sub-items in the Item design for W-storage. This use of subitem names is exactly parallel to that discussed in Chapter 4, where the Data Designs for the input and output items are described. Suppose it were required by this problem to store both the Inventory item and Price item. Then sub-items for each item in W-storage can be named and described as shown below: 00 01 02 03 01405 06 07 08 59 NAME6QF6F! LE W-STQRAGE666 lTEM60ES!GN6 66/::'/::'6666/j666 INV-ITEM6666 000000000009 PR!CE-!TEM/::'/::' } Name of F i 1e } Header } Two word packet describing inventory item Two word packet describing price item 000010000Q..U } ENO/::'F!LE60ES Ze ro fill ENO/::'FtLE60ES ~ End i ng Sentinels } Header The corresponding Directory entry is: 00 01 02 03 Oll- 5°9 70 °lRECTQRV6/::,6 66.~!J6t~lJ.fj,/::'b./::'/::' OOWOOOOO~ W-STQRAGE666 ENO/::'O!RECTRV Zero fill EN060!RECTRV Sentinels Item names need not describe the entire W-storage area. Single field names may also be used. For example, addition of two field names to the W-storage words reserved above changes the Data Design and Directory as follows: 00 01 02 03 Oil 05 06 07 08 09 10 II 12 13 III 15 16 17 18 5"9 NAME60F6FILE W-STQRAGE666 !TEM60ES!.GN6 666666666666 INV-ITEM6666 000000000Q...Qj PRICE-ITEM66 0000 I OOOOQll F!EL060ES!GN 666666666666 . F!f lO- 166666 000012000000 000003111560 00001 I I I I 100 FIELO-266666 000013000000 0000021111CO 000000000000 EN06F!LE60ES Zero fill EN06F!LE60ES t t Name of F i 1e Header t Two for Two for } Header } wo rd packet inventory item word packet price item 00 01 02 03 Oil 5"9 O!.RECTQRY666 666666666666 OOWOOOOOWOl3 W-STQRAGE666 ENO.60!RECTRY Zero fill EN060lRECTRY } Header f Sentinels Il word packet for 1st field q word packet for 2nd field f Ending Sentinels The programmer designs the W-storage in a manner similar to the design of data files themselves, following the same general rules. Following this, he writes a Directory stating the total W-storage required. Whenever W-storage is utilized, the Directory Block must be written and it must immediately follow the blocks containing Data Designs and W-stor~ge on the input tape. (Fig. 33) 71 chapter 6 Relative Machine Coding, X-I Suppose that a problem requires a function which does not appear in the current list of FLOW-MATIC functions. Consider the concrete example in Sample Problem 3. Suppose the definition of the original Sample Problem is altered once again, by the fact that duplicate product numbers in inventory items are not errors, but additional data to be processed. These items may be considered to originate in the different production plants of the ABC Manufacturing Company, and the problem is now to find the total on-hand balance for each product, to assign the appropriate unit price, and in addition to compute the total dollar value of these balances. This total dollar value will be referred to as the extended price for each product. Again, if there is no price available to apply to a given product number, an unpriced inventory item is to be created, but now this ite.m will carry the total quantity on hand in all of the production plants. The process chart for Sample Problem 3 looks like the original (compare Figures 34.on next page and 16 on page 19), but the logical statement of the problem is quite different. 72 ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 ALL FILES SEQUENCED BY PRODUCT NUMBER PRICE MAXIMUM OF 60,000 2 WORD ITEMS LABEL: MMDDYYIOO~OI SINGLE REEL INYENTORY MAXIMUM OF 300,000 10 WORD ITEMS LABEL: MMDDYYIO.OIOI MULTI RE~L RUN 4 APPLICATION OF STANDARD PRICES, COMPUTATION OF EXTENDED PRICE OF EACH PRODUCT IN INVENTORY. UNPRICED INVENTORY '0 WORD ITEMS LABEL: MMDDYYI00401 PROBABLY SINGLE REEL, BUT MAY BE MULTI REEL FOR HIGH SPEED PRINTER PRICED INVENTORY MAXIMUM OF 60,000 10 WORD ITEMS LABEL: MMDDYYI00301 MULTI REEL Conventions (I) LABELS IN WORD 03 OF FIRST BLOCK ON EACH REEL. (2) BLOCK COUNTS IN WORD 01 OF LAST ITEM IN SENTINEL BLOCK. (3) SENTrNELS ARE ZZZZZZZZZZZY FOR END OF REEL AND ZZZZZZZZZZZZ FOR END OF FILE. THESE ARE LOCATED IN THE KEY WORD POSITION (WORD 000) OF FIRST INVALID ITEM AND LAST ITEM OF SENTINEL BLOCK .• FIGURE 34 73 Assume at the start that the first item of each of the input files is available. I Compare the product number of the Inventory item with the product number of the Price item. a. b. c. If the Inventory product number is less, go to step II. If the product numbers are equal, go on to step III. If the Price product number is less, go on to step VIII. II Prepare an Unpriced Inventory item and set step VII to second condition. Then go on to step IV. III Prepare a Priced Inventory item and set step VII to first condition. IV Store the product number and quantity from the Inventory file. V Read the next Inventory item and go on to step VI. Or', if the Inventory file is exhausted, perform step VII, wind up the problem, and stop. VI Compare the new product number with the stored product number. VII a. If the product numbers are equal, add the new quantity to the stored quantity and go back to step V. b .. If the product numbers are not equal, go to step VII. a. First condition. Insert the stored quantity (total on hand) in the Priced Inventory; compute extended price and insert it in the item; write a Priced Inventory item. Then go back to step I. b. Second condi t ion. I nsert the stored quanti ty in the Unpriced Inventory;write an Unpriced Inventory item. Then go back to step I. VIII Read the next price item, and go back to step I. The block chart for Sample Problem 3 is shown in Figure 35. BLOCK CHART ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 ASSUME FIRST ITEMS AYAILABLE PREPARE TO WRITE UNPRICED IIIVENTORY ITEM SET VII TO b PREPARE TO WRITE PRICED INYENTORY ITEM SET VII TO a IIISERT STORED QUANTI TY AIID CAlCULATE £lTEIIDFD PRICE III PREPARED ITEM IIISERT STORED QUAIITITY III PREPAItED ITEM FIGURE 35 75 The FLOW-MATIC chart in Figure 36 shows two operations which require the use of new functions; Operation 11, addition, to find the total quantity on hand; and Operation 15, multiplication, to compute the extended price for the priced inventory file. The FLOW-MATle system makes provision for functions which are not immediately available as a part of its library. These functions can be written by a UNIVAC programmer in a form called X-l~ Whenever X-I coding is to be used, an entry is made in the FLOW-MATIC code consisting of the appropriate operation number, the name "X-I", and an English statement denoting the function to be performed by the X-I cooing. Although the English statement is not processed by the compiler, it is useful in making the FLOW-MATIC program complete and understandable. The FLOW-MATIC chart (Figure 36 on pages 76 and 77) and code (Figure 37 on page 78) for Sample Probl~m 3 are completed as before, maintaining the use of English to describe the logical steps. Note particularly operations 11 and 15 which call for X-I cOding. FLOW-MATIC CHART ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 IIIPUT FILES IIIYEIITORY A PRICE B OUTPUT FILES PRICEO IIIVEIITORY C UIIPRICEO IIIYEIITORY 0 (PRIIIT) -T-RA-~:-F:-R -Hr-'-~-~-oO-: 0---ip;;..2 -A -/B3---'tt..".. FIGURE 36 76 EIIO I~~_:~~~-------------------------I IF H J FLOW-MATIC CHART ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 10 COMPARE PRODUCT NO'S A AND W IF EQUAL, OP II OTHERWISE, OP 13 A HOT EQUAL TO W .2/\ ~ 0--( 13 JUMP TO III FIGURE 36 continued 77 FLOW-MAliC CODE (0) (I) IN·PUT INVENTORY FllE-A PRICE FllE-B : OUTPUT PRtCED-tNV FILE-C UNPRICEDINV FllE-D ; HSP 0 . COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (6) ; IF GREATER GO TO OPERATION ; IF EQUAL GO TO OPERATION 5 : OTHERWISE GO TO OPERATION 2 . TRANSFER A TO D . SET OPERATION 13 TO GO TO OPERATION 18 • JUMP TO OPERATION 8 . TRANSFER A TO C . MOVE UNIT-PRICE (6) TO UNIT-PRICE (C) . SET OPERATION 13 TO GO TO OPERATION 14 • MOVE PRODUCT-NO (A) TO PRODUCT-NO (W) : QUANTITY (A) TO QUANTITY (W) , READ-ITEM A ; IF END OF DATA GO TO OPERATION 23 , COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (W) : IF EQUAL GO TO OPERATION II OTHERWISE GO TO OPERATION 13 X-I ADD QUANTITY (A) TO STORED QUANTITY (W) . JUMP TO OPERATION 9 . JUMP TO OPERATION 14 . 21 (2) (3) (~) (5) (6) (7) (8) (9) (10) (II) (12) (13) (I~) (15) (16) (I7) ( I 8) ( I9) (20) (21) (22) (23) (2~) MOVE QUANTITY (W) TO QUANTITY (C) , X-I COMPUTE EXTENDED PR I (,E AND I NSERT INC ITEM WRITE-ITEM C , JUMP TO OPERATION I MOVE QUANTITY (W) TO QUANTITY ( f' ) WRITE-ITEM 0 JUMP TO OPERATION 17 READ-ITEM B ; IF END OF DATA GO TO OPERATION I . JUMP TO OPERATION I • EXECUTE OPERATION 13 THROUGH OPERATION 17 , IF EQUAL GO TO OPERATION TEST PRODUCT-NO (8) AGAINST ZZZZZZZZZZZZ 26 ; OTHERWISE GO TO OPERATION 25 . (26) REWIND B • CLOSE-OUT FILES C , 0 . (27) STOP. (EMD) (25) ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 FIGURE 37 78 : The ~-storage design and Directory for this version of the problem are shown in Figure 38: W-STORAGE DATA DESIGN 00 01 02 C3 04 05 06 07 08 09 NAME6QFL\F!LE W-STQRAGE[\t\6 F!EL060ES!GN f:.A66666t\66/::/j PRQDUCT-M~t\6 000000000000 0000021111CO 000000000000 QUANT!TY66t\6 II 000001000000 000003111760 000000 I II I I I 12 EN06F!LE60ES 10 } Name of f i 1e } He ad e r I ! Four word packet describing quantity Ending sentineis Ze ro fill 59 Four wora packet describing product number EN06F!LE60ES DIRECTORY 00 01 02 03 Oq DIRECTORY666 6666666666066, Head e r OOWOOOOOWOOI W-STQRAGEL\66 EN060!RECTRY Zero fill 59 } Ending sentinels ENOl\DIRECTRY APC MANUFACTURING COMPANY INVENTORY PROBLEM 3 FIGURE 38 In addi tion to the above input to FLOW-MATIe, the necessary X-I sections of relative machine coding are prepared and supplied to the compiler. "This is a job for a person trained in UNIVAC cOding since it entails the use of machine instructions. It does not, however, involve the lIse of actual machine addresses; rather, a system of relative and symbolic aOdresses, associated with the prepareo item designs and field descriptions, is utilized. FLOWMATIe accepts these X-I sections as input, includes them in the sequence of operations as directed by the attached operation number, and converts the COder's symbolic and relative addresses to actual machine addresses. 79 In order to write the required X-I coding the programmer needs the following information frow the writer of the program: (1) the operation number of the X-I section which is to be written, (2) the description of the function to be performed. (3) the Data Designs and file letters of the files or items to be operated upon. The FLOW-MATIC code, together with the Data Designs, is often sufficient information to describe the function to be coded, if the descriptive English in the X-I operations is complete. Detailed instructions for the use of the UNIVAC programmer in writing X-I sections are included in Appendix C. The prepared X-I sections are Unityped on the input tape following the FLOWMATIC code. The necessary sections for this Sample Problem are shown in Figure 39: RELATIVE MACHINE CODING 00 01 02 03 09 10 II 12 13 19 X- I t::l:~J::j6.6.t:.O I I BOWOOIA-AOOI COWOO I .-.....' EN06SUBI?QUTN EN06.SUBI?OUTN X-I6.6t:.t:.t:.6015 LOCOO I PO"C002 J OC 003 "'-' EN06.SUBRQUTN EN06sUBRQ.UTN Zero fill remainder of block } } \ } } I I He ad e r Body of Coding Sentinels He ad e r Body of COding Sentinels F ill 59 ABC MANUFACTURING cpr\I'PANY INVENTORY PROBLEM 3 FIGURE 39 80 The input tape for Sample Problem 3 in Figure 40 shows the use of all present options in the FLOW-MATIC System. To summarize, a FLOW-MATIC input tape may contain: *(11 Data Designs for the input and output files. These may be stored on the library tape for the system. *(21 Data Design for W-storage. This mayor may not be required, de- pending on the problem. *(31 The Directory. Required if W-storage is used. (41 FLOW-MATIC code. *(51 X-I Code sections. Required if called for in Fl.OW-MATIC code. (6) Ending sentinel block. * Opt ional In summary the uption of including X-I coded sections purposes: IS provided for two (1) To allow a UNIVAC programmer to code a specialized function which does not have wide enough application to warrant permanent inclusion as a FLOW-MArIC library funct. ion. (2) To allow a UNIVAC programmer to code a needed function which does not yet exist as a FLOW-MArIC operation. The list of FLOW-MATIC functions will gruw as application of the compiler indicates additional useful functions. Experience indicates that a large proportion of data-processing programs can be written by combining existing FLOW-MATIC functions. Specialization of a function to meet a particular requirement is made by the proper choice of option in the FLOW-MATIC code, and by the Data Designs. A major feature of the FLOW-MATIC Library is that it contains routines capable of generating machine coding to handle a large variety of programming and data situations. Thus a single entry in the library can produce a multitude of different, specialized codes which would be prohibi tive to wri te by hand and to store on tape. 81 FLOW-MATIC INPUT TAPE ABC MANUFACTURING COMPANY INVENTORY PROBLEM 3 INVENTORY PRICE DATA DESIGNS FOR INPUT AND OUTPUT FILES PRICED-INV UNPRICED-INV W-ST~ DATA DESIGN FOR W-STORAGE AGE DIRECTORY FOR W-STORAGE DIRECTORY FLOW-MATIC CODE X-I SECTiONS X-I SECTIONS REQUIRED BY PROBLEM SENTINEL BLOCK FIGURE 40 82 chapter 7 The Flow-Matic Compiling Routine The process of preparing a problem for FLOW-MArIC has been described, using three different versions of the same basic problem. Now, what happens when the prepared input 'tape is used with FLOW-MArIC on the computer? Figure 41 is a diagram of the four major phases of the compilation: • Translation • Selection • Allocation • Process ing 83 FLOW CHART OF FLOW-MATIC PHASES TRANSLATOR (PHASE I) SELECTOR (PHASE II) ALLOCATOR (PHASE III) I I I I • PROC.ESSOR (PHASE IV) FIGURE 41 PR INT H. S. P. 1'rans.zatiQn: In this phase the FLOW-MATIC code is digested and condensed by the appropriate Glossary. Pertinent information from the stored and/or new Data Designs is added, creating the information listed in a standard format, called Operations File 1. The Translator also begins a list known as the Unedited Record, used in the final phase. Selection: The purpose of the Selector phase is to choose from the FLOWMATIC library the required functions and to produce for each operation the specialized coding to handle the fields, items, or files mentioned in the FLOW-MATIC code. These pieces of coding are also arranged in a standard format, and the entire set is called the Generated Library. In addition, during the Selector phase, supplementary information is added to Operations File 1, producing Operations File 2. Allocation: The Allocator phase works only on Operations File 2, assigning data storage areas in the Memory as required by the program, and assigning a fixed Memory address for each piece of coding listed. These fixed Memory addresses are inserted in Operations File 2, producing Operations File 3. Processing: The final phase combines Operations File 3 and the Generated Library, producing a program tape in machine code. Since all assigned locations are listed in Operations File 3, and all pieces of coding are contained in the Generated Library, the Processor simply inserts proper machine addresses in the generated pieces ~f coding and assembles them in proper order. In the Processing phase an Edited Record of the compilation is created from the Unedited Record for use both as a printed record and as an aid in debugging, if necessary. During the Processing phase, a series of printouts is given. This list gives the general layout of the program, and is designed for a programmer's use in making a Codedit or Analyzer of the program tape. In order to compile the first Sample Problem described in this manual, the appropriate tapes are mounted on the proper Uniservos, and the normal UNIVAC starting procedure is followed. (See Appendix D for detailed operating instructions. ) 85 The normal printouts which occur during the compilation of problem are: Explanation Printout FILE OOAOOOOOOOOO SERVOS 333333333333 ~ tPPI·lppppppp~ FILE OOBOOOOOOOOO SERVOS 555555555555 FILE OOCOOOOOOOOO SERVOS 666666666666 777777777777 FILE 000000000000 SERVOS II111I1II11I 222222222222 END TRANS END SELECTOR END ALLOCTR BLKS STARTS COMPILEO PROGRAM 0000 01 INITIAL BLOCK 09q.0 01 READS FOR SEGMENT 001 0000 06 CODING FOR SEGMENT 001 PROGRAM ON SERVO q. 008 BLOCKS first sample th~ Servo allocations for input and out- put fi les End of Translation End of End of Allocation Description of compiled program tape End of END PROC I Selection pa rt Processor, I A request for three TYPE IN PG. HEADER INFO type-ins I. One word for name 2. of run One word for p rog ramme r' s name 3. One word for date EDITED RECORD ON SERVO 5 119 BLOCKS End of compilation The printouts giving a description of the compiled program tape show that not all of the blocks are arranged to fall into consecutive storage locations. The compiled program has be~n designed so that the coding which reads in the program falls into the highest block address available. This block is later filled with data. A diagram of the compiled program tape is shown in Figure /.1.2. 86 DIAGRAM OF COMPILED FLOW-MATIC PROGRAM TAPE IN ITlAL BLOCK STARTS IN 000 CONTRO L BLOCKS READS FOR SEGMENT 01 STARTS IN 9~0 CODING FOR SEGMENT 01 STARTS IN 000 2ND BLOCK OF CODING FOR SEGMENT STARTS IN 060 THE ACTUAL CODING FOR THE PROBLEM, IN THE FOLLOWING ORDER: (I) ALL CONSTANTS (2) CODING FOR MOVEMENT OF DATA FILES (S) CO~ING FOR PROfESSING DATA WHILE IN COMPUTER STORAGE LA ST BLOCK STARTS IN 300 FIGURE 42 87 The Edited Record of compilation, a sample of which is shown in Figure contains the following: ~3, (1) A listing of the FLOW-MATIC input tape for the problem, with the exception of the Directory. It may contain Data Designs, W-Storage, FLOW-MATIC Code, X-I Sections. (2) A table showing allocation of data storage areas with their related symbolic addresses. (3) A list of the field names referred to in the FLOW-MATIC Code together with their assigned addresses, both symbolic and actual. (~) A description of the compiled program which contains for each operation number and function: (a) The assigned starting and ending lines, (b) The addresses of all constants used by the operation, (c) The addresses of all exits from, and entrances to, the operation. The compiled program tape can be tested by removing it from servo ~ where it has been written, and mounting it on the instruction tape servo. Data files and blanks are mounted on the other servos as required by the run. When Sample Problem is run, the following normal print-outs occur: Printout Explanation Action MMDDYYIOOIOI This input tape has passed the label check. This input tape has passed the label check. FLOW-MATIC code ca lIed for Hi,gh-Speed Printer output on servo I and alternate servo 2. A reel of input has been processed. None. Type-out for log purposes. None. Type-out for log purposes. Depress Block Subdivide buttons I ana 2. Hit start bar. Mount the next reel of this file on servo 3. None. Type-out for log purposes. Remove and label output tape, se rvo 6, wit h 1a be 1 and block count pr i nted. Remove and label output tape, servo J, with label and block count printed. MMDDYYI00201 B.S .,D. TAPE 111111111111 222222222222 MT NXT RL S 333333333333 MMDDYYI00102 666666666666 MMDDYYI00301 000000000073 111111111111 MMDDYYIOOqOI 000000000025 88 1 This input tape has passed the label check. A reel of output has been completed. A reel of output has been completed. Op No. 005 006 Call Word TRANSFER MOVE Start 0307 0308 Line End 0307 0309 RETURN JUMPS OP OO~ 0306 JUMPS OP 006 0308 JUMPS OP 0~7 0310 CONSTANTS 007 008 WR ITE-ITEM READ-ITEM 009 JUMP 010 READ-ITEM 0310 0311 0312 0313 Off JUMP 031Q 012 SET 0315 0310 O~ ff 0312 0313 031Q 0315 K50~ 0035 JUMPS OP C03 OP 008 0156 0311 RETURN JUMPS OP C03 0164 JUMPS OP C09 OP AI3 0312 00q9 RETURN JUMPS OP AI3 0061 CONSTANTS K503 0036 JUMPS OP 001 0301 JUMPS OP 01 I OP BI3 031Q 0115 RETURN JUMPS OP BI3 0127 CONSTANTS K502 0037 JUMPS OP 001 0301 JUMPS OP 002 OP 013 030Q 0316 RETURN JUMPS OP 009 OP 009 0312 0312 SAMPLE EDITED RECORD LISTING FIGURE 43 This sample shows the kind of listing produced for each problem but is not an ac tua l listing from the Sample Problems given in this manual. 89 Although the analyst originally prepared the FLOW-MATIC code he more than likely is unfamiliar with UNIVAC machine code. If detailed inspection of the program should be necessary, the Edited Record has proved entirely adequate in providing information about the program to the trained UNIVAC programmer. This allows him to assist the analyst in debugging (checking). 90 Appendix A Flow-Matic Functions, Guide For Writing Flow-Matic Code, Flow-Matic Statements 91 FLOW-MATfC FUNCTIONS For Sample Problems I, 2, 3 (This is not a complete list of available FLOW-MATIC Functions.) CLOSE-OUT: Terminates the output files and rewinds the output tapes. COMPARE: Examines two fields for magnitude and/or equality: branches accordi ngly. EXECUTE: Performs designated operation or sequence of operations. INPUT: Identifies the input and output files to be used and supplies the first item of each input file. JUMP: Alters the normal sequence of operations and follows the directed path. MOVE: PLaces one or many fields of data in any other fields. READ-I TEM: Supplies the next item 9f an input file. When there is no more data, terminates the file and takes the directed path within the problem. REWlND: Rewinds current reel of an input file. SET: Alters an operation, changing the order of execution. STOP: Rewinds the instruction tape and terminates the problem. TEST: Examines the field and a constant for magnitude and/or ty; branches accordingly. TRANSFER: Places one item or group of words in any other item or group of words of equal size. WR I TE - ITEM: Sends an output item to the output file. equali~ GUIDE FOR WRITING FLOW-MATIC CODE 1. A FLOW-MATIC code word contains a maximum of twelve digits, none of which is a space (~). 2. FLOW-MATIC code words are separated by spaces 3. Each statement (operation) contains up to a maximum of sixty FLOW-MATIC code words: ~. (~IS). a) excluding the operation number and ending period, b) including all other words and punctuation marks. Punctuation is according to proper English usage: a) punctuation marks count as words, b) only the ending period is of critical importance. 5. Assigned field names or file names may contain hyphens if it is desirable to combine more than one English word into a single name. 6. Assigned field names are always followed immediately by the pertinent file letter enclosed in parentheses: a) in all other cases the file letter is not parenthesized. 7. All operation numbers are numeric. 8. The operation number sequence starts with zero: a) 9. The operations are written in unbroken numeric sequence: a) 10. operation zero is always the input statement. there may be a maximum of 999 separate operations. The,last operation must be the stop operation followed by the word END in parentheses. 93 FORMAT FOR FLOW-MATIC CODE 1. It is recommended that each operation begin a new blockette. statement may be space-filled to the end of the given blockette. Each 2. The final block of FLOW-MATIC code must terminate with at least twelve full digits of spaces (~IS). 3. The blocks (s) of FLOW-MATIC code and X-I sections, if needed, are followed by a sentinel block containing Z's in words 000 and 059. LEGEND FOR DESCRIPTIONS OF OPERATIONS 1. Lower case indicates information to be supplied by the programmer. 2. Brackets [ ] indicate options available to the programmer. 3. h = present operation number hI' h2' h 3 .. · = other operation numbers. ~. fl' f2' f 3 .·. = file 5. sl' s2' s3'" = servo 6. field-name = name letters assigned by programmer. numbers assigned by programmer. assigned by programmer to data field. e.g., STOCK- NUMBER 7 file-name = name assigned by programmer to data file, e.g., INVENTORY FLOW-MATIC LIBRARY ROUTINES (FLOW-MATIC CODE FORMAT)* CLOSE-OUT COMPARE Option 1 (h)~CQMPARE~field-name~(fl)~WITH~field-~ame~(f2)~ ;~IF~EQUAL~GQ~TQ~QPERATIQN~nl~ ;~QTHERWISE6GQ~TQ~QPERATIQN~h2~· Option 2 (h )~CQMPARE~field-nametd f 1) ~ WITHl\field-name~( f 2) ~ ;~IF~GREATER~GQ~TQ~QPERATIQN~hl~ ;l\QTHERWISE~GQl\TQl\QPERATIQNl\h2~· Option 3 (h)~CQMPAR~field-nam~(fl}~WITHAfield-name~(f2)~ ;6IF~EQUAL~GQ6TQ~QPERATIQN~hl~ ;~IFAGREATER~GQ~TQ~QPERATIQN~h2A ;6QTHERWISE~GQ~TQ6QPERATIQN~h3~· Option IJ (h)~OQMPARE~field-name~(fl)~WITH6field-namel\(f2)~ ;~IFAGREATERllGQ6TQAQPERATIQN~hl~ ;6IF6EQUALAGQ~TQ6QPERATIQN6h2l\ ;AQTHER~ISE6GQATQ6qPERATIQN6h3/1· EXECUTE (h)~EXECUTE6QPERATIQN~h16[THRQUGHt\QPERATIQN~h2l\]· • Although the ftDW-MATIC code statements for the Sample Problems do not show expl ici tly the sl,aces (6- 8) between word., they are included here for completeness and accuracy. 95 INPUT SPECIAL NOTES 1. The assigned file-name may not begin with the digits FILE-. 2. If servo numbers are not specified, the iompiler will assign them, reserving the proper servos for tapes for HSP or TIC, as stated~. 3. For a single input file, continuous reads will be provided. For two or three, way input, standby coding will be provided, unless preselection is specified. Up to.eight way input coding will be provided in the preselection option, and up to five full-word keys may be used. ~. The normal and error print~outs which may occur in the execution of this coding are self-explanatory. In addition, b~eakpoint 1 is used throughout the coding to provide operating options. For example, if a tape label fails the check, an error print-out gives this information to the operator; he may then force transfer on breakpoint 1 to proceed, if desired. In all cases where it is desired to bypass the error, the action is to force transfer on breakpoint 1. s. If it is desired to begin the problem over, the operating instructions are: a - Rewind all tapes except the instruction tape. b - Clear C and rIo c - No transfer on Breakpoint 2. This coding is always provided. 96 6. If rerun cOding has been requested, the operating instructions are: a - Rewind all tapes except the instruction tape. b - Clear C and rIo c - Force transfer on Breakpoint 2. The problem will be resumed from the last completed output reel, as specified in the input statement. JUMP (h)6JUHP6TQ6QPERATIQN6h 16. MOVE (h) 6MQVE6field-nametd f 1) 6TQ6field . . . name6( f 2) 6 [,6: ield-name6 ( f 3) 6 & ,6field-name6(fn)~J [;6field-name6(f 1 ' )6TQ6field-name6(f2')~ r ,6field-name6(f3')~ ,6field-name6(f n ' )61. REAO-/ TEM (h)AREAD-ITEH~fl~[;~IF6END~QF!\DATA6GQ6TQ6QPERATIQN6h161. sr Eel Al NOTES 1. Each input file mentioned in the INPUT statement must have at least one READ-ITEM operation. 2. At least one READ-ITEM operation, for each input file, must include the optional phrase, IF END OF DATA ..... . 3. If two or more READ-ITEM operations, for a single input .file, include the IF END OF DATA ...•... option, the operation numbers, hI' must be identical. REW INO SET (h)6SET6QPERATIQN6h 16TQ6GQ6TQL1QPERATIQN6h 26 [,6QPERATIQNL1h3L1TQ~GQ~TQ~QPERATIQN~h4~ ,~QPERATIQN~h5~T.Q~GQ~TQL1QPERATIQNl\h6~1. 97 (h)L)STOPL).L)(END) STOP SP ECI AL NOTES The stop operation must be. the highest numbered operation in the problem, and it must be followed by the word END in parentheses. 1. TEST Option 1 (h)~TEST[)field-nameL)(fl)[)AGAINST[)test-val~eL) ; [)IF[)GREATERL)GQt\TQL)QPERATIQNL)h 1 [) ; [)IF'[)EQUAUGQ~TQ[)QPERATIQN[)h 2L) ( ; ~AGAINSTL) ... [)] ;[)QTHERWISEL)GQL)TQL)QPERATIQN[)h 3 L): Option 2 (h)6TEST[)field-name[)(fl)6AGAINST[)test-value~ ;~IF6GREATER6GQ6TQ[)QPERATIQN6hlL) ;~IFL)LESS6GQ6TQ6QPERATIQNL)h2L) [ ; .6AGAINST~ ... ~ 1 ;~QTHERWISE~GQL)TQ6QPERATIQNL)h3L)· Option 3 (h)L)TESTL)field-name[)(fl)~AGAINST~test-valueL) ;~IF6UNEQUAL6GQ[)TQ~QPERATIQN~hl[) [ ; ~AGAINST~ ..• ~ 1 ;L)QTHERWISE~GQ[)TQL)QPERATIQN[)h2[)· SPECIAL NOTES 1. The conditional phrases, IF GREATER, IF EQUAL, IF LESS, shown in Option 1 and 2 may appear singly or in any order in combinations of two. The phrase OTHERWISE must always appear, and must be writt~n last. 2. If it is desired to use a test value of spaces or per~pos, the words SPACE, PERIOD, SPACES, or PERIODS should be used instead of the actual digits. In these cases, only one test value is acceptable. In all other cases, tests against many test values may be made in one operation. TRANSFER Option 1 (h)[)TRANSFER[)fl[)TQ~f2~· Option 2 (h)[)TRANSFER[)sub-item-name~IN[)fl[)TQL)f2~· 98 Option 3 (h)~TRANSFER~fI~TQ~sub-item-name~IN~f2~· Option (h)~TRANSFER~sub-item-name~IN~f16TQ~sub-item-name~IN~f2~. 4 SPECIAL NOTES 1. Item or sub-item sizes in fi and f2 must be equal in size. WRITE-ITEM 99 .. Appendix B Data Design Pre-Printed Forms 101 PAGE: _ _ ANALYST: _ _ _ _ _ _ _ _ __ DATE: _____________________ N AM E fJ. - 0 F fl F I L E English name of file. F I L E fl 0 E S I GN~ ~ fl l!l l!l l!l II l!l l!l l!l fl ~. ~ L AB E L l!l 'l!l l!l l!l l!l l!l l!l 1.) Label with reel counter. 2.) If label variable· all ~' s. L 0 C 6 0 0 0 0 0 0 0 0 0 MU L T I l!l REE L 0 0 0 0 0 0 0 0 BL K Il - 0 F - l!l L AB EL Word location of label in label block. l!l II 0 0 0 1 = Yes; 0 = No. '-- CT ~ I N '0 fl II 0 0 0 0 0 0 0 0 0 0' 0 BLK fl CT 0 0 0 Q 0 0 E N0 Il II - L0 C 1 fl fl Word location of block count in last item of sentinel block. [000 to (item size-I)] 0 0 0 REEL I1 = Block count desired; 0 = No block count. S EN : : END End of reel sentinel. If single reel, al16's. II F I! L E II SEN End of file sentinel. - L 0 C fl I N ~ F I RST O· 0 0 0 0 0 0 0 0 L Qc I N fl II LAS T Word location of sentinel in first invalid item. [000 to (item size-I)] fl Word location of sentinel in last item of sentinel block. [000 to (item size-I)] 0 0 0 0 0 0 0 0 0 o Other entries may be added here, each consisting of a title word and an information word; e. g. t PARf~~~ 122ZZl.1ZlZlY.. U\'1TYPIsr NJIE: After the last entry skip to the , n~xt page. FLOW-MAliC DAlA DESIGN FORM 1 R .Aayl&.ua. B....l. ~ DIVISION 0' SPIIIY .AND COI'OIATION 51.1499 102· ANALYST: PAGE: _ _ DATE: __________________- -____ I T E M Il 0 E S I G N 11 11 11 11 11 11 11 11 11 11 11 11 11 S I ZE I TEM t:a 0 0 0 0 0 0 0 0 0 - N0 11 QF tl KE y S 0 0 0 0 0 0 0 0 K E -y 1 11 11 t:a 11 1,2,3,4,5,6,10,12,15,20,30,60. t:a t:a 0 0 0 0,1,2, .... ,9 = number of keys t:a t:a t:a 11 t:a 11 11 Name of field, if no key ~ Further key entries may be added here, each consisting of KFY~n6~ followed by the name of the field. If there are Sub-items to be described, the descriptions are entered following the last Key entry. Sub-items are described with two-word packets consisting of the name of the Sub-item followed by a word in the format OOOSSSOOOEEE., where SSS is the first word and EEE is the last word of the Sub-item, relative to the entire item. l~I1YPIsr NJfE: After the last entry skip to the next page. " FLOW-MATIC DATA DESIGN FORM 2 ~1oaR..tL~ DIVISION Of SPERRV RAND CORPORATION 51.1500 103 ANALYST: ____________________ PAGE: _ _ DATE: ------_________________ F I EL 0 -A A fj ~ 0 E S I GN A A A A A A 6 A A Name of field. 0 0 0 0 a 0 0 0 a 0 a 0 0 0 0 Word location in item. [000 to (item size-I)} Field descriptor of form OOOOOTPPSLNO* Extractor; if full-word field, all 0' s. 0 a a 0 a 0 a 0 a a 0 0 a 0 0 0 0 0 0 a 0 0 a 0 a 0 a a a a 0 0 0 0 a 0 0 a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 a 0 a. 0 0 0 0 0 An unlimited number of fields may be described using the same four-word packet format. * Explanation of field descriptor: T = Type of field. 1 - alphabetic 2 - alpha-numeric 3 - numeric PP = Position of decimal point in relation to a reference point immediately to the left of the left-most digit of the field. 00 - coincident with reference point ii - not applicable nL - n positions to the left of the reference point nR- n positions to the. right of the reference point (n ; 1,2, ... ,9,A,B, ... ,Z) S = Digit position of the sign. I,2, •.. ,9,A,B, or C i-not applicable L = Digit position of the left-most digit of the field, excluding sign. I,~, ... ,9,A,B, or C N = Number of digits in the field, excluding sign. 1,2, ... ,9,A,B, or C (A = 10, B = 11, C = 12) NOIE: Place the sentinel. ENDi1FILEi1DES immediately following the last fourword packet and in word 059 of that block. 0 0 0 0 FLOW-MAliC DAlA DESIGN FO RM 3 ~Rsnd~ DIVISION OF SP£ RRY RAND CORPORATION S1-.1501 1011 Appendix C Relative Machine Coding, X-I 105 X-I sections of a FLOW-MATIC program are hano-tailored sections of coding. Actual machine instructions are used, but a system of relative and symbolic addressing is used in place of actual machine locations. These X-I addresses are always a combination of an alphabetic character together. with three numeric digi ts. Use To address a field within an input or output item, or the item itself. The alphabetic is the assigned file letter of the field or item; the numeric is the word location within the item. Alphabetic A B C Numeric through item size minus one. 000 D E F G H I To address a field or unit in W-storage. The alphabetic is always W; the numeric is the word location within W-storage. W To address a line of coding within this particular section. The alphabetic, M, indicates that this relative address is to be modified by the addition of the starting line assigned by the compiler. 106 th rough maximum assigned by prog rammer in Di rectory. 000 th rough maximum useO by coder in this section. 000 To address a line of coding in another X-I section. The operation number of the section referred to is also required, and must follow the J notation in the next line of coding as: UOJ011 ooooOOQP.021 meaning "jump to line MOll of X- 1 ope rat ion 21." J 000 through number of last line of coding in X-I. section referred to. To address a temporary storage location, that is,a location whose contents are not to be preserved for future operations. T 000 th rough maximum assigned by coder. The X-I sections are written in blockette rather than block form, starting each new section at the beginning of a blockette and continuing for as many blockettes as required. They may be typed in any order of operation numbers. The format of an X-I section is as follows: One word containing the FLOW-MATIe operation number for which the coding is wri tten, as "X-I~{jfjf.j:.,fj012." This header is not counted as an N address. Header - - The cooing is \'v°ri tten starting with line number Hooo and utilizing the appropriate address symbols given above. The extra lines ("ooooOOQP.021") used with the J notation are not counted as M addresses. Body of coding Following the ti tIe "CQNSTANTSl\fj{j", numeric or alphabetic quan tities are listed which are not to be modified by the compilation process. The title is not counted as an M address; but the actual constants are assignee M addresses in sequence with other lines of the section. These constants are stripped out by the compiler and includeo with other constants from the remainoer of the·program, and all duplicates are eliminated. Since in the final compiled program, constants are not listed in their original order, addressing a series of constants by incrementing an instruction is not permissible. If it is desired to use such a technique, and if the constants are numeric in the third and ninth digits, they may be included preceding the title as a part of the main body of coding. Any counters incremented during execution of the program must also be included in the main body of the coding, not in the Constants Section. Cons tan ts - Under the ti tIe word "CQDE"fjCQNSTANTSfJ" are listed those constants containing address symbols in the third and ninth digits whi~h are to be converted by the Compiler. The general rules stated in the preceding section apply to this group also. All X-I symbols may be used except the "J" and the "M"; whe·re it is required to use these symbols, the words containing them must be carried in the body of the coding. Code Constants - A maximum of 59 constants and code constants together may be written in any single X-I section. - the word "END{jSUBRQUTN" is written following the last line of the section and in word 09 of the blockette (not necessarily in 59 of the block). A subsequent X-I section begins (with the header) in word 00 of the next blockette, and any partial blocks are simply zero filled. End Sentinel 107 Since the constants and code constants are removed by the compiler, and placed in a constant pool for the entire program, the exit from an X-I section is normally through the la°st line of coding to the next FLOW-MATIC operation. If it is desired that this exit be other than the last line of coding, the programmer uses the J notation to address line 000 of the next operation. A non-functional section of X-l coding, which illustrates all of the above comments, is shown in Figure ijij on page 109. Normal Printouts During compilation: None Error Printouts During compilation (Selector Phase) Prin tou t Meaning Action CANNQT6FIND6 X-I666666hhh SUBRQUTN6QN6 INPUT6TAPE66 Operation hhh in FLOW-MATIC code calls for an X-I section, but no section wi th this number appears on the input tape. Type in correct header as X-ll1tJtJl1l1l1hhh BAD6ADDRESS6 oOHMMHOOOO00 Type in corrected line of coding CCCCCCCCCCCC CCCCCCCCCCCC Line HMMM of X-I section hhh contains an alphabetic other than A-I, J, M, T, W, as shown in CCCCCCCCCCCC. WRQNG6REL6AD X-11111661111hhh OOMNMMOOOOOO CCCCCCCCCCCC Line MMMM of X-I section hhh contains an M reference greater than the M address of the last line of the section. Type in corrected line of coding, CCCCCCCCCCCC CANNQT!J.USE!J.6 X-I!J.66!J.!J.lJhhh OOHMHHOOOOOO CCCCCCCCCCCC Line M}~~1 of X-I section hhh is a code constant and contains a reference to a non-permissible M address. Type in corrected 1 ine of coding, CCCCCCCCCCCC ioJxxxioJyyy The printout shows a line of coding which has at least one J address, but no line with op nos. follows it (where i equals any instruction. ) Type in op no. or op nos. as QP.hhh in proper halfworo( s) . HALF!J. "QRD6116 ADDRESS!J.IN66 X-166/J./J./J.b.hhh OOMMMMOOOOOO CCCCCCOOOOOO Line MNMM of X-I section hhh contains an invalid file letter as shown in instruction CCCCCC. Type in correciion CCCCCCOOOOOO. X-I666~!J.!J.hhh 108 SAMPLE X-I SECTION Symbolic Address Block Address 00 01 02 03 04 X.l~~~~~~Ol2 f Header MOOO MOOl BOAOOILOMOO8 - - - - QOM006 A.M009COAOOl 06 07 08 09 HOMOOOUOJOOO MOO2 M003 M004 M005 QP.013 BOM012COMOOO M006 10 ·11 12 CQN~TANTS~~~ f 000000000001 I 05 13 14 15 16 17 18 19 BOMOOOA·MOI0 LOMOIIQOM006 - M007 UOMOOO 000006000006 000001000000 CQDE~CQNSTS~ BOAOI0LOM008 BOAOOOLOM008 END~SUBRQUTN - Body of Cod in 9 t ~ Tit1e M008 Constants M009 MOI0 Title Code Constants MOll M012 - END~SUBROUTN FIGURE 44 109 Appendix D Flow-Matic Operating Instructions III FLOW-MATIC COMPILATION The following information about the operation of a FLOW-MATIe compilation indicates the print-outs and action to be taken for a normal (i.e., errorfree) compilation. PART I. OPERATING INSTRUCTIONS FOR COMPILATION Servo Allocation: 1 2 FLOW .. MATIe Compiler (ring) FLOW -MATIe Li b rary ( ring) Blanks FLOW-MATIe Code 9 (ring) Blank (Rerun) Initial Instructions: a. b. c. d. Nount tapes as indicatea above. Supervisory Control Printer on normal. No block sUbdivision.* Ini tial read servo 1 (compiler) and hi t start bar. Breakpoints: 1 S Force no transfer to omi t use of servo 9 for Rerun. Release after Block Subdividing servo 5. * It is necessary to BSD servo 5 in order to allow the Edited Record to be printed. To achieve this, set breakpoint 5 at start of compilation and follow instructions in NORMAL PRINTOpTS. I 12 PART I I. NORMAL PRINT -OUTS DURING COMP I LA TION Print-Out Ac t ion FILE OOfOOOO00000 SERVOS daadaaaaaaaa bbbbbbbbbobb FILE OOfOOOOOOOOO SERVOS aaadaddaadaa bbbbbbbbbbbb None END TRANS END SELECTOR END ALLOCTR COMPI LED PROGRA~1 INITIAL BLOCK READS FOR SEGMENT RERUN None None None None STARTS 0000 001 09-1-0 09+0 0760 00('0 CODING FOR SEGMENT 001 CODING FOR SEGMENT 002 CCCC BLOCKS DODD PROGRAM ON SERVO 4 END PROC I. 8.S.D. SERVO 5 EDITED RECORD ON SERVO 5 YYY BLOCKS dadddddddddd = servo nU~Oer for initial reel bbbbbbbbbbbb = servo number for alternate reel f = input or output file letter 01 01 01 02 nn nn = number of blocks in 1st segment mm ~ nU~Der of blocks in 2ne segment, minus ecce = location of 1st block in 2nd segment DODO = location of last clock in 2nd segment mm 01 (see Cyel ing) xxx = total XXX BLOCKS TYPE IN PG. HEADER INFO Exp lana t ion nu~ber of blocks in cOMpiled tape None Block subdivide servo 5, re lease breakpoint ~5 and hit start bar Type in three (3) words of run identification e.g\, name of run, programmer, date None YYY = number of blocks in EDITED RECORD CYCLING Note that the last block of the second, third, .... , segments may have a special address, out of sequence with the other blocks in the segment. This occurs when the last block of a segment is a partial block. The compiler automatically arranges to repeat as much of the coding of the preceding block as necessary; then it compiles the partial block of coding, and arranges the read instructions for the tape so that this last block will overlay the repeated coding. This technique is employed to allow the maximum amount of memory space for each subsequent segment. 113 PART III. PRINTING THE EDITED RECORD The printer plugboard should be a non-split, The paper loop should be a standard, Row 132 board. 1:1 row loop with the following punches: Channel 1 7 2 1 67 7 68 1 Set the printer for normal, single space operation. t III Index Charts Process Genera I, 15 Block General,IS-20 Examples, figs. 16, 17,29, 35 Edited Record Listing Genera 1, 88 Example, fig. 4-3 Error Printouts during compilation, 108 Flow-Matic General, 21-22, 26-29 Examples, figs. IS, 2i, 22, 30, 36 Flow-Matic Functional Statements, Chap. 3 General Description, 92 Coding, Relative Machine Coding format, 95-99 General, Chapter 6, App. C Guide for writing, 30-33, 93 Examples, figs. 39, ijij position on input tape, fig. ijO Examples, 19, 23, 31, 37 Compjler General, 83-90, figs. 20, Itl Operating instructions, App. D Format for Flow-Matic Code Gene ra I, 93-94Legend. 94- Functions. description of, 92 Data Design General, 23, Chap. ij File Design General, 38-40 Examples, figs. 26a, 26d, 26g, 26j, 32a Item Design Gene ra 1, 16-18, ij l-ij2 Examples, figs. 25, 26b, 26e, 26h Field Design Gene ra I, 4-3-ij5 Examples, figs. 26c, 26f, 26i. 261 Forms, Pre-printed, App. B Directory, 68 Layout, input tape, 33, 4-0, 42 Operdting Instructions, see Compi ler Progrdm tape layout, fig. 4-2 see Edited Record Listing Working Storage (W-Storage), Chap. 5 Examples, 68, 70 Examples, 68, 70, 71 Position on input tape, figs. 33, ijO Position on input tape, figs. 33, ijO 115 Univac II Systems . For data-automation which involves large volumes of input and output. THE UNIV AC@ FAMILY Uni v ac Fi Ie - Computer . For ins tantaneous random access to large - ~cale internal storage-- plus computation. Uni vac 60 & 120 Computers · For speeding and simplifying the procedures . of punched ·card 'lystem~. ·OF ELECTRONIC COMPUTERS Univac Scientific Systems • For complex and intricate computations of engineering and resftarch.
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.3 Linearized : No XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-21:37:19 Create Date : 2017:08:11 09:15:23-08:00 Modify Date : 2017:08:11 09:30-07:00 Metadata Date : 2017:08:11 09:30-07:00 Producer : Adobe Acrobat 9.0 Paper Capture Plug-in Format : application/pdf Document ID : uuid:c3fe972a-c087-e848-a9ad-ccb883fd71a7 Instance ID : uuid:f7f295d2-1966-7342-b2ae-8177d929dbde Page Layout : SinglePage Page Mode : UseNone Page Count : 126EXIF Metadata provided by EXIF.tools