I omitted the additional type and the first compilation error has been removed. Now I have two additional compilation errors. My code is: program Ex1 (input, output); type NumNode = record Value: integer; pNext: ^ NumNode; end; nNumber = record DigitsAmount: integer; DigitValue:^ NumNode; MSD: integer; DigitBase: integer; end; function nNumberIsEmpty (Num: nNumber): boolean; begin nNumberIsEmpty := (Num.DigitValue=0); end; function nNumberPop (var Number: nNumber): integer; var pNextValue:^ NumNode; begin if (nNumberIsEmpty(Number)) then nNumberPop:=0; else begin Number.DigitsAmount:=Number.DigitsAmount-1; pNextValue := Number.DigitValue^.pNext; dispose (Number.DigitValue); Number.DigitValue:=pNextValue; if (Number.DigitsAmount=0) then begin Number.MSD:=0; nNumberPop:=0; end else begin nNumberPop:=pNextValue^.Value; end; end; end; function nString2nList (String:^ char; var Number:nNumber;):boolean; begin end; begin writeln ('Hello world'); end. The errors I get: ex1.pas: In function 'Nnumberisempty': ex1.pas:17: invalid operands to binary = ex1.pas: At top level: ex1.pas:44: parse error before '^' What causes these errors? --------------------------------- Do you Yahoo!? Yahoo! Small Business - Try our new resources site!