J. GREEN, Asst . ~di t or, Pr ogr ammi ng Languages E. LOHSE, Asst. Editor, I nf or mat i on Interchange A Description of the APT Language* S. A. BROWN, C. E. D~AYTO~, B. 1V[ITTMAN I I T Research Institute,t Chicago, Illinois The APT ( Automatically Programmed Tools) l angu age for numerical control programming is described using the metalinguistic notation introduced in the ALGOL 60 report. Examples of APT usage ar e included. Presented also ar e an historical summary of the dev el opment of APT and a statement concerning its present status. INTRODUCTION The application of numerical control (N/C) to manu- facturing has increased steadily in importance since its feasibility was demonstrated by MIT' s Servo-mechanisms Laboratory in 1952. The introduction of the computer to assist in the preparation of the numerical control in- formation has been a key to practical utilization of N/ C for a variety of manufacturing processes. In contour milling, for example, it is often necessary to approximate a space curve by straight line segments (cuts) within a few thousandths of an inch. tolerance. To accomplish this one may require the generation of thousands of coordinate points lying on the curve (or within tolerance of the curve) and for each of these points a cutter-radial offset must be calculated to determine the cutter center path. A great number of computer systems have been de- veloped for numerical control programming. Among these are APT, WALDO, AUTOPROMT, SPLIT, AUTOSPOT, AUTOMAP, etc. APT (Automatically Programmed Tools) is the most general and most widely used of these systems. The current APT system is presently available on one large scale computer and is being imple- mented on others. The APT system is in daily use in a number of manufacturing organizations. In this paper the development of APT is summarized, its present status is discussed, and its language char- acteristics are described. Historical Summary In 1955, a prototype APT system was coded for the Whirlwind computer at MIT to demonstrate feasibility. * Recei ved August 15, 1963. t For mer l y Ar mour Research F oundat i on of Il l i noi s I ns t i t ut e of Technol ogy. This rudimentary version required the programmer to specify the endpoints of each straight line cut to be per- formed by the machine tool. In 1957, member organiza- tions of the Aerospace Industries Association (AIA), in cooperation with MIT, undertook further development of the APT system. As a result of this development, a more advanced system was prepared for the IBM 704 in 1958. This system, called APT II, relieved the pro- grammer of the responsibility of computing successive cutter locations and enabled him to describe the curve in an artificial language resembling English [1]. The APT sys- tem provided a language translator. This was the begin- ning of the APT language as we know it today, a language which permits the so-called part programmer to describe the part to be machined and the functions to be per- formed on t hat part. Several versions of APT II have been used successfully in production by many aerospace companies. A still more effective system, known as APT III, was produced for the IBM 7090 as a cooperative AIA project and was released in December of 1961 [2]. During 1961, realizing that the APT concept was practical, but that its capabilities and potential had been just barely tapped, the AIA established the APT Long Range Program. Armour Research Foundation (now the IIT Research Institute) was selected to assume main- tenance and validation responsibility for the existing APT system, and to direct the future course of a long- range developmental program. At the same time, the APT system, which previously had been available only to AIA members, was made available to any American company or government facility which desired to participate in the program. Companies joining the APT Long Range Program receive the complete APT system, documenta- tion, training, etc., and by participating, help to under- write the cost of further development. Vol ume 6 / Numbe r l l / Nove mbe r , 1963 Co mmu n i c a t i o n s o f t h e ACM 649 St at us of t h e APT Sys t em Besides the APT system on the I BM 7090, k~n!vac is developing APT for the UNIVAC 1107 and other con> put er implementations are being studied. In addition, under an Air Force cont ract early in 1963, I BM demon- strated the feasibility of implementing a substantial subset of APT on a small comput er [3]. This subset, known as ADAPT, or comparable subsets are expected to be made available soon by a number of manufact urers of small computers. Now t hat APT and its subsets will be gaining broadening utility, a group, initiated by the X3.4 Commi t t ee on Common Programmi ng Languages of the American St andards Association, has begun to consider the desira- bility and feasibility of an organized st andardi zat i on act i vi t y for APT. This st udy is to be conducted by a group of APT and ADAPT implementors and users under the auspices of the ASA subcommittee X3.4.2. THE APT LANGUAGE General Desc ri pt i on The APT language provides the same flexibility of expression to part programmers t hat st andard program- ming languages provide to comput er programmers. Wi t h APT the part programmer can define tool shapes, tolerances, geometric definitions, direction of mot i on of t he tool, tool position relative to controlling surface, and auxiliary commands. In addition, t he part programmer cart write comput at i onal st at ement s, macros, and looping statements. The present APT language has a vocabul ary of approxi mat el y 275 words. An APT part program consists of a sequence of slate- ments, each of which contains at least one uni t of informa- tion adequat e in itself to act i vat e one complete function of the APT system or to describe fully one pert i nent condition or fact. Examples of APT st at ement s are: COOLNT/ FLOOD GO TO/ SETPT L1 = LI NE/ PT1, PT2 Tur n on coolant at t he flood set t i ng Move tool to a poi nt symbolically desig- nat ed as " SETPT" L1 is the symbolic designation of a line passing t hrough points PT1 and PT2 Most APT st at ement s are divided into two sections separated by a slash. The "maj or " word appears to the left of the slash. The secondary section, if required, ap- pears to the right of the slash and contains necessary modifiers to t he maj or word. Nesting is allowable, i.e. secondary sections may themselves be sectionalized. For example: GO TO/(POINT/LIN 1, LIN 2) Move the tool to a point which is the intersection of two pre- viously defined lines, LIN 1 and LIN 2. The following sections contain a general description of the APT language as implemented for the I BM 7090. The not at i on used is identical to the metalanguage for syntactic description which was employed in previous ALGOL [4] and NELIAC [5] reports. The basic symbols of the metalanguage are: :: = connective meaning "is defined to be" I connective meaning "or " ( } delimiting brackets enclosing metalinguistic variables I t should be pointed out t hat for brevi t y, the entire APT language has not been included in this report. An effort has been made, however, to present the synt ax in sufficient detail to illustrate the scope of APT expression in nu- merical control programming. 1.0 Basi c Symbol s , Identi f i ers, Numbers , St ri ngs 1.0.1 Semantics. The APT language is composed of a number of basic symbols. 1.0.2 Syntax (basic symbol) :: = (letter) I (digit) [ (delimiter) 1.1 LETTERS 1.1.1 Semantics. The upper-case, Roman al phabet is used to form identifiers and strings. 1.1.2 Syntax (letter) : : = A I BI CI D IE IF [ GI H I I [ J I K] LI MI N[ OI PI QI R] SI T[ U! VI WI XI YI Z 1.2 DIGITS 1.2.1 ,Semantics. Decimal digits are used to form identifiers, numbers, and strings. 1.2.2 Syntax (digit) : : = 011 [ 2] 3 [ 415 [6 I 718 [9 1.3 DELIMITERS 1.3.1 Semantics. Delimiters are combinations of one or more basic symbols which have fixed meanings within the language and therefore themselves form basic symbols. 1.3.2 Syntax (delimiter) :: = (operator) 1 (separator) } (vocabulary word) (separator) ::= , ] (I) (operator) : : = + I -- I * [/ I** (vocabulary word) :: = (entry in APT vocabulary list) I 1.3.3 Examples GOLFT + ( ) COOLNT CUTTER 1.4 IDENTIFIERS 1.4.1 Semantics. Identifiers are strings of from one to six letters and digits. Except for a label which may consist entirely of digits, a valid identifier must include at least one letter. 1.4.2 Syntax (identifier) :: = (letter) I (digit} (identifier) ] (identifier) (digit) I (identifier) (letter) 1 See Appendix A, APT Vocabulary List. 650 Co mmu n i c a t i o n s o f t he ACM Vo l u me 6 / Numbe r 11 / November , 1963 1.4.3 Examples ABLE 123A6 74X X74 1.5 NUMBERS 1.5.1 Semantics. A number consi st s of f r om 1 t o 12 char act er s, i ncl udi ng t he deci mal poi nt . Consi der ed as an i nt eger, wi t hout a deci mal poi nt , a number ma y not be gr eat er t han 34,359,738,367 = 235 -- 1. F l oat i ng poi nt is t he onl y t ype of number used for APT comput at i ons . 1.5.2 Syntax (number} :: = (unsigned number} I + (unsigned number} ] - (unsigned number} 2.2 (unsigned number} :: = (unsigned integer} [ (decimal fraction} I (unsigned integer) (decimal fraction} (decimal fraction} : : = .(unsigned integer) (unsigned integer} : : = (digit} [ (unsigned integer) (digit} 1.5.3 Examples 0 o. 0.1324 +7362 --7361 7360. 7360 1.6 STRINGS 1.6.1 Semantics. St r i ngs ar e sequences of basi c symbol s not exceedi ng 66 char act er s i n l engt h. 1.6.2 Syntax 2.3 (string} :: = (any sequence of basic symbols} I (null) (null} :: = 1.6.3 Examples 29666XQLF**) 0 ( THIS IS A STRING 1.7 REMARKS 1.7.1 Semantics. Re ma r ks ar e t ext i nser t ed wi t hi n t he body of an APT pr ogr am t o enhance r ead- abi l i t y. The y have no ot her si gni fi cance. 1.7.2 Syntax (remark) :: = REMARK (string} 1.7.3 Example REMARK THIS IS A REMARK 2. 0 Expr e s s i ons 2.0.1 Semantics. An expr essi on is a rul e for de- 2.4 fi ni ng a geomet r i c ent i t y or comput i ng a nu- mer i cal val ue. 2.0.2 Syntax (expression} :: = (arithmetic expression) I (geometric expression} 2.1 VAmASLES 2.1.1 Semantics. A var i abl e is an i dent i f i er t hat has been assi gned as t he name of t he geomet r i c ent i t y or nmner i cal val ue defi ned by an ex- pressi on. I t ma y be used in pl ace of t he expressi on at succeedi ng occur r ences of t ha t expressi on. 2.1.2 Syntax (variable} : : = (simple variable} I (subscripted variable} (subscripted variable} : : = (array identifier} ((subscript expression}} (array identifier} :: = (identifier} (subscript expression) :: = (arithmetic expression} (simple variable} :: = (identifier} (arithmetic variable} :: = (variable assigned to an arithmetic expression} (geometric variable} : : = (variable assigned to a geometric expression} 2.1.3 Examples A h(3) A(A(6)) FUNCTION DESIGNATORS 2.2.1 Semantics. F unct i on desi gnat or s defi ne si ngl e ar i t hmet i c val ues accor di ng t o speci al al gor i t hms bui l t i nt o t he APT syst em. 2.2.2 Syntax (function designator} : : = (function identifier} ((function parameter list}} (function parameter list} : : = (expression} I (variable} [ (function parameter list}, (function parameter list} (function identifier} : : = DOTF I SQRTF I SINF [ COSF I EXPF I LOGF ] ATANF [ABSF ! LNTHF 2.2.3 Examples SINF (A + B) LNTHF (VECTOR/P1, P2) ARITHMETIC EXPRESSIONS 2.3.1 Semantics. An ar i t hmet i c expr essi on is a rul e for comput i ng a nmner i cal val ue. 2. 3. 2 Syntax (arithmetic expression} :: = (term} I (adding operator} (term} ] (arithmetic expression} (adding operator} (term} (term) : : = (factor) I (term} (multiplying operator} (factor} (factor} :: = (primary} [ (factor} ** (primary} (primary} :: = (unsigned number} ] (arithmetic variable} I(function designator) J ((arithmetic expression}) (multiplying operator} :: = * [ / (adding operator} :: = +1 - 2.3.3 Examples A + COSF(A+B+6.02/4)/JKL A(7) + COSF( Q( 6 +I +X) ) GEOMETRIC EXPRESSIONS 2.4.1 Semantics. A geomet r i c expressi on is a rul e for defi ni ng a geomet r i c ent i t y, such as circle, line, sphere, etc. The specific ent i t y is speci fi ed by a geomet r i c f or m word. F or each geomet r i c f or m t her e ar e f r om 1 t o 14 di f f er ent met hods of defi ni t i on. The specific or gani zat i on of expres- sions, var i abl es, and modi fi ers (a subcl ass of voc a bul a r y wor ds used as descr i pt or s) i n a pa r a me t e r l i st det er mi nes whi ch specific defi ni - t i on scheme is t o be used. Sever al exampl e geomet r i c defi ni t i ons ar e pr esent ed below. Vol ume 6 / Number 11 / November, 1963 Communi cat i ons of t he ACM 651 2.4.2 Syntax (geometric expression} : : = (geometric form)/(parameter list) (geometric form) :: = POI NT I PLANE I CIRCLE I LI NE { CYLNDR I ELLIPS I HYPERB I CONE I GCONIC I LCONIC I SPHERE I QADRIC I POLCON I TABCYL t MATRI X I VECTOR (parameter list) : : = ((expression)) I (number) ] <variable) t(parameter list), (modifier word) I <modifier word>, (parameter list> I<parameter list), (parameter list) (modifier word) :: = (vocabulary word) 2.4.3 Examples POINT/3.5, 7, 9 defines a point at (3.5, 7, 9) CI RCLE/ CENTER, PT, RADIUS, 7 defines a circle with center at coordinates associated with variable PT and radius of 7. CI RCLE/ CENTER, (POINT/3.5, 7, 9), RADIUS, 7 defines a circle at (3.5, 7, 9) with a radius of 7. CIRCLE/ PT1, (POINT/3.5, 7, 9), PT4 defines a circle passing through coordinates of PT1, (3.5, 7, 9) and PT4. POI NT/ CENTER, (CIRCLE/ PT1, (POINT/3.5, 7, 9), PT4)) defines a point with coordinates at the center of the circle in the previous example. 3. 0 St a t e me n t s 3.0.1 Semantics. St at ement s are t he basi c opera- t i onal and cont rol uni t s of t he APT l anguage. 3.0.2 Syntax (statement) : : = (label)) (unlabeled statement) I (unlabeled statement) <unlabelcd statement) : : = <assignment statement) ] (cutter positioning statement) [ (sequence control statement> I (post processor control statement) ! (procedure statement) I (input-output control statement) (loop) : : = LOOPST (statement list) I LOOPND (statement list) : : = (statement) I (statement list) (statement) 3.1 ASSIGNMENT ST TEMENTS 3.1.1 Semantics. Assi gnment s t at ement s assi gn var i abl es t o t he val ues of ar i t hmet i c expressi ons and t o t he defi ni t i ons of geomet r i c expressi ons. Once a var i abl e is assi gned t o a geomet r i c ex- pressi on it ma y never be reassi gned. Thi s is not t rue, however , for var i abl es assi gned t o ar i t hmet i c expressi ons. The y ma y be reassi gned at will. 3.1.2 Syntax (assignment statement) : : = (variable) = (arithmetic expression} [(variable) = (geometric expression) 3.1.3 Examples A=2+3 +1 A=A+I B = C IRC LE/(PO INT/0 , 0 , 0 ), PTA, PTB 3.2 CUTTER i~OSITIONING STATEMENTS 3.2.1 Semantics. Numer i cal l y cont rol l ed machi ne t ool s are cont rol l ed by reference t o a cont rol poi nt on t he cut t er. Two general classes of commands are avai l abl e t o cont rol posi t i oni ng of t hi s cont r ol poi nt . 3.3 I ! otrolPoi The first, expl i ci t posi t i oni ng cont rol , specifies a new posi t i on in t er ms of act ual coor di nat es or i ncr ement s f r om t he pr esent posi t i on. The next class pr ovi des for cont i nuous cut t er mot i on al ong a space curve. As t he cut t er , a surface of r evol ut i on, errodes mat er i al at its per i pher y, a useful const r uct , is t o consi der t he cut t er const r ai ned by a t angency condi t i on t o each of t wo surfaces, t he so-cal l ed par t surface and dri ve surface. The posi t i on of t he cut t er rel at i ve t o t he t wo cont rol l i ng surfaces is speci- fied by cont i nuous mot i on st at ement s. These necessari l y i nvol ve a di rect i on of mot i on based on pr evi ous s t at ement s or decl arat i ons. Such a cont i nuous mot i on is t er mi nat ed by also speci- f yi ng a t angency condi t i on t o a t hi r d surface called a check surface. Whe n t hi s r equi r ed t er mi nal t angency condi t i on is met , t he mot i on is compl et e. 3.2.2 Syntax (cutter positioning statement) : : = (explicit positioning statement) ! <initial continuous motion statement> I (intermediate continuous motion statement) I (terminal continuous motion statement) EXPLICIT POSITIONING STATEMENTS 3.3.1 Semantics. For t hose occasi ons when t he desi red l ocat i on of t he cont rol poi nt is known, t he cut t er can be di r ect l y posi t i oned wi t hout t he use of cont rol l i ng surfaces by use of t he expl i ci t posi t i oni ng st at ement s. GO TO posi t i ons t he cont rol poi nt at t he specified coordi nat es. GO DLTA posi t i ons t he cont r ol poi nt i n a specified i ncr ement f r om its cur r ent l ocat i on. F ROM i ndi cat es t he i ni t i al posi t i on of t he cont rol poi nt . 3.3.2 Syntax (explicit positioning statement) : : = GO TO/ ((geometric expression)) t GO TO/(geometric variable) I GO TO/ (arithmetic parameter), <arithmetic parameter), <arithmetic parameter) I GO DLTA/ (ari t hmet i e parameter), (arithmetic parameter>, (arithmetic pa- rameter} [ FROM/((geometric expression)) I FROM/ (geometric variable) [ FROM/(arithmetic parameter), (arithmetic parameter}, (arithmetic parameter) (arithmetic parameter) :: = ((arithmetic expression}) [ (number) [ (arithmetic variable) 652 Communi cat i ons of t he ACM Vol ume 6 / Number 11 / November , 1963 3.3.3 Examples GO TO/3.5, 4.7, .0037 GO TO/(POINT/2.1, 1.2, O) GO DLTA/0, .333, .6 FROM/I, 2, 3 FROM/PT4 3,4 INITIAL CONTINUOUS MOTION STATEMENTS 3.4.1 Semantics. A special st at ement of this t ype is needed before each group of i nt ermedi at e continuous mot i on st at ement s in order to posi- tion t he cut t er within a specified tolerance from, and on the correct side of the par t and drive surfaces. This st at ement also allows t he cut t er to be directed to a part i cul ar area of t he controlling surfaces. 3.4.2 Syntax (initial continuous motion statement} : : = GO/(qualified geometric expression} ] G0/(qualified geometric expression}, (qualified geometric expression} ] GO/(qualified geometric expression}, (qualified geometric expression}, (qualified geometric expression} I OFFSET/(qualified geometric expression) (qualified geometric expression} : : = (cutter tangency specifier}, ((geometric expression}) I (cutter tangeney specifier}, (geometric variable} I ((geometric expression}) {(geometric variable} (cutter tangency specifier} : : = TO [ ON I PAST [ TANTO 3.4.3 Examples GO/C3 GO/TO, C3 GO/PAST, C2, ON, LN7 GO~A, B, C GO/ON, PLN5, PAST, LIN2, TO, CYL9 3.5 INTERMEDIATE CONTINUOUS MOTION STATEMENTS 3.5.1 Semantics. The maj or use Of t he APT lan- guage is to direct a defined cut t er to move in a ( c ut t e r a xi s ) UP c ut t e r BACK " \ LFT ~ ~ J . . f I \ RGT / / DOW N F WD ( pr e vi ous di r e c t i on of mot i on) Fro. 1. Direction and position conventions specified direction, yet , mai nt ai n a specified t angency position relative t o two geomet ri c surfaces. The direction a nd position convent i ons are specified in Figure 1. Each st at ement is dependent upon t he preceding st at ement for establishing the direction of mot i on and upon t he drive surface of t he next st at ement for in- format i on concerning when t he mot i on is com- plete. The drive surface of this following st at e- ment is t hen also the check surface for t he current mot i on. 3.5.2 Syntax (intermediate continuous motion statement} : : = (continuous motion word)/(drive surface} (continuous motion word} : : ~ GO LFT I GO RGT ! GO F WDI GO BACK[ GO UPI GO DOWN (drive surface} : : = ((geometric expression}) I (geometric variable) 3.5.3 Examples GO LFT/ LN2 GO FWD/ CIRL GO RGT/(LINE/P1, P2) 3.6 TERMINAL CONTINUOUS MOTION STATEMENTS 3.6.1 Semantics. The t ermi nal continuous mot i on st at ement requires no successor st at ement from which to derive a check surface. I t must , there- fore, include reference to an explicit check surface and end t angency condition. I t may occur from t i me to t i me t hat the geometric configuration is such t hat t he cut t er may satisfy the required check surface t angency criterion at more t han one point. I n this case t he mot i on is considered complete at the first satisfaction of this con- straint. A command f or mat is available to allow t ermi nat i ng the mot i on at the n-t h satisfaction of the t angency condition. 3.6.2 Syntax (terminal continuous motion statement} : : = (intermediate continuous motion statement}, (cutter tangency specifier}, (check surface) l(intermediate continuous motion statement}, (check surface}l (intermediate continuous motion statement}, (cutter tangency specifier}, (intersection count}, INTOF, (check surface} (check surface} :: = ((geometric expression}) I (geometric variable} (intersection count} :: = (unsigned integer} 3.6.3 Examples GO LFT/LN2, TO, CIR0 GO RGT/ (LINE/ P3, P6), CIRX GO BACK/LX4361, ON, 4, INTOF, POL6 3.7 SEQUENCE CONTROL ST TEMENTS 3.7.1 Semantics. A sequence control st at ement i nt errupt s t he normal sequential execution of st at ement s. 3.7.2 Syntax (sequence control statement} : : = (arithmetic transfer statement} [ (geometric transfer statement} [ (termination statement} Volume 6 / Number 11 / November, 1963 Co mmu n i c a t i o n s o f t h e ACM 653 3.8 ARITHMETIC TRANSFER STATEMENT 3.8.1 Semantics. An ari t hmet i c t ransfer st at ement and t he st at ement s associ at ed wi t h labels ap- peari ng in t hese t ransfer st at ement s must occur wi t hi n a loop or procedure. If nor mal sequent i al execut i on is al t ered by an ar i t hmet i c t ransfer st at ement , it can onl y be re-est abl i shed by anot her ar i t hmet i c t ransfer. 3.8.2 Syntax (arithmetic transfer statement} :: = JUMPTO/(label) [ IF ((arithmetic expression)) (label}, (label>, (label} 3.8.3 Examples JUMPTO/123XQ IF (A-X) ST1, ST2, ST3 3.9 GEOMETRIC TRANSFER STATEMENTS 3.9.1 Semantics. A geomet ri c t ransfer st at ement also i nt er r upt s sequent i al execut i on of an APT :program. However , it need not appear wi t hi n a l oop or procedure. If a geomet ri c t ransfer st at e- ment does appear in a loop or procedure it ma y onl y reference st at ement s occurri ng l at er wi t hi n t he program. The same rule applies concerni ng consi st ent use of geomet ri c t ransfers as applies t o ari t hmet i c transfers. A mul t i pl e choice surface mot i on st at ement selects one of t wo possible suc- cessor st at ement s dependi ng upon whi ch t angency condi t i on is first achi eved. 3.9.2 Syntax (geometric transfer statement} :: = TRANTO/(label) [ (multiple check surface motion statement> (multiple check surface motion statement> : : = (terminal continuous motion statement), (label>, (check surface}, (label} I (terminal continuous motion statement), (label}, (cutter tangency specifier}, (check surface}, (label} 3.9.3 Example TLRGT GO FWD/ CIRC GO FWD/L1, TO, L2, ID1, TO, L3, ID2 ID1) TLLFT, GO LFT/L2, PAST, L4 TRANTO/ ID3 ID2) TLLFT, GO LFT/L3, TO, L2, GO LFT/L2, PAST, L4 ID3) . . . . . . . . . . . 3.10 TERMINATION STATEMENTS 3.10.1 Semangcs. Thi s st at ement defines no suc- cessor and has t he effect of t er mi nat i ng t he pr ogr am. 3.10.2 Syntax (termination statement> :: = FI NI 3.11 POST PROCESSOR CONTROL STATEMENTS 3.11.1 Semantics. A post processor in t he APT syst em is a pr ogr am whi ch t r ansf or ms general coordi nat e i nf or mat i on and cont rol funct i ons i nt o codes for a specific cont rol l er-machi ne t ool confi gurat i on. Post processor cont rol commands act i vat e specific i nt ernal funct i ons of a post - 3.12 3.13 processor. These are t o be di fferent i at ed f r om t he st ri ngs of coordi nat es pr oduced by cut t er posi- t i oni ng st at ement s. Post pr ocessor cont rol st at e- ment s cont rol such i nt ernal funct i ons as spindle speed and di rect i on, servo mechani sm overshoot , cool ant values, etc. 3.11.2 Syntax (postprocessor control statement> :: = (postprocessor control word>[(postprocessor control word)/ (parameter list} ](postprocessor control word) (string) [ (cutter positioning statement>, (feedrate specifier) (postproeessor control word} :: = (vocabulary word) (feedrate specifier) : : = ((arithmetic expression})l (arithmetic variable) ] (number) 3.11.3 Examples COOLNT/ON SPINDL/ ON PPRI NT ARBITRARY TEXT END PROCEDURE STATEMENTS 3.12.1 Semantics. A procedure s t at ement is re- pl aced by t he procedure body. The f or mal par amet er s wi t hi n t he body are repl aced by t he nor mal par amet er s specified in t he pr ocedur e decl arat i on except where superceded by act ual par amet er s f r om t he procedure st at ement . An APT procedure st at ement calls by name. 3.12.2 Syntax (procedure statement> : : = CALL/(procedure identifier> I CALL/(proeedure identifier}, (procedure parameter list) (procedure parameter list} : : = (formal parameter) = (actual parameter} [ (procedure parameter list}, (formal parameter> = (actual parameter) (actual parameter> :: ~- (variable> [ (number> [ (vocabulary word} [ (label} (formal parameter> :: = (identifier> 3.12.3 Examples CALL/MACR, A = GORGT, B = CIRCLE, C = QLX, D = 7.632 CALL/ MXR INPUT-OUTPUT CONTROL STATEMENTS 3.13.1 Semantics. These st at ement s allow for t he i nput and out put of procedures, geomet ri c entities, and numeri cal quant i t i es. 3.13.2 Syntax (input-output control statement> : : = (input-output control word)/(format specifier}, (2-0 list) [ TI TLES (string> (input-output control word} : : = READ ] PUNCH [ PRI NT (LO list} : : = ALL I (variable list} (variable list> :: = (variable} [ (variable list), (variable} (format specifier} : : = 0 [ 1 I 2 I 3 3.13.3 Examples PRINT/ 3, ALL PUNCH/ l , X, ttQC, J READ/ l , A, B, X TITLES SIN COS TAN 654 Communi cat i ons of t he ACM Vol ume 6 / Number 11 / November, 1963 4.0 Dec l arat i ons 4.0.1 Semantics. Decl arat i ons define propert i es of the geometric entities and ari t hmet i c quantities used within a program. They also alter t he en- vi ronment in which cert ai n st at ement s are executed. An envi romnent defined by a declara- rat i on remai ns in effect until it is superceded. 4.0.2 Syntax (declaration) :: = (array declaration} I (coordinate transformation declaration) ] (Z surface declaration} l (procedure declaration} I (vocabulary equivalence declaration) [ (cutter offset calculation declarations} 4.1 ARRAY DECLARATIONS 4.1.1 Semantics. An ar r ay decl arat i on declares one or more identifiers to represent linear arrays of quantities or geometric entities. 4.1.2 Syntax (array declaration) : : = RESERV/ ( ar r ay list) (array list} :: = (array segment} I (array list), (array segment} (array segment} : : = (array identifier), ((arithmetic expression)) ] (array identifier), (arithmetic variable} 4.1.3 Examples RESERV/A, 12, B, 26, X, C 4.2 COORDINATE TRANSFORMATION DECLARATIONS 4.2.1 Semantics. This decl arat i on creates a special envi ronment in which geometric vari abl es may be defined. When a variable so defined is refer- enced in the normal envi ronment , it appears with its coordinates t ransformed as specified in t he declaration controlling the definition en- vi ronment . The word NO MORE re-instates t he normal envi ronment . 4.2.2 Syntax (coordinate t ransformat i on declaration) : : = REF SYS/ (t ransformat i on matrix) I REF SYS/ NO MORE (t ransformat i on matrix} : : = (geometric variable) 4.2.3 Examples REFSYS/M REFSYS/NO MORE 4. 3 Z-SURFACE DECLARATIONS 4.3.1 Semantics. A poi nt is one of t he geometric entities t hat may be defined in an APT program. At the t i me of definition, unless explicitly defined otherwise, t he poi nt is assumed to lie on a plane containing t he x and y axes. Thi s declaration allows t he x-y pl ane assumpt i on to be overruled and declares points to here aft er lie on the speci- fied plane. 4.3.2 Syntax (Z surface declaration) : : = ZSURF/ ( ( geomet r i c expression)) I ZSURF/ (gcomet ri e variable) 4.3.3 Example ZSURF/ PL2 ZSURF/(PLANE/PNT1, PNT2, PNT3) Vol ume 6 / Numbe r 11 / November , 1963 4. 4 t)ROCEDURE DECLARATIONS 4.4.1 Semantics. A procedure decl arat i on defines t he procedure associated wi t h a procedure identifier. When t he procedure is referenced by a procedure st at ement , t he identifiers wi t hi n t he procedure body declared to be formal pa- ramet ers in t he procedure headi ng will be re- placed by t he names of t he corresponding act ual paramet ers. At t he t ermi nat i on of this process any formal par amet er not replaced by an act ual par amet er will be replaced by t he normal name corresponding t o t hat formal par amet er in t he procedure heading. 4.4.2 Syntax (procedure declaration) :: = (procedure heading) (procedure body) (procedure terminator} (procedure heading) :: = (procedure identifier) = MACRO/ (formal paramet er list) (formal parameter list) :: = (null) I (formM parameter) [ (formal parameter} = (normal name} [(formal parameter list), (formal parameter list) (normal name) :: = (number) l(voeabulary word) ] (label) (procedure body) :: = (statement} [(procedure body) (statement} (procedure terminator) :: = TERMAC (procedure identifier} :: = (identifier) 4.4.3 Example MAC = MACRO/ J = TLLF T, K, Z, t t = 0 FROM/0, 0, 0 GO TO/I, 1, 1 GO/SURF1 J, GO LFT/SURF1 GO RGT/SURF2, K, Z, Itt TERMAC 4. 5 VOCABULARY EQUIVALENCE DECLARATIONS 4.5.1 Semantics. This decl arat i on allows an arbi- t r ar y identifier to be made equi val ent to an APT vocabul ar y word. 4.5.2 Syntax (vocabul ary equi val ence declaration) :: = SYN/ (equivalence list) (equivalence list) :: = (identifier), (vocabulary word) I (equivalence list), (identifier), (vocabulary word) 4.5.3 Example SYN/GT, GO TO, TT, TANTO 4.6 CUTTER OFFSET CALCULATION DECLARATIONS 4.6.1 Semantics. These st at ement s create an en- vi ronment for cut t er offset control st at ement s. 4.6.2 Syntax (cutter offset calculation declaration} :: = (direction declaration) I (calculation parameter declaration) I (tool position declaration} 4.7 DIRECTION DECLARATIONS 4.7.1 Semantics. This declaration establishes or re-establishes the direction of tool mot i on. I t is used pri mari l y to resolve otherwise ambi guous initial continuous mot i on commands, such as when it is desired to move the cut t er to a specified Communi c a t i ons of t he ACM 655 posi t i on rel at i ve t o a circle and t he i ni t i al cut t er l ocat i on is, i ndeed, t he ver y cent er of t he circle. Two al t er nat i ve decl ar at i ons al l ow speci fyi ng t he di rect i on in t er ms of a vect or or t owar d a poi nt . 4.7.2 Syntax {direction declaration} : : = INDIRP/ (di rect i on specifier) ] INDIRV/(direction specifier} (direction specifier} : : = ((geometric cxpression})l (geometric variable) I (arithmetic parameter}, (arith- metic parameter}, (arithmetic parameter} 4.7.3 Examples I NDI RP/ ( POI NT/ 1, 1, 1) I NDI RP/ 1, 1, 1 INDIRV/ 7, 6, 3 IND IRV/ (VECTO R/P1, P2) INDIRV/ VECT1 4.8 CALCULATION PARAMETER DECLARATIONS 4.8.1 Semantics. These decl ar at i ons speci fy pa- r amet er s and ar i t hmet i c and logical const ant s for t he i nt er nal cal cul at i ons t hat reduce con- t i nuous mot i on s t at ement s t o sequences of di scret e cut t er cent er coordi nat es. 4.8.2 Syntax (calculation parameter declaration} : : = (tolerance specification} I (cutter specification) ! (calculation constant control} 4.9 TOLERANCE SPECIFICATIONS 4.9.1 Semantics. All cont i nuous mot i on commands are reduced t o sequences of st r ai ght line mot i ons depar t i ng f r om t he anal yt i c cut t er t angency const r ai nt s by no mor e t han a specified t ol erance. I nner t ol er ance ( I NTOL) affect s under - cut t i ng or "gouge" whi l e out er t ol er ance ( 0UTTOL) affect s amount of excess st ock. 4.9.2 Syntax (tolerance specification} : : = TOLER/(arithmetic parameter} I INTOL/(arithmeticparameter} I OUTTOL/(arithmetic parameter) 4.9.3 Example TOLER/.0001 INTOL/ (A/4.621) OUTTOL/Q 4. ].0 CUTTER SPECIFICATIONS 4.10.1 Semantics. The cut t er, a surface of revol u- t i on, :is defi ned by i t s profile af t er Fi gur e 2. 4.10.2 Syntax (cutter specification} :: = CUTTER/(d) CUTTER/(d}, I (r} CUTTER/(d), (r), (e}, (f), (a}, (~}, (h) (d} :: = (arithmetic (r) :: = (arithmetic (e} :: = (arithmetic if} :: =: (arithmetic (o~} :: = (arithmetic (B) :: = (arithmetic (h) : : = (arithmetic parameter) parameter) parameter} parameter} parameter) parameter} parameter) 4.11 h d - t FtG. 2 4.10.3 Example CUTTER/ 1 .O2 CUTTER/ 6, 4.3, 7.2, 9, C, (C+.07), A CALCULATION CONSTANT CONTROLS 4.11.1 Semantics. Two br oad cat egori es of decl ara- t i ons cont r ol ar i t hmet i c and logic cons t ant s used in cut t er offset cal cul at i ons. CUT and DNTCUT r espect i vel y, rest ore and i nhi bi t f or war di ng of coor di nat es r esul t i ng f r om cut t er posi t i oni ng s t at ement s t o t he post pr ocessor . MULTAX i ni t i at es out put of t ool axis di rec- t i on cosines t o t he post pr ocessor . TLAXI S specifies t he di r ect i on cosines of t ool axis. The NORMPS mode specifies t ha t t he t ool axis is t o be ever ywher e nor mal t o t he par t surface. MAXDP specifies t he ma xi mum st ep l engt h t o be al l owed in cut t er offset cal cul at i ons. NUMPTS specifies t he ma xi mum number of poi nt s t ha t a single cont i nuous mot i on c omma nd ma y produce. THI CK adds a uni f or m excess t o cut t er cont rol surfaces. PSI S specifies a new pa r t surface. 4.11.2 Syntax (calculation constant control} : : = (calculation logic control) ](calculation arithmetic constant control} (calculation logic control> : : = CUT [ DNTCUT I MULTAX [ 3DCALC [ 2DCALC I NDTEST I NOPS (calculation arithmetic constant control} : : = TLAXIS/ (arithmetic parameter), (arithmetic parameter}, (arithmetic parameter} ] TLAXIS/((geometric expression)) I TLAXIS/(geometric variable}l TLAXI S/ NORMPS I MAXDP/(arithmetic parameter>, NUMPTS/ (arithmetic parameter} I THI CK/ (arithmetic parameter}, (arithmetic parameter), (arithmetic parameter} ] PSIS/((geometric expression}) [ PSIS/(geometric variable} 656 Communi cat i ons of t he ACM Vol ume 6 / Number 11 / November, 1963 4.12 4.11.3 Exa mpl e s CUT DNT CUT T LAXI S/ (VECTOR/ PT1, PT2) MAXDP/ 10 THI CK/ 0, 0, .02 TOOL POSITION DECLARATIONS 4.12.1 Semantics. The tool position decl arat i on is used in lieu of a cut t er t angeucy specifier in i nt ermedi at e continuous mot i on st at ement s. The following rule applies: Tool Position Motion Tangency Specifier TLLF T GOLFT TO TLLF T GORGT PAST TLRGT GOLFT PAST TLRGT GORGT TO TLON GOLFT ON TLON GORGT ON any GOFWD TANT0 any GOBACK TANT0 any GOUP error any GODOWN error For a tool position and mot i on specified in st at e- ment n, t he t angency specifier refers to t he check surface for st at ement n -- 1. 4.12.2 Syntax (tool position declaration) : : = (tool position specifier) [ (tool position specifier), (continuous mot i on st at ement ) [(tool position specifier), (tool position declaration} (tool position specifier) : : = TL ON PS [ TL OF PSI TL ND ON [ TANCRV I TLON { TLLF T I TLRGT (continuous mot i on statement} : : = (i nt ermedi at e continuous mot i on statement} [ (terminal continuous mot i on st at ement ) REF ERENCES 1. Ross, DOUGLAS T. The design and use of the APT language for aut omat i c programmi ng of numeri cal l y controlled machine tools. Proc. 1959 Comput er Appl i cat i ons Symposium, Chi- ergo, pp. 80-99. 2. BATES, EDGAR A. Aut omat i c programmi ng for numeri cal l y controlled t ool s- - APT I I I . I n Computer Applications--1961, pp. 140-156; Macmi l l an, New York. 3. Int ernat i onal Business Machines Corporation. ADAPT, a system for t he aut omat i c programmi ng of numeri cal l y con- t rol l ed machine tools on small computers. Fi nal Teeh. Eng. Report , 15 Jul y 1962-16 Januar y 1963, San Jose, Calif. (Air Force Cont ract AF 33(600)-43365). 4. NAuR, PETER, ET AL. Revi sed report on t he al gori t hmi c language ALGOL 60. Comm. ACM 6 (Jan. 1963), 1-17. 5. HUSKEY, H. D. , LOVE, R., AND WIRTn, N. A synt act i c descrip- t i on of BC NELI AC. Comm. ACM 6 (July 1963), 367-375. APPENDI X A. APT VOCABULARY LI ST 1.7 REMARKS REMARKS 2.2 FUNCTION DESIGNATORS DOTF SI NF LOGF LNTHF COSF ATANF SQRTF EXPF ABSF 2.4 3.0 3.3 3.4 3.5 GEOMETRIC EXPRESSIONS POI NT ELLI PS VECTOR LI NE HYPERB MATRI X PLANE CONE SPHERE CI RCLE GCONI C QADRI C CYLNDR LCONI C POLCON TABCYL STATEMENTS LOOPST L00PND EXPLICIT POSITIONING STATEMENTS F ROM GODLTA GOTO INITIAL CONTINUOUS MOTION STATEMENTS GO OF F SET INTERMEDIATE CONTINUOUS MOTION STATEMENTS GOLFT GOFWD GOUP GORGT GOBACK GODOWN 3.8 ARITHMETIC TRANSFER STATEMENTS I F J UMPTO 3.9 GEOMETRIC TRANSFER STATEMENTS TRANTO 3.10 TERMINATION STATEMENTS F I NI 3.11 POST PROCESSOR CONTROL STATEMENT END DELAY TRANS STOP AI R TRACUT OPSTOP OPSKI P I NDEX I STOP LEADER COPY RAPI D PPLOT PREF UN SWI TCH MACHI N COUPLE RETRCT MCHTOL PI TCH DRESS PI VOTZ CLAMP PI CKUP MCHF I N ENDMDI UNLOAD SEQNO ASLOPE PENUP I NTCOD SADDLE PENDWN DI SPLY LOADTL ZERO AUXF UN SELCTL CODEL CHECK CLEARC RESET POSTN CYCLE PLABEL TOOLNO DRAF T PLUNGE ROTABL RI TMI DI HEAD ORI GI N PLOT MODE SAF ETY OVPLOT CLEARP ARCSLP LETTER TMARK COOLNT PPRI NT REWI ND SPI NDL PARTNO CUTCOM TURRET I NSERT REVERS ROTHED CAMERA F EDRAT THREAD 3.12 PROCEDURE STATEMENTS CALL 3.13 INPuT-OUTPUT CONTROL STATEMENTS PRI NT READ TI TLES PUNCH 4.1 ARRAY DECLARATIONS RESERV 4.2 COORDINATE TRANSFORMATION DECLARATIONS REFSYS 4.3 Z-SURFACE DECLARATIONS ZSURF 4.4 PROCEDURE DECLARATIONS MACRO TERMAC 4.5 VOCABULARY EQUIVALENCE DECLARATIONS SYN 4.6 DIRECTION DECLARATIONS I NDI RP I NDI RV 4.9 TOLERANCE SPECIFICATIONS TOLER I NTOL OUTTOL Vol ume 6 / Numbe r 11 / November , 1963 Communi c a t i ons of t he ACM 657 4.10 CUTTER SPECIFICATIONS CUTTER 4.11 CALCULATION CONSTANT CONTROLS CUT NDTEST DNTCUT TLAXIS 2DCALC MULTAX 3DCALC MAXDP 4.12 Tool POSITION DECLARATIONS TLLFT TLNDON TLRGT TLON NUMPTS THICK NOPS PSIS TANCRV TLONPS TLOFPS MODIFIER WORDS ATANGL PARLEL XYPLAN CENTER PERPTO XYROT CROSS PLUS YLARGE FUNOFY POSX YSMALL INTOF POSY YZPLAN INVERS POSZ YZPLAN LARGE RADIUS YZROT FEFT RIGHT ZLARGE LENGTH SCALE ZSMALL MINUS SMALL ZXPLAN NEGX TANTO ZXROT NEGY TIMES 3PT2SL NEGZ TRANSL 4PT1SL NOX UNIT 5PT NOY XLARGE INTERC NOZ XSMALL SLOPE IN MIST RED OUT TAPKUL GREEN ALL STEP BLUE LAST MAIN INTENS NOMORE SIDE LITE SAME LINCIR MED MODIFY MAXIPM DARK MIRROR REV CHUCK START TYPE COLLET ENDARC NIXIE AAXIS CCLW LIGHT BAXIS CLW FOURPT CAXIS MEDIUM TWOPT TPI HIGH PTSLOP OPTION LOW PTNORM RANGE CONST SPLINE PSTAN DECR RTHETA CSTAN INCR THETAR FRONT ROTREF XYZ REAR TO TRFORM SADTUR PAST NORMAL MILL ON UP THRU OFF DOWN DEEP IPM LOCK TRAV IPR SFM NORMPS CIRCUL XCOORD CONCRD LINEAR YCOORD GECENT PARAB ZCOORD SC4020 RPM MULTRD MILWAK MAXRPM XYVIEW BENDIX TURN YZVIEW DYNPAT FACE ZXVIEW TRW BORE SOLID ECS BOTH DASH CINCY XAXIS DOTTED TRUTRA YAXIS CL PRATTW ZAXIS DITTO FOSDIK TOOL PEN BURG AUTO SCRIBE PROBOG FLOOD BLACK DVLIEG SUNTRN USA Participation in an International Standard Glossary on Inf ormati on Processing J. F. TRAUB* Bell Telephone Laboratories, Inc., Murray Hill, N. J. 1. Ba c k g r o u n d A considerable number of glossaries in the area of infor- mat i on processing have been produced in the USA in the last ten years [i, 2]. I n some cases the glossaries were reworked versions of earlier glossaries, while in other cases maj or new contributions were made. All told, the glossary effort has cost thousands of man-hours of work. Several years ago the ASA X3 sectional committee sponsored by BEMA was established to prepare standards for the USA in the information processing field. (See Appendix 1 for the meaning of abbreviations and acro- nyms. See also [3].) ASA X3.5 was assigned the double scope of advising the other X3. n subcommittees on the establishment of definitions required for their proposed standards and of establishing a standard glossary, pASGI P, for general use. At the same time there was i mport ant British stand- ardization activity. After reworking a number of earlier drafts, the BSI released the "Glossary of Terms Used in Aut omat i c Dat a Processing," British St andard 3527: 1962. The British effort differed in at least one very ira- port ant respect from the USA glossaries. I t was organized along subject rather t han alphabetical lines. This was to have i mport ant consequences, as we shall see. A parallel action to the national standardization aetivi- ties was the formation of ISO/ TC97, which held its first meeting in Geneva in May 1961. I SO/ TC97/ SC1 (then known as I SO/ TC97/ WGA) was given the task of pro- viding a multilingual glossary. The secretariat was assigned to the Netherlands. Dr. It. M. R. Mant z serves as chair- man. I n SC1 each participating nation has one vote. The job of the USA representative is to serve as a liaison between SC1 and USA act i vi t y between meetings of SC1. For the meetings of SC1, which take place once every one to two years, a delegation is chosen to represent the USA. The leader of the delegation is often the man who serves as USA representative, but this need not be the case. At its first meeting, SC1 accepted an offer by the I F I P/ I CC Joint Terminology Committee to provide it with a first draft of a multilingual glossary. The chairman of the J TC is G. C. Tootill of the United Ki ngdom; its members are the representatives of the professional societies of various countries. The USA professional society repre- sented is AFI PS. The subject classified "Glossary of *USA Representative to ISO/TC97/SC1; Chairman, ASA X3.5.2 658 Co mmu n i c a t i o n s o f t h e ACM Vo l u me 6 / Nu mbe r 11. / Nove mbe r , 1963