PPPPPPPP AAAAAA SSSSSSSS DDDDDD IIIIII FFFFFFFFFF PPPPPPPP AAAAAA SSSSSSSS DDDDDD IIIIII FFFFFFFFFF PP PP AA AA SS DD DD II FF PP PP AA AA SS DD DD II FF PP PP AA AA SS DD DD II FF PP PP AA AA SS DD DD II FF PPPPPPPP AAAAAAAAAA SSSSSS DD DD II FFFFFFFF PPPPPPPP AAAAAAAAAA SSSSSS DD DD II FFFFFFFF PP AA AA SS DD DD II FF PP AA AA SS DD DD II FF PP AA AA SS DD DD II FF PP AA AA SS DD DD II FF PP AA AA SSSSSSSS DDDDDD IIIIII FF PP AA AA SSSSSSSS DDDDDD IIIIII FF LL SSSSSSSS LL SSSSSSSS LL SS LL SS LL SS LL SS LL SSSSSS LL SSSSSS LL SS LL SS LL SS LL SS LLLLLLLLLL SSSSSSSS LLLLLLLLLL SSSSSSSS B E F O R E -- a n d -- A F T E R C O M P A R I S O N o f P A S C A L -- S S O U R C E ( .PA ) F I L E S February '83 (Cf. 'Changes Made' on Page v of Write-up) SRCCOM V5A Moedling PASCAL.PA (1) versus February 1983 revision (2) 1) / ############ ######### ######### 2) / ############ ######### ######### 1)001 EJECT P A S C A L - S 1) VERSION=2 **** 2)001 / 2) / 2) / 2) / 2) / 2) / 2) / CHANGES MADE AT PORTSMOUTH ABBEY SCHOOL 2) / DECEMBER 1982 -- FEBRUARY 1983 INCLUDE: 2) / 2) / (1) TRANSLATING THE COMPILER ERROR MESSAGES. 2) / 2) / THE RUN-TIME MESSAGES IN PASCAL-S WERE IN ENGLISH 2) / FROM THE BEGINNING. THE SOURCE CODE, CAREFULLY LAID 2) / OUT, IS ALSO IN ENGLISH. WELL WORTH READING. 2) / 2) / (2) ARRANGING TO REPLACE H. TAB ON INPUT FILE BY 2) / ONE SPACE (BLANK). PASCAL-S REGARDS H. TAB 2) / AS A NULL CHARACTER. 2) / 2) / (3) MAPPING OCTAL 141-177 INTO OCTAL 101-137. LOWER- 2) / CASE LETTERS BECOME UPPER-CASE, ACCENT GRAVE BE- 2) / COMES ONE SPACE. { | } ~ BECOME [ \ ] ^ . RUB- 2) / OUT (DELETE), IF ANY, BECOMES _ . 2) / 2) / (4) CHANGING THE QUOTING CHARACTER FROM " TO ' . 2) / 2) / 2) / 2) / 2) XLIST 2) EJECT P A S C A L - S 2) XLIST 2)002 VERSION=2 ******** 1)031 TRUEFALSE, TEXT /TRUEFALSE/ 1) XISQU, 0 /AC := AC^2 (INTEGER) **** 2)032 / TRUEFALSE, TEXT /TRUEFALSE/ 2) / -- MOVED JAN. '83 TO NEXT CORE PAGE. 2) XISQU, 0 /AC := AC^2 (INTEGER) ******** 1)031 PAGE **** 2)032 // FOR 'CHECK': CONVERT H. TAB TO ONE SPACE, 2) // LOWER-CASE TO UPPER-CASE. JAN. 1983 P.A.S. 2) INCONV, 0 /(AC)=LOOK&177-15 2) TAD P1E1 /+4 2) SNA 2) TAD (40-11 /PROMOTE TAB TO BLANK (SPACE) 2) TAD (11-140 /TEST FOR LOWER-CASE 2) SPA SNA /SKIP IF .GT. 140(8) 2) TAD (40 2) TAD (100-32 /E.O.F. ? 2) JMP I INCONV 2) PAGE ******** 1)033 PAGE **** 2)034 TRUEFALSE, TEXT /TRUEFALSE/ 2) /MOVED JAN. '83 2) PAGE ******** 1)037 RTL 1) DCA CHECK **** 2)038 RTL // BSW IN THIS ROUTINE... 2) DCA CHECK ******** 1)037 RTL 1) RTL **** 2)038 RTL // ...WOULD SAVE 2 CORE LOCATIONS 2) RTL ******** 1)037 TAD (IBUFFER 1) DCA IBP **** 2)038 IFNZRO IBUFFER-6000 < 2) TAD (IBUFFER > 2) IFZERO IBUFFER-6000 2) DCA IBP ******** 1)037 TAD (15-32 1) SNA 1) JMP CR-2 1) TAD (-6 1) CLL **** 2)038 // TAD (15-32 -- REMOVED P.A.S. JAN. '83 2) JMS I (INCONV /JAN. '83 2) SNA 2) JMP CR-2 /E.O.F. 2) TAD (-6 /NOT E.O.F. ANOTHER CTRL? 2) CLL ******** 1)040 TEXT /DATEIANGABEN FEHLERHAFT BZW. UNVOLLSTAENDIG (EV. AUCH SYSTEMFEHLER)!/ 1) 0 **** 2)041 TEXT /* MISSING OR INCORRECT INPUT TO C.D.; OR, SYSTEM ERROR./ 2) 0 ******** 1)044 TAD ("Z+1-"A 1) SNL CLA 1) ISZ XSNALF 1) JMP I XSNALF **** 2)045 TAD ("Z+1-"A /LINK SETS IF CHAR IN [A..Z] 2) SNL CLA 2) ISZ XSNALF /2ND RETURN = NON-ALPHABETIC 2) JMP I XSNALF ******** 1)045 TAD (-"" 1) SZA CLA **** 2)046 TAD (-"' //MOEDLING HAD (-"" HERE; 2) //NOW SINGLE-QUOTE IS WANTED. 2) SZA CLA ******** 1)045 TAD (-"" 1) SZA CLA **** 2)046 TAD (-"' //( SAME CHANGE: CHECK FOR '' ) 2) SZA CLA ******** 1)054 JMPAPOS 1) NEQ 1) 0 **** 2)055 0000 // DISALLOW DOUBLE-QUOTE Febr. 1983 2) NEQ // 0000 HERE WOULD DISABLE '#' 2) 0 ******** 1)054 0 1) JMPLPAR **** 2)055 JMPAPOS // ENABLE SINGLE-QUOTE Febr. 1983 2) JMPLPAR ******** 1)056 FNN, TEXT /KOMPILATION ABGEBROCHEN - / 1) F00, TEXT /MAGNETBAND-LESEFEHLER!/ 1) F01, TEXT /ZU VIELE NAMEN!/ 1) F02, TEXT /ZU VIELE PROZEDUREN UND\ODER RECORDS!/ 1) F03, TEXT /ZU VIELE KONSTANTE!/ 1) F04, TEXT /ZU VIELE ARRAYS!/ 1) F05, TEXT /ZU VIELE UNTERPROGRAMMEBENEN!/ 1) F06, TEXT /PROGRAMM ZU GROSS!/ 1) F07, TEXT /ZU VIEL TEXT!/ 1) F08, TEXT /PROGRAMM ZU KOMPLEX!/ 1) F09, TEXT /PROGRAMM UNVOLLSTAENDIG!/ 1) F0C, TEXT /ZU VIELE CASE-MARKEN!/ 1) PAGE **** 2)057 FNN, TEXT /CAN'T COMPILE YOUR PROGRAM -- / 2) F00, TEXT "ERROR READING INPUT." 2) F01, TEXT /TOO MANY NAMES!/ 2) F02, TEXT "TOO MANY PROCEDURES AND/OR RECORDS!" 2) F03, TEXT /TOO MANY CONSTANTS!/ 2) F04, TEXT /TOO MANY ARRAYS!/ 2) F05, TEXT /TOO MANY SUB-PROGRAM NAMES!/ 2) F06, TEXT /PROGRAM TOO BIG!/ 2) F07, TEXT /TOO MUCH TEXT!/ 2) F08, TEXT /PROGRAM TOO COMPLEX!/ 2) F09, TEXT /INCOMPLETE PROGRAM./ 2) F0C, TEXT /TOO MANY CASE LABELS!/ 2) PAGE ******** 1)096 FIELD 6 **** 2)097 /Recoded into English text PAS Dec. 1982 g.c. FIELD 6 ******** AT THIS POINT, S R C C O M OVERFLOWED -- TOO MANY DIFFERENCES BETWEEN THE ENGLISH AND GERMAN COMPILE-TIME ERROR MESSAGES. APPENDED HERE ARE THE SOURCE FILES TO BOTH THE GERMAN AND THE ENGLISH MESSAGES, AS A CONTROL ON THEIR TRANSLATION. EOKAY, TEXT /KOMPILATION EINWANDFREI!/ EHEAD, TEXT /ERKLAERUNG DER FEHLER:/ /L O N G E R R O R M E S S A G E S / /(MADE INVISIBLE BY 'XLIST' TO SAVE PAPER IN ASSEMBLY LISTING!) XLIST E00,TEXT / 0 DIESER NAME WURDE NICHT VEREINBART./ E01,TEXT / 1 NAME IM GUELTIGKEITSBEREICH MEHRFACH VEREINBART./ E02,TEXT / 2 NAME FEHLT!/ E03,TEXT / 3 JEDES PROGRAMM MUSS MIT DEM WORTSYMBOL 'PROGRAM' BEGINNE/ *.-1 TEXT /N./ E04,TEXT / 4 RUNDE RECHTSKLAMMER FEHLT (ECKIGE KLAMMER HIER FALSCH)./ E05,TEXT / 5 DOPPELPUNKT FEHLT. IN VEREINBARUNGEN FOLGT DEM : EIN TYP/ *.-1 TEXT /NAME./ E06,TEXT / 6 SYNTAXFEHLER! ANGEZEIGTES SYMBOL HIER NICHT KORREKT./ E07,TEXT / 7 LISTE DER FORMALPARAMETER FEHLERHAFT (NAME ODER WORTSYMB/ *.-1 TEXT /OL 'VAR')./ E08,TEXT / 8 DAS WORTSYMBOL 'OF' FEHLT./ E09,TEXT / 9 RUNDE LINKSKLAMMER FEHLT (ECKIGE KLAMMER HIER FALSCH)./ E10,TEXT /10 TYPVEREINBARUNG FEHLERHAFT (NAME, 'ARRAY' ODER 'RECORD')./ E11,TEXT /11 ECKIGE LINKSKLAMMER FEHLT (RUNDE KLAMMER HIER FALSCH)./ E12,TEXT /12 ECKIGE RECHTSKLAMMER FEHLT (RUNDE KLAMMER HIER FALSCH)./ E13,TEXT /13 SYMBOL .. FEHLT (LEERZEICHEN ZWISCHEN DEN PUNKTEN UNZULA/ *.-1 TEXT /ESSIG)./ E14,TEXT /14 STRICHPUNKT FEHLT!/ E15,TEXT /15 FUNKTIONSWERT KANN NUR VOM TYP INTEGER, REAL, BOOLEAN OD/ *.-1 TEXT /ER CHAR SEIN./ E16,TEXT /16 SYMBOL = FEHLT (IN VEREINBARUNGEN IST := UNZULAESSIG)./ E17,TEXT /17 NACH 'IF', 'WHILE' ODER 'UNTIL' MUSS EIN BOOL'SCHER AUSD/ *.-1 TEXT /RUCK STEHEN./ E18,TEXT /18 ZAEHLVARIABLE BEI 'FOR'-ANWEISUNG MUSS VOM TYP INTEGER, / *.-1 TEXT /CHAR ODER BOOLEAN SEIN./ E19,TEXT /19 ANFANGSWERT, ENDWERT UND ZAEHLVARIABLE MUESSEN VOM GLEIC/ *.-1 TEXT /HEN TYP SEIN./ E20,TEXT /20 DER STANDARDNAME 'OUTPUT' MUSS IM PROGRAMMKOPF GESCHRIEB/ *.-1 TEXT /EN WERDEN./ E21,TEXT /21 ZAHL IST ZU GROSS! (MAXINT=34359738367, REALS ABS. KLEIN/ *.-1 TEXT /ER ALS 1.0E+308)/ E22,TEXT /22 PUNKT AM PROGRAMMENDE FEHLT! (WORTSYMBOLE 'BEGIN' UND 'E/ *.-1 TEXT /ND' NICHT PAARWEISE?)/ E23,TEXT /23 AUSDRUCK NACH 'CASE' MUSS VOM TYP INTEGER, CHAR ODER BOO/ *.-1 TEXT /LEAN SEIN./ E24,TEXT /24 ILLEGALES ZEICHEN!/ E25,TEXT /25 BEI KONSTANTENVEREINBARUNG MUSS NACH = EINE KONSTANTE OD/ *.-1 TEXT /. EIN KONST.NAME STEHEN./ E26,TEXT /26 DER AUSDRUCK FUER EINEN FELD-INDEX MUSS VOM VEREINBARTEN/ *.-1 TEXT / INDEX-TYP SEIN./ E27,TEXT /27 BEREICHSGRENZEN BEI FELDVEREINBARUNG FEHLERHAFT (UG<=OG?/ *.-1 TEXT / GLEICHER TYP?)/ E28,TEXT /28 JEDE INDIZIERTE VARIABLE MUSS ALS ARRAY VEREINBART WERDE/ *.-1 TEXT /N./ E29,TEXT /29 TYPNAME FEHLT (IN PARAMETERLISTEN SIND ALLG. TYPVEREINBA/ *.-1 TEXT /RUNGEN VERBOTEN)./ E30,TEXT /30 DIESER TYP WURDE NICHT VEREINBART./ E31,TEXT /31 JEDE VARIABLE MIT KOMPONENTEN-SELEKTOR MUSS ALS RECORD V/ *.-1 TEXT /EREINBART WERDEN./ E32,TEXT /32 'NOT', 'AND' UND 'OR' VERLANGEN OPERANDEN VOM TYP BOOLEA/ *.-1 TEXT /N./ E33,TEXT /33 TYP DIESES AUSDRUCKS UNBESTIMMT (GANZES ARRAY IN ARITHM./ *.-1 TEXT /OPERATIONEN UNZULAESSIG)./ E34,TEXT /34 'DIV' UND 'MOD' VERLANGEN OPERANDEN VOM TYP INTEGER./ E35,TEXT /35 TYPEN DER VERGLEICHSOPERANDEN UNVERTRAEGLICH./ E36,TEXT /36 AKTUAL- UND FORMALPARAMETER MUESSEN VOM GLEICHEN TYP SEI/ *.-1 TEXT /N./ E37,TEXT /37 VARIABLE ERFORDERLICH!/ E38,TEXT /38 EIN STRING MUSS MINDESTENS EIN ZEICHEN ENTHALTEN./ E39,TEXT /39 ANZAHL DER AKTUAL- UND FORMALPARAMETER MUSS UEBEREINSTIM/ *.-1 TEXT /MEN./ E40,TEXT /40 STANDARDPROZEDUR READ NUR FUER TYP INTEGER, REAL UND CHA/ *.-1 TEXT /R VORGESEHEN./ E41,TEXT /41 BEI WRITE SIND NUR DIE TYPEN INTEGER, REAL, BOOLEAN UND / *.-1 TEXT /CHAR ZULAESSIG./ E42,TEXT /42 WRITE(X:M:N) IST NUR FUER WERTE VOM TYP REAL ZULAESSIG./ E43,TEXT /43 M UND N BEI WRITE(X:M:N) MUESSEN INTEGER-AUSDRUECKE SEIN./ E44,TEXT /44 TYP- ODER PROZEDURNAMEN SIND IN AUSDRUECKEN UNZULAESSIG./ E45,TEXT /45 EINE ANWEISUNG KANN NICHT MIT EINEM KONST-, TYP- ODER FU/ *.-1 TEXT /NKTIONSNAMEN BEGINNEN./ E46,TEXT /46 TYPUNVERTRAEGLICHKEIT BEI WERTZUWEISUNG./ E47,TEXT /47 'CASE'-MARKEN MUESSEN VOM GLEICHEN TYP WIE DER 'CASE'-AU/ *.-1 TEXT /SDRUCK SEIN./ E48,TEXT /48 TYP DES ARGUMENTS BEI DIESER STANDARDFUNKTION UNZULAESSI/ *.-1 TEXT /G./ E49,TEXT /49 ARRAY-INDIZES UND 'CASE'-MARKEN SIND AUF -2048 < X < 204/ *.-1 TEXT /8 BEGRENZT./ E50,TEXT /50 EINE KONSTANTE KANN NICHT MIT DEM BEZEICHNETEN SYMBOL BE/ *.-1 TEXT /GINNEN./ E51,TEXT /51 SYMBOL := FEHLT (LEERZEICHEN ZWISCHEN : UND = UNZULAESSI/ *.-1 TEXT /G)./ E52,TEXT /52 DAS WORTSYMBOL 'THEN' FEHLT./ E53,TEXT /53 DAS WORTSYMBOL 'UNTIL' FEHLT./ E54,TEXT /54 DAS WORTSYMBOL 'DO' FEHLT./ E55,TEXT /55 DAS WORTSYMBOL 'TO' ODER 'DOWNTO' FEHLT./ E56,TEXT /56 DAS WORTSYMBOL 'BEGIN' FEHLT./ E57,TEXT /57 DAS WORTSYMBOL 'END' FEHLT./ E58,TEXT /58 EIN FAKTOR MUSS MIT NAME, KONSTANTE, 'NOT' ODER LINKSKLA/ *.-1 TEXT /MMER BEGINNEN./ XLIST EOKAY, TEXT /NO SYNTAX ERRORS./ EHEAD, TEXT /EXPLANATION OF ERROR CODES:/ /L O N G E R R O R M E S S A G E S / /(MADE INVISIBLE BY 'XLIST' TO SAVE PAPER IN ASSEMBLY LISTING!) / XLIST -- PAS Dec. 1982 E00,TEXT / 0 UNDEFINED NAME./ E01,TEXT / 1 MULTIPLE, CONFLICTING DEFINITIONS OF A NAME./ E02,TEXT / 2 MISSING NAME./ E03,TEXT / 3 EVERY PROGRAM MUST BEGIN WITH THE WORD 'PROGRAM'!/ E04,TEXT / 4 MISSING RIGHT PARENTHESIS ')' (DON'T USE ']' HERE)./ E05,TEXT / 5 MISSING COLON. IN DEFINITIONS, A TYPE NAME FOLLOWS : ./ E06,TEXT / 6 IT IS BAD SYNTAX TO USE THIS SYMBOL HERE./ E07,TEXT / 7 ERROR IN FORMAL PARAMETER LIST. NAME? OR MISSING WORD 'VAR'?/ E08,TEXT / 8 MISSING 'OF'./ E09,TEXT / 9 MISSING LEFT PARENTHESIS '(' (DON'T USE '[' HERE)./ E10,TEXT /10 DEFECTIVE TYPE SPECIFICATION (NAME, 'ARRAY' OR 'RECORD')./ E11,TEXT /11 MISSING LEFT BRACKET '[' (DON'T USE '(' HERE)./ E12,TEXT /12 MISSING RIGHT BRACKET ']' (DON'T USE ')' HERE)./ E13,TEXT /13 MISSING '..' (DON'T INSERT SPACES BETWEEN THE DOTS)./ E14,TEXT /14 MISSING SEMI-COLON./ E15,TEXT /15 FUNCTION VALUE MUST BE INTEGER, REAL, BOOLEAN OR CHAR./ E16,TEXT /16 MISSING = (DON'T USE := IN DEFINITIONS)./ E17,TEXT /17 'IF', 'WHILE', 'UNTIL' MUST BE FOLLOWED BY A BOOLEAN / *.-1 TEXT /EXPRESSION./ E18,TEXT /18 'FOR' NEEDS AN INDEX VARIABLE OF TYPE INTEGER, CHAR, OR / *.-1 TEXT /BOOLEAN./ E19,TEXT /19 INITIAL VALUE, FINAL VALUE, AND INDEX MUST ALL BE OF THE/ *.-1 TEXT / SAME TYPE./ E20,TEXT /20 THE WORD 'OUTPUT' MUST APPEAR IN THE PROGRAM HEADER LINE./ E21,TEXT /21 TOO LARGE! MAXINT=34359738367, ABS. REAL VALUES MUST BE/ *.-1 TEXT / < 1.0E+308/ E22,TEXT "22 MISSING PERIOD AT PROGRAM END (MIS-MATCHED 'BEGIN'/'END'?)." E23,TEXT /23 'CASE' NEEDS INTEGER, CHAR, OR BOOLEAN EXPRESSION./ E24,TEXT /24 ILLEGAL SYMBOL./ E25,TEXT /25 TO DEFINE A CONSTANT, FOLLOW = WITH A CONSTANT VALUE OR / *.-1 TEXT /NAME./ E26,TEXT /26 A FIELD INDEX MUST BE OF A DEFINED INDEX TYPE./ E27,TEXT /27 ERROR IN DEFINING FIELD LIMITS. WRONG ORDER? CLASHING TYPES?/ E28,TEXT /28 EVERY SUBSCRIPTED VARIABLE MUST BE DEFINED AS AN ARRAY./ E29,TEXT /29 MISSING TYPE NAME (DON'T DEFINE TYPES IN A PARAMETER LIST)./ E30,TEXT /30 UNDEFINED TYPE./ E31,TEXT /31 A COMPOUND VARIABLE MUST BE DEFINED AS A RECORD./ E32,TEXT /32 'NOT', 'AND', 'OR' REQUIRE BOOLEAN OPERANDS./ E33,TEXT /33 CAN'T DETERMINE TYPE (IN ARITHM. OPERATIONS, ENTIRE ARR/ *.-1 TEXT /AY IS ILLEGAL)./ E34,TEXT /34 'DIV' AND 'MOD' REQUIRE INTEGER OPERANDS./ E35,TEXT /35 COMPARISON BETWEEN INCOMPATIBLE TYPES./ E36,TEXT /36 ACTUAL & FORMAL PARAMETERS MUST BE OF THE SAME TYPE./ E37,TEXT /37 MISSING VARIABLE./ E38,TEXT /38 A STRING MUST HAVE AT LEAST ONE CHARACTER./ E39,TEXT /39 THERE MUST BE AS MANY ACTUAL AS FORMAL PARAMETERS./ E40,TEXT /40 'READ' WILL ONLY ACCEPT TYPES INTEGER, REAL, OR CHAR./ E41,TEXT /41 'WRITE' ONLY ACCEPTS TYPES INTEGER, REAL, BOOLEAN OR CHAR./ E42,TEXT /42 WRITE(X:M:N) IS FOR REAL-VALUED X ONLY./ E43,TEXT /43 WRITE(X:M:N) REQUIRES INTEGER EXPRESSIONS FOR 'M' AND 'N'./ E44,TEXT /44 TYPE AND PROCEDURE NAMES MUST NOT BE USED IN EXPRESSIONS./ E45,TEXT /45 AN INSTRUCTION MAY NOT BEGIN WITH A CONSTANT, A TYPE, OR/ *.-1 TEXT / A FUNCTION./ E46,TEXT /46 ASSIGNMENT OF VALUE: INCOMPATIBLE TYPES./ E47,TEXT /47 'CASE' LABELS AND 'CASE' EXPRESSIONS MUST AGREE IN TYPE./ E48,TEXT /48 ILLEGAL ARGUMENT TYPE FOR THIS FUNCTION./ E49,TEXT /49 SUBSCRIPTS, CASE LABELS ARE LIMITED TO -2048 < X < 2048 ./ E50,TEXT /50 CONSTANT BEGINS WITH AN ILLEGAL CHARACTER./ E51,TEXT /51 MISSING := (USE NO SPACES BETWEEN : AND =)./ E52,TEXT /52 MISSING 'THEN'./ E53,TEXT /53 MISSING 'UNTIL'./ E54,TEXT /54 MISSING 'DO'./ E55,TEXT /55 MISSING 'TO' OR 'DOWNTO'./ E56,TEXT /56 MISSING 'BEGIN'./ E57,TEXT /57 MISSING 'END'./ E58,TEXT /58 A FACTOR MUST BEGIN WITH: NAME, CONSTANT, 'NOT' OR '('./ / XLIST