Sorry, here is another copy with that idiotic .PDF "fi" character removed.
Scott Moore wrote:
> 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 .
> field-designator-identifier = identifier .
> 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 defining-point of each of the field-identiers associated
> with components of the
> record-type possessed by the record-variable as a
> field-designator-identier for the region that is the
> statement of the with-statement; each applied occurrence of a
> field-designator-identier shall denote
> that component of the record-variable that is associated with the
> field-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 ****table ISO 7185
Pascal
compiler system: http://www.moorecad.com/ippas
Good does not always win. But good is more patient.


|