1 08/04/86 Multics Pascal implementation restrictions and
2 deviations from ISO standard
3
4 This segment lists the size restrictions and other limits imposed by
5 the Multics implementation of Pascal. See "Implementation
6 restrictions" below. It also lists any features that are omitted from
7 the accepted ISO standard. See "Deviations from standard" below.
8
9
10 Implementation restrictions:
11 The following numerical restrictions are properties of Multics Pascal:
12
13 Maximum length of identifier names = 32 characters
14
15 Maximum positive integer maxint = 34359738367
16
17 Maximum positive real maxreal = 1.70141183460469232E+38
18
19 Minimum positive real minreal = 1.46936793852785938E-39
20
21 Maximum set range = 288 elements
22 It is not possible to define a set of x..y if y < 0 or y > 287 .
23 or if ord y > 287.
24
25 Maximum storage for global variables
26 declared in outer procedure and not imported or exported
27 = 32K words
28
29 Maximum storage for local variables internal to procedures
30 = 32K words
31
32
33 Deviations from standard:
34 Although Multics Pascal adheres to the ISO Pascal standard, certain
35 incompatible deviations exist in its implementation. These are listed
36 below. Numbers in parentheses eg 6.2.3.5 refer to the ISO Pascal
37 standard document.
38
39 o The concept of an undefined variable is not implemented
40 i.e. the compiler does not "flag" undefined variables;
41 their use is not detected as an error. The following undefined
42 variables are not implemented:
43
44 - uninitialized variables 6.2.3.5 6.6.5.4.
45
46 - the control variable of a "for" statement after the
47 "for" statement 6.8.3.9
48
49 - the field of an inactive variant or an uninitialized
50 field 6.4.3.3
51
52 - the buffer variable after a "put" statement
53
54 - an undefined pointer after a call to "dispose" has
55 a null value6.6.5.3
56
57 o In a "dispose", no error is detected if the pointer points to
58 a variable that is the actual variable of an active
59 procedure or used with an active "with" statement
60 6.6.5.3.
61
62 o In a "dispose" of the long form, it is generally not an
63 error if the parameters passed do not have the same value
64 or are not of the same number than in the corresponding
65 "new" statement the control is perfomed only on the
66 length.
67
68 o No error is detected if you use in an expression, assign in a
69 statement, or pass as an actual parameter a variable
70 created by a "new" of the long form 6.6.5.3.
71
72 o No error is detected if you modify a selector of a variant when
73 it has been defined in a "new" statement of the long form
74 6.6.5.3.
75
76 o A component of an array cannot be a file 6.4.3.2.
77
78 o A record cannot have a component of file type 6.4.3.3.
79
80 o Using a component of a record that has not been initialized
81 is not detected as an error. Using a component of a record
82 when the case selector has an incorrect value is not
83 detected as an error 6.4.3.3.
84
85 o The maximum size of a set is 288 elements. For that reason, it
86 is impossible to define set_type = set of ordinal_type if
87 the ordinal type has more than 288 elements 6.4.3.4.
88
89 o "pack" and "unpack" are not allowed on conformant arrays
90 6.6.3.7.
91
92 o No error is detected if the current file position of a file
93 "f" is altered while the file's buffer variable "f^" is an
94 actual variable parameter, or an element of the record
95 variable list of a "with" statement, or both 6.5.5.
96
97 o * .... * is a comment, as well as .... . But "*"
98 and "" "*)" and "" are not synonyms. A comment which
99 begins with "*" must end with "*" and a comment which
100 begins with "" must end with "" 6.1.9.
101
102 o set overlapping is not always detected 6.4.5 6.4.6
103 6.7.2.4.
104
105 o Modification of the selector field of a record when this
106 record has been allocated by a "new" statement of the long
107 form using the value of this field is not detected as an
108 error .
109
110 o A selector field can be passed to a procedure 6.6.3.3.
111
112 o An error is not detected if the control variable of a "for"
113 statement is modified in a procedure contained in the block
114 6.8.3.9.
115
116 o An array which is component of a packed type can be passed as
117 an actual parameter to a variable conformant array.
118 6.6.3.7.3.
119
120 o Two string constants of the same length can be passed
121 as actual parameters to variables conformant arrays of same schema
122 6.6.3.8.