val.doc 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752
  1. .ll 72
  2. .wh 0 hd
  3. .wh 60 fo
  4. .de hd
  5. 'sp 5
  6. ..
  7. .de fo
  8. 'bp
  9. ..
  10. .tr ~
  11. . PARAGRAPH
  12. .de PP
  13. .sp
  14. ..
  15. . CHAPTER
  16. .de CH
  17. .br
  18. .ne 15
  19. .sp 3
  20. .in 0
  21. \\fB\\$1\\fR
  22. .in 5
  23. .PP
  24. ..
  25. . SUBCHAPTER
  26. .de SH
  27. .br
  28. .ne 10
  29. .sp
  30. .in 5
  31. \\fB\\$1\\fR
  32. .in 10
  33. .PP
  34. ..
  35. . INDENT START
  36. .de IS
  37. .sp
  38. .in +5
  39. ..
  40. . INDENT END
  41. .de IE
  42. .in -5
  43. .sp
  44. ..
  45. . DOUBLE INDENT START
  46. .de DS
  47. .sp
  48. .in +5
  49. .ll -5
  50. ..
  51. . DOUBLE INDENT END
  52. .de DE
  53. .ll +5
  54. .in -5
  55. .sp
  56. ..
  57. . EQUATION START
  58. .de EQ
  59. .sp
  60. .nf
  61. ..
  62. . EQUATION END
  63. .de EN
  64. .fi
  65. .sp
  66. ..
  67. . TEST
  68. .de TT
  69. .ti -5
  70. Test~\\$1:~
  71. .br
  72. ..
  73. . IMPLEMENTATION 1
  74. .de I1
  75. .br
  76. Implementation~1:
  77. ..
  78. . IMPLEMENTATION 2
  79. .de I2
  80. .br
  81. Implementation~2:
  82. ..
  83. .de CS
  84. .br
  85. ~-~\\
  86. ..
  87. .br
  88. .fi
  89. .sp 5
  90. .ce
  91. \fBPascal Validation Suite Report\fR
  92. .CH "Pascal processor identification"
  93. The ACK-Pascal compiler produces code for an EM machine
  94. as defined in [1].
  95. It is up to the implementor of the EM machine whether errors like
  96. integer overflow, undefined operand and range bound error are recognized or not.
  97. Therefore it depends on the EM machine implementation whether these errors
  98. are recognized in Pascal programs or not.
  99. The validation suite results of all known implementations are given.
  100. .PP
  101. There does not (yet) exist a hardware EM machine.
  102. Therefore, EM programs must be interpreted, or translated into
  103. instructions for a target machine.
  104. The following implementations currently exist:
  105. .IS
  106. .I1
  107. an interpreter running on a PDP-11 (using UNIX).
  108. The normal mode of operation for this interpreter is to check
  109. for undefined integers, overflow, range errors etc.
  110. .sp
  111. .I2
  112. a translator into PDP-11 instructions (using UNIX).
  113. Less checks are performed than in the interpreter, because the translator
  114. is intended to speed up the execution of well-debugged programs.
  115. .IE
  116. .CH "Test Conditions"
  117. Tester: E.G. Keizer
  118. .br
  119. Date: October 1983
  120. .br
  121. Validation Suite version: 3.0
  122. .PP
  123. The final test run is made with a slightly
  124. modified validation suite.
  125. .SH "Erroneous programs"
  126. Some test did not conform to the standard proposal of February 1979.
  127. It is this version of the standard proposal that is used
  128. by the authors of the validation suite.
  129. .IS
  130. .TT 6.6.3.7-4
  131. The semicolon between high and integer on line 17 is replaced
  132. by a colon.
  133. .sp
  134. .TT 6.7.2.2-13
  135. The div operator on line 14 replaced by mod.
  136. .CH "Conformance tests"
  137. Number of tests passed = 150
  138. .br
  139. Number of tests failed = 6
  140. .SH "Details of failed tests"
  141. .IS
  142. .TT 6.1.2-1
  143. Character sequences starting with the 8 characters 'procedur'
  144. or 'function' are
  145. erroneously classified as the word-symbols 'procedure' and 'function'.
  146. .sp
  147. .TT 6.1.3-2
  148. Identifiers identical in the first eight characters, but
  149. differing in ninth or higher numbered characters are treated as
  150. identical.
  151. .sp
  152. .TT 6.5.1-1
  153. ACK-Pascal requires all formal program parameters to be
  154. declared with type \fIfile\fP.
  155. .sp
  156. .TT 6.6.6.5-1
  157. Gives run-time error eof seen at call to eoln.
  158. A have a hunch that this is a error in the suit.
  159. .sp
  160. .TT 6.6.4.1-1
  161. Redefining the names of some standard procedures leads to incorrect
  162. behaviour of the runtime system.
  163. In this case it crashes without a sensible error message.
  164. .sp
  165. .TT 6.9.3.5.1-1
  166. This test can not be translated by our compiler because two
  167. non-identical variables are used in the same block with the same first eight
  168. characters.
  169. The test passed after replacement of one of those names.
  170. .IE
  171. .CH "Deviance tests"
  172. Number of deviations correctly detected = 120
  173. .br
  174. Number of tests not detecting deviations = 20
  175. .SH "Details of deviations"
  176. The following tests are compiled without a proper error
  177. indication although they do
  178. not conform to the standard.
  179. .IS
  180. .TT 6.1.6-5
  181. ACK-Pascal allows labels in the range 0..32767.
  182. A warning is produced when testing for deviations from the
  183. standard.
  184. .sp
  185. .TT 6.1.8-5
  186. A missing space between a number and a word symbol is not
  187. detected.
  188. .sp
  189. .TT 6.2.2-8
  190. .TT 6.3-6
  191. .TT 6.4.1-3
  192. .TT 6.6.1-3
  193. .TT 6.6.1-4
  194. Undetected scope error. The scope of an identifier should start at the
  195. beginning of the block in which it is declared.
  196. In the ACK-Pascal compiler the scope starts just after the declaration,
  197. however.
  198. .sp
  199. .TT 6.4.3.3-7
  200. The values of fields from one variant are accessible from
  201. another variant.
  202. The correlation is exact.
  203. .sp
  204. .TT 6.6.3.3-4
  205. The passing as a variable parameter of the selector of a
  206. variant part is not detected.
  207. A runtime error is produced because the variant selector is not
  208. initialized.
  209. .sp
  210. .TT 6.8.2.4-2
  211. .TT 6.8.2.4-3
  212. .TT 6.8.2.4-4
  213. .TT 6.8.2.4-5
  214. .TT 6.8.2.4-6
  215. The ACK-Pascal compiler does not restrict the places from where
  216. you may jump to a label by means of a goto-statement.
  217. .sp
  218. .TT 6.8.3.9-5
  219. .TT 6.8.3.9-6
  220. .TT 6.8.3.9-7
  221. .TT 6.8.3.9-16
  222. There are no errors produced for assignments to a variable
  223. in use as control-variable of a for-statement.
  224. .TT 6.8.3.9-8
  225. .TT 6.8.3.9-9
  226. Use of a controlled variable after leaving the loop without
  227. intervening initialization is not detected.
  228. .IE
  229. .CH "Error handling"
  230. The results depend on the EM implementation.
  231. .sp
  232. Number of errors correctly detected =
  233. .in +5
  234. .I1
  235. 32
  236. .I2
  237. 17
  238. .in -5
  239. Number of errors not detected =
  240. .in +5
  241. .I1
  242. 21
  243. .I2
  244. 36
  245. .in -5
  246. Number of errors incorrectly detected =
  247. .in +5
  248. .I1
  249. 2
  250. .I2
  251. 2
  252. .in -5
  253. .SH "Details of errors not detected"
  254. The following test fails because the ACK-Pascal compiler only
  255. generates a warning that does not prevent to run the tests.
  256. .IS
  257. .TT 6.6.2-8
  258. A warning is produced if there is no assignment to a function-identifier.
  259. .IE
  260. With this test the ACK-Pascal compiler issues an error message for a legal
  261. construct not directly related to the error to be detected.
  262. .IS
  263. .TT 6.5.5-2
  264. Program does not compile.
  265. Buffer variable of text file is not allowed as variable
  266. parameter.
  267. .IE
  268. The following errors are not detected at all.
  269. .IS
  270. .TT 6.2.1-11
  271. .I2
  272. The use of an undefined integer is not caught as an error.
  273. .sp
  274. .TT 6.4.3.3-10
  275. .TT 6.4.3.3-11
  276. .TT 6.4.3.3-12
  277. .TT 6.4.3.3-13
  278. The notion of 'current variant' is not implemented, not even if a tagfield
  279. is present.
  280. .sp
  281. .TT 6.4.5-15
  282. .TT 6.4.6-9
  283. .TT 6.4.6-10
  284. .TT 6.4.6-11
  285. .TT 6.5.3.2-2
  286. .I2
  287. Subrange bounds are not checked.
  288. .sp
  289. .TT 6.4.6-12
  290. .TT 6.4.6-13
  291. .TT 6.7.2.4-4
  292. If the base-type of a set is a subrange, then the set elements are not checked
  293. against the bounds of the subrange.
  294. Only the host-type of this subrange-type is relevant for ACK-Pascal.
  295. .sp
  296. .TT 6.5.4-1
  297. .I2
  298. Nil pointers are not detected.
  299. .sp
  300. .TT 6.5.4-2
  301. .I2
  302. Undefined pointers are not detected.
  303. .sp
  304. .TT 6.5.5-3
  305. Changing the file position while the window is in use as actual variable
  306. parameter or as an element of the record variable list of a with-statement
  307. is not detected.
  308. .sp
  309. .TT 6.6.2-9
  310. An undefined function result is not detected,
  311. because it is never used in an expression.
  312. .sp
  313. .TT 6.6.5.3-6
  314. .TT 6.6.5.3-7
  315. Disposing a variable while it is in use as actual variable parameter or
  316. as an element of the record variable list of a with-statement is not detected.
  317. .sp
  318. .TT 6.6.5.3-8
  319. .TT 6.6.5.3-9
  320. .TT 6.6.5.3-10
  321. It is not detected that a record variable, created with the variant form
  322. of new, is used as an operand in an expression or as the variable in an
  323. assignment or as an actual value parameter.
  324. .sp
  325. .TT 6.6.5.3-11
  326. Use of a variable that is not reinitialized after a dispose is
  327. not detected.
  328. .sp
  329. .TT 6.6.6.4-4
  330. .TT 6.6.6.4-5
  331. .TT 6.6.6.4-7
  332. .I2
  333. There are no range checks for pred, succ and chr.
  334. .sp
  335. .TT 6.6.6.5-6
  336. ACK-Pascal considers a rewrite of a file as a defining
  337. occurence.
  338. .sp
  339. .TT 6.7.2.2-8
  340. .TT 6.7.2.2-9
  341. .TT 6.7.2.2-10
  342. .TT 6.7.2.2-12
  343. .I2
  344. Division by 0 or integer overflow is not detected.
  345. .sp
  346. .TT 6.8.3.9-18
  347. The use of the some control variable in two nested for
  348. statements in not detected.
  349. .sp
  350. .TT 6.8.3.9-19
  351. Access of a control variable after leaving the loop results in
  352. the final-value, although an error should be produced.
  353. .sp
  354. .TT 6.9.3.2-3
  355. The program stops with a file not open error.
  356. The rewrite before the write is missing in the program.
  357. .sp
  358. .TT 6.9.3.2-4
  359. .TT 6.9.3.2-5
  360. Illegal FracDigits values are not detected.
  361. .CH "Implementation dependence"
  362. Number of tests run = 14
  363. .br
  364. Number of tests incorrectly handled = 0
  365. .SH "Details of implementation dependence"
  366. .IS
  367. .TT 6.1.9-5
  368. Alternate comment delimiters are implemented
  369. .sp
  370. .TT 6.1.9-6
  371. The equivalent symbols @ for ^, (. for [ and .) for ] are not
  372. implemented.
  373. .sp
  374. .TT 6.4.2.2-10
  375. Maxint = 32767
  376. .sp
  377. .TT 6.4.3.4-5
  378. Only elements with non-negative ordinal value are allowed in sets.
  379. .sp
  380. .TT 6.6.6.1-1
  381. Standard procedures and functions are not allowed as parameters.
  382. .sp
  383. .TT 6.6.6.2-11
  384. Details of the machine characteristics regarding real numbers:
  385. .IS
  386. .nf
  387. beta = 2
  388. t = 56
  389. rnd = 1
  390. ngrd = 0
  391. machep = -56
  392. negep = -56
  393. iexp = 8
  394. minexp = -128
  395. maxexp = 127
  396. eps = 1.387779e-17
  397. epsneg = 1.387779e-17
  398. xmin = 2.938736e-39
  399. xmax = 1.701412e+38
  400. .fi
  401. .IE
  402. .sp
  403. .TT 6.7.2.3-3
  404. .TT 6.7.2.3-4
  405. All operands of boolean expressions are evaluated.
  406. .sp
  407. .TT 6.8.2.2-1
  408. .TT 6.8.2.2-2
  409. The expression in an assignment statement is evaluated
  410. before the variable selection if this involves pointer
  411. dereferencing or array indexing.
  412. .sp
  413. .TT 6.8.2.3-2
  414. Actual parameters are evaluated in reverse order.
  415. .sp
  416. .TT 6.9.3.2-6
  417. The default width for integer, Boolean and real are 6, 5 and 13.
  418. .sp
  419. .TT 6.9.3.5.1-2
  420. The number of digits written in an exponent is 2.
  421. .sp
  422. .TT 6.9.3.6-1
  423. The representations of true and false are (~true) and (false).
  424. The parenthesis serve to indicate width.
  425. .IE
  426. .CH "Quality measurement"
  427. Number of tests run = 60
  428. .br
  429. Number of tests handled incorrectly = 1
  430. .SH "Results of tests"
  431. Several test perform operations on reals on indicate the error
  432. introduced by these operations.
  433. For each of these tests the following two quality measures are extracted:
  434. .sp
  435. .in +5
  436. maxRE:~~maximum relative error
  437. .br
  438. rmsRE:~~root-mean-square relative error
  439. .in -5
  440. .sp 2
  441. .IS
  442. .TT 1.2-1
  443. .I1
  444. 25 thousand Whetstone instructions per second.
  445. .I2
  446. 169 thousand Whetstone instructions per second.
  447. .sp
  448. .TT 1.2-2
  449. The value of (TRUEACC-ACC)*2^56/100000 is 1.4 .
  450. This is well within the bounds specified in [3].
  451. .br
  452. The GAMM measure is:
  453. .I1
  454. 238 microseconds
  455. .I2
  456. 26.3 microseconds.
  457. .sp
  458. .TT 1.2-3
  459. The number of procedure calls calculated in this test exceeds
  460. the maximum integer value.
  461. The program stops indicating overflow.
  462. .sp
  463. .TT 6.1.3-3
  464. The number of significant characters for identifiers is 8.
  465. .sp
  466. .TT 6.1.5-8
  467. There is no maximum to the line length.
  468. .sp
  469. .TT 6.1.5-9
  470. The error message "too many digits" is given for numbers larger
  471. than maxint.
  472. .sp
  473. .TT 6.1.5-10
  474. .TT 6.1.5-11
  475. .TT 6.1.5-12
  476. Normal values are allowed for real constants and variables.
  477. .sp
  478. .TT 6.1.7-14
  479. A reasonably large number of strings is allowed.
  480. .sp
  481. .TT 6.1.8-6
  482. No warning is given for possibly unclosed comments.
  483. .sp
  484. .TT 6.2.1-12
  485. .TT 6.2.1-13
  486. .TT 6.2.1-14
  487. .TT 6.2.1-15
  488. .TT 6.5.1-2
  489. Large lists of declarations are possible in each block.
  490. .sp
  491. .TT 6.4.3.2-6
  492. An 'array[integer] of' is not allowed.
  493. .sp
  494. .TT 6.4.3.2-7
  495. .TT 6.4.3.2-8
  496. Large values are allowed for arrays and indices.
  497. .sp
  498. .TT 6.4.3.3-14
  499. Large amounts of case-constant values are allowed in variants.
  500. .sp
  501. .TT 6.4.3.3-15
  502. Large amounts of record sections can appear in the fixed part of
  503. a record.
  504. .sp
  505. .TT 6.4.3.3-16
  506. Large amounts of variants are allowed in a record.
  507. .TT 6.4.3.4-4
  508. Size and speed of Warshall's algorithm depend on the
  509. implementation of EM:
  510. .IS
  511. .I1
  512. .br
  513. size: 122 bytes
  514. .br
  515. speed: 5.2 seconds
  516. .sp
  517. .I2
  518. .br
  519. size: 196 bytes
  520. .br
  521. speed: 0.7 seconds
  522. .IE
  523. .TT 6.5.3.2-3
  524. Deep nesting of array indices is allowed.
  525. .sp
  526. .TT 6.5.3.2-4
  527. .TT 6.5.3.2-5
  528. Arrays can have at least 8 dimensions.
  529. .sp
  530. .TT 6.6.1-8
  531. Deep static nesting of procedure is allowed.
  532. .sp
  533. .TT 6.6.3.1-6
  534. Large amounts of formal parameters are allowed.
  535. .sp
  536. .TT 6.6.5.3-12
  537. Dispose is fully implemented.
  538. .sp
  539. .TT 6.6.6.2-6
  540. Test sqrt(x): no errors.
  541. The error is within acceptable bounds.
  542. .in +5
  543. maxRE:~~2~**~-55.50
  544. .br
  545. rmsRE:~~2~**~-57.53
  546. .in -5
  547. .sp
  548. .TT 6.6.6.2-7
  549. Test arctan(x): may cause underflow or overflow errors.
  550. The error is within acceptable bounds.
  551. .in +5
  552. .br
  553. maxRE:~~2~**~-55.00
  554. .br
  555. rmsRE:~~2~**~-56.36
  556. .in -5
  557. .sp
  558. .TT 6.6.6.2-8
  559. Test exp(x): may cause underflow or overflow errors.
  560. The error is not within acceptable bounds.
  561. .in +5
  562. maxRE:~~2~**~-50.03
  563. .br
  564. rmsRE:~~2~**~-51.03
  565. .in -5
  566. .sp
  567. .TT 6.6.6.2-9
  568. Test sin(x): may cause underflow errors.
  569. The error is not within acceptable bounds.
  570. .in +5
  571. maxRE:~~2~**~-38.20
  572. .br
  573. rmsRE:~~2~**~-43.68
  574. .in -5
  575. .sp
  576. Test cos(x): may cause underflow errors.
  577. The error is not within acceptable bounds.
  578. .in +5
  579. maxRE:~~2~**~-41.33
  580. .br
  581. rmsRE:~~2~**~-46.62
  582. .in -5
  583. .sp
  584. .TT 6.6.6.2-10
  585. Test ln(x):
  586. The error is not within acceptable bounds.
  587. .in +5
  588. maxRE:~~2~**~-54.05
  589. .br
  590. rmsRE:~~2~**~-55.77
  591. .in -5
  592. .sp
  593. .TT 6.7.1-3
  594. .TT 6.7.1-4
  595. .TT 6.7.1-5
  596. Complex nested expressions are allowed.
  597. .sp
  598. .TT 6.7.2.2-14
  599. Test real division:
  600. The error is within acceptable bounds.
  601. .in +5
  602. maxRE:~~0
  603. .br
  604. rmsRE:~~0
  605. .in -5
  606. .sp
  607. .TT 6.7.2.2-15
  608. Operations of reals in the integer range are exact.
  609. .sp
  610. .TT 6.7.3-1
  611. .TT 6.8.3.2-1
  612. .TT 6.8.3.4-2
  613. .TT 6.8.3.5-15
  614. .TT 6.8.3.7-4
  615. .TT 6.8.3.8-3
  616. .TT 6.8.3.9-20
  617. .TT 6.8.3.10-7
  618. Static deep nesting of function calls,
  619. compound statements, if statements, case statements, repeat
  620. loops, while loops, for loops and with statements is possible.
  621. .sp
  622. .TT 6.8.3.2-2
  623. Large amounts of statements are allowed in a compound
  624. statement.
  625. .sp
  626. .TT 6.8.3.5-12
  627. The compiler requires case constants to be compatible with
  628. the case selector.
  629. .sp
  630. .TT 6.8.3.5-13
  631. .TT 6.8.3.5-14
  632. Large case statements are possible.
  633. .sp
  634. .TT 6.9-2
  635. Recursive IO on the same file is well-behaved.
  636. .sp
  637. .TT 6.9.1-6
  638. The reading of real values from a text file is done with
  639. sufficient accuracy.
  640. .in +5
  641. maxRE:~~2~**~-54.61
  642. .br
  643. rmsRE:~~2~**~-56.32
  644. .in -5
  645. .sp
  646. .TT 6.9.1-7
  647. .TT 6.9.2-2
  648. .TT 6.9.3-3
  649. .TT 6.9.4-2
  650. Read, readln, write and writeln may have large amounts of
  651. parameters.
  652. .sp
  653. .TT 6.9.1-8
  654. The loss of precision for reals written on a text file and read
  655. back is:
  656. .in +5
  657. maxRE:~~2~**~-53.95
  658. .br
  659. rmsRE:~~2~**~-55.90
  660. .in -5
  661. .sp
  662. .TT 6.9.3-2
  663. File IO buffers without trailing marker are correctly flushed.
  664. .sp
  665. .TT 6.9.3.5.2-2
  666. Reals are written with sufficient accuracy.
  667. .in +5
  668. maxRE:~~0
  669. .br
  670. rmsRE:~~0
  671. .in -5
  672. .IE
  673. .CH "Level 1 conformance tests"
  674. Number of test passed = 4
  675. .br
  676. Number of tests failed = 1
  677. .SH "Details of failed tests"
  678. .IS
  679. .TT 6.6.3.7-4
  680. An expression indicated by parenthesis whose
  681. value is a conformant array is not allowed.
  682. .IE
  683. .CH "Level 1 deviance tests"
  684. Number of deviations correctly detected = 4
  685. .br
  686. Number of tests not detecting deviations = 0
  687. .IE
  688. .CH "Level 1 error handling"
  689. The results depend on the EM implementation.
  690. .sp
  691. Number of errors correctly detected =
  692. .in +5
  693. .I1
  694. 1
  695. .I2
  696. 0
  697. .in -5
  698. Number of errors not detected =
  699. .in +5
  700. .I1
  701. 0
  702. .I2
  703. 1
  704. .in -5
  705. .SH "Details of errors not detected"
  706. .IS
  707. .TT 6.6.3.7-9
  708. .I2
  709. Subrange bounds are not checked.
  710. .IE
  711. .CH "Level 1 quality measurement"
  712. Number of tests run = 1
  713. .SH "Results of test"
  714. .IS
  715. .TT 6.6.3.7-10
  716. Large conformant arrays are allowed.
  717. .IE
  718. .CH "Extensions"
  719. Number of tests run = 3
  720. .SH Details of test failed
  721. .IS
  722. .TT 6.1.9-7
  723. The alternative relational operators are not allowed.
  724. .sp
  725. .TT 6.1.9-8
  726. The alternative symbols for colon, semicolon and assignment are
  727. not allowed.
  728. .sp
  729. .TT 6.8.3.5-16
  730. The otherwise selector in case statements is not allowed.
  731. .IE
  732. .CH "References"
  733. .ti -5
  734. [1]~~\
  735. A.S.Tanenbaum, E.G.Keizer, J.W.Stevenson, Hans van Staveren,
  736. "Description of a machine architecture for use with block structured
  737. languages",
  738. Informatica rapport IR-81.
  739. .ti -5
  740. [2]~~\
  741. ISO standard proposal ISO/TC97/SC5-N462, dated February 1979.
  742. The same proposal, in slightly modified form, can be found in:
  743. A.M.Addyman e.a., "A draft description of Pascal",
  744. Software, practice and experience, May 1979.
  745. An improved version, received March 1980,
  746. is followed as much as possible for the
  747. current ACK-Pascal.
  748. .ti -5
  749. [3]~~\
  750. B. A. Wichman and J du Croz,
  751. A program to calculate the GAMM measure, Computer Journal,
  752. November 1979.