CBFalconer wrote:
> I Forget wrote:
>
>>I've made some additions to the short text file that goes with Byte
Chess
>>0.5, plus a 'diff' list of changes from the version I originally
>>distributed.
>>
>
>
> The follow list of errors are from a run of GPC20021128/gcc-3.2.1
>
> [1] c:\p\src\chess05>gpc chess0~1.pas
> chess0~1.pas: In procedure `Inisyn':
> chess0~1.pas:674: warning: ISO Pascal forbids this use of packed
> record fields
This refers to the idea that "with" establishes a variable reference
to a component of a record, and that can't occur in the case of a
packed record.
That sure sounds sensible, but I'll be darned if I can find any
reference to it in the ISO 7185 standard. Anyone ?
===================================================================================
The standard says:
6.8.3.10 With-statements
with-statement = 'with' record-variable-list 'do' statement .
record-variable-list = record-variable f ',' record-variable g .
eld-designator-identier = identier .
A with-statement shall specify the execution of the statement of the
with-statement. The occurrence
of a record-variable as the only record-variable in the
record-variable-list of a with-statement shall
58
ISO/IEC 7185:1990(E)
constitute the dening-point of each of the eld-identiers associated
with components of the
record-type possessed by the record-variable as a
eld-designator-identier for the region that is the
statement of the with-statement; each applied occurrence of a
eld-designator-identier shall denote
that component of the record-variable that is associated with the
eld-identier by the record-type.
The record-variable shall be accessed before the statement of the
with-statement is executed, and
that access shall establish a reference to the variable during the entire
execution of the statement of
the with-statement.
The statement
with v1,v2,...,vn do s
shall be equivalent to
with v1 do
with v2 do
....
with vn do s
Example:
with date do
if month = 12 then
begin month := 1; year := year + 1
end
else month := month+1
has the same eect on the variable date as
if date.month = 12 then
begin date.month := 1; date.year := date.year+1
end
else date.month := date.month+1
===================================================================================
Tends to imply that it is ok, because it states "equvalence" in the form
of valid
assignments that would work regardless of the packed status.
> chess0~1.pas:683: warning: ISO Pascal forbids this use of packed
> record fields
> chess0~1.pas: In procedure `Lstmov':
> chess0~1.pas:2207: warning: `;' after `then'
> chess0~1.pas: In function `Rdrgnt':
> chess0~1.pas:2792: warning: specified set member range is empty
Yes, thats a CDC character set dependency :-(
You have to give it to GPC, it checks pretty well.
Couple of these:
> chess0~1.pas:2792: warning: `... in []' (empty set) is always
> `False'
> chess0~1.pas:2799: warning: specified set member range is empty
> chess0~1.pas:2799: warning: `... in []' (empty set) is always
> `False'
> chess0~1.pas: In procedure `Boacmd':
> chess0~1.pas:2974: warning: specified set member range is empty
> chess0~1.pas:2974: warning: `... in []' (empty set) is always
> `False'
> chess0~1.pas: In procedure `Pamcmd':
> chess0~1.pas:3136: passing arg 1 of `Prinam' from incompatible
> array
> chess0~1.pas:3139: passing arg 1 of `Prinam' from incompatible
> array
Thats a problem. I think that also failed Stewards Irie Pascal,
if I recall. No clue why IP Pascal passed on it.
> chess0~1.pas: In procedure `Yrmove':
> chess0~1.pas:3959: warning: `;' after `then'
> chess0~1.pas:3960: warning: `;' after `then'
> chess0~1.pas:3961: warning: `;' after `then'
> chess0~1.pas:3968: warning: `;' after `then'
> chess0~1.pas:3969: warning: `;' after `then'
> chess0~1.pas:3970: warning: `;' after `then'
Warnings. Gotta love em. Not going to fix those personally :-)
>
>
>
> The following list of non-warning errors from a run of PascalP on
> it primarily shows failure to declare labels properly. Some of
> them are due to the fact that PascalP only keeps 8 chars of
> identifiers (the line 100 error), and has a maxint of 32767. The
> implementation restriction errors appear to be from passing
> procedures/functions, which are not implemented. You can pick up a
> DOS/Windows executable version of PascalP on my site.
>
> Contrary to appearances, the identifier declared twice is
> arraytkoftw, and shouldn't show up on other compilers.
>
> PASCALP (pasctext, pasclist, prr, ef, output) [parm] V 3.1.9T
> 33000 0:d PZX8 = 16777216; (*
> 2^(ZX-7) *)
> **** ^100
> 100. Numeric constant exceeds range
> 149000 0:d arraytkoftw = array [tk] of tw;
> **** ^30
> 30. Identifier declared twice
> 1261000 141: 2 DIV (4*INTI+FTRPWN) DIV
> 262144,16320),MBLTE);
> **** ^100
> 100. Numeric constant exceeds range
> 1658000 54: 4 LINDX[JNTK] := JNTW; (*
> MOVES ARRAY LIMIT *)
> **** ^55
> 55. Operand type conflict
> 1782000 442: 4 JNTW := LINDX[JNTK]; (*
> RESET MOVE GENERATION
> **** ^55
> 55. Operand type conflict
> 1812000 140: 4 LINDX[JNTK] := JNTW; (*
> MOVES ARRAY LIMIT *)
> **** ^55
> 55. Operand type conflict
> 2399000 28: 3 BSTMV[A] := INDEX[A+1]; (*
> SAVE BEST MOVE *)
> **** ^55
> 55. Operand type conflict
> 2402000 58: 5 INRM := MOVES[BSTMV[A]]; (*
> SAVE BEST MOVE *)
> **** ^41,65^55
> 41. Index type must be scalar or subrange
> 55. Operand type conflict
> 65. Index type incompatible with declaration
> 2403000 86: 6 FOR INTW := BSTMV[A]-1 DOWNTO AW+1 DO
> **** ^60
> 60. Illegal type of operand(s)
> 2406000 166: 5 BSTMV[AK] := AW+1; (*
> POINTS TO BEST MOVE *)
> **** ^55
> 55. Operand type conflict
> 2409000 191: 5 IF NOT MOVES[BSTMV[A]].RMCA THEN
> **** ^41,65^78
> 41. Index type must be scalar or subrange
> 65. Index type incompatible with declaration
> 78. No such field in this record
> 2410000 222: 3 KILLR[JNTK] := MOVES[BSTMV[A]];(*
> SAVE KILLER MOVE *)
> ****
> ^41,65^55
> 41. Index type must be scalar or subrange
> 55. Operand type conflict
> 65. Index type incompatible with declaration
> 2474000 66: 4 GOTO 22; (*
> EXIT SELECT *)
> **** ^90
> 90. Undeclared label
> 2493000 130: 4 GOTO 22; (*
> EXIT SELECT *)
> **** ^90
> 90. Undeclared label
> 2503000 32: 4 INDEX[JNTK+1] := LINDX[JNTK]-1; (*
> RESET MOVES POINTER *)
> **** ^60
> 60. Illegal type of operand(s)
> 2505000 49: 4 GOTO 21; (*
> EXECUTE NEXT MODE *)
> **** ^90
> 90. Undeclared label
> 2581000 668: 6 FOR IMTW := LINDX[JNTK] TO
> JNTW-1 DO
> **** ^70
> 70. Illegal type of expression
> 2599000 843: 6 FOR IMTW := LINDX[JNTK] TO
> JNTW-1 DO
> **** ^70
> 70. Illegal type of expression
> 2649000 1239: 5 JNTW := LINDX[AK+1]; (*
> POINT TO ALREADY GENERATED MOVES *)
> **** ^55
> 55. Operand type conflict
> 2665000 15: 2 BSTMV[AK] := AW; (*
> INITIALIZE MOVE *)
> **** ^55
> 55. Operand type conflict
> 2736000 753: 2 SEARCH := BSTMV[AK]; (*
> RETURN BEST MOVE *)
> **** ^55
> 55. Operand type conflict
> 2770000 206: 3 GOTO 11; (*
> COMMAND EXIT *)
> **** ^90
> 90. Undeclared label
> 2821000 28: 3 PROCEDURE XXXCMD); (*
> PROCEDURE TO EXECUTE COMNAND *)
> **** ^108
> 108. Implementation restriction
> 2827000 18: 5 GOTO 11; (*
> EXIT *)
> **** ^90
> 90. Undeclared label
> 2989000 3: 3 GOTO 9; (*
> END PROGRAM *)
> **** ^90
> 90. Undeclared label
> 3001000 36: 3 GOTO 2; (*
> EXECUTE MACHINES MOVE *)
> **** ^90
> 90. Undeclared label
> 3008000 3: 3 GOTO 1; (*
> INITIALIZE FOR A NEW GAME *)
> **** ^90
> 90. Undeclared label
> 3025000 27: 6 GOTO 21; (*
> EXIT *)
> **** ^90
> 90. Undeclared label
> 3079000 42: 6 GOTO 21; (*
> EXIT *)
> **** ^90
> 90. Undeclared label
> 3211000 153: 6 GOTO 21; (*
> SWITCH OPTION EXIT *)
> **** ^90
> 90. Undeclared label
> 3251000 74: 6 GOTO 21; (*
> EXIT STATUS OPTION *)
> **** ^90
> 90. Undeclared label
> 3328000 18: 4 PROCEDURE STAXXX); (*
> PROCEDURE TO EXECUTE IF EQUAL *)
> **** ^108
> 108. Implementation restriction
> 3334000 18: 6 GOTO 21; (*
> EXIT STATUS OPTION *)
> **** ^90
> 90. Undeclared label
> 3345000 47: 5 STAOPT('D ',STADRK);
> **** ^108
> 108. Implementation restriction
> 3346000 67: 5 STAOPT('EP ',STAENP);
> **** ^108
> 108. Implementation restriction
> 3347000 87: 5 STAOPT('G ',STAGOS);
> **** ^108
> 108. Implementation restriction
> 3348000 107: 5 STAOPT('L ',STALIT);
> **** ^108
> 108. Implementation restriction
> 3349000 127: 5 STAOPT('N ',STANUM);
> **** ^108
> 108. Implementation restriction
> 3350000 147: 5 STAOPT('OO ',STACAK);
> **** ^108
> 108. Implementation restriction
> 3351000 167: 5 STAOPT('OOO ',STACAQ);
> **** ^108
> 108. Implementation restriction
> 3382000 243: 4 RDRCMD('BO ',BOACMD);
> **** ^108
> 108. Implementation restriction
> 3383000 263: 4 RDRCMD('EN ',ENDCMD);
> **** ^108
> 108. Implementation restriction
> 3384000 283: 4 RDRCMD('GO ',GONCMD);
> **** ^108
> 108. Implementation restriction
> 3385000 303: 4 RDRCMD('IN ',INICMD);
> **** ^108
> 108. Implementation restriction
> ABORT on errorcount=50
>
>
--
Samiam is Scott A. Moore
Personal web site: http:/www.moorecad.com/scott
My electronics engineering consulting site: http://www.moorecad.com
ISO 7185 Standard Pascal web site: http://www.moorecad.com/standardpascal
Classic Basic Games web site: http://www.moorecad.com/classicbasic
The IP Pascal web site, a high performance, highly portable ISO 7185
Pascal
compiler system: http://www.moorecad.com/ippas
Good does not always win. But good is more patient.


|