\unnumbchapentry {Welcome to GNU Pascal, \dots{}}{1}
\unnumbchapentry {GNU GENERAL PUBLIC LICENSE}{3}
\unnumbsecentry{Preamble}{3}
\unnumbsecentry{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}{4}
\unnumbsecentry{How to Apply These Terms to Your New Programs}{7}
\unnumbchapentry {Funding Free Software}{9}
\unnumbchapentry {Protect Your Freedom---Fight ``Look And Feel''}{11}
\unnumbchapentry {The GNU Manifesto}{15}
\unnumbsecentry{What's GNU? Gnu's Not Unix!}{15}
\unnumbsecentry{Why I Must Write GNU}{16}
\unnumbsecentry{Why GNU Will Be Compatible with Unix}{16}
\unnumbsecentry{How GNU Will Be Available}{16}
\unnumbsecentry{Why Many Other Programmers Want to Help}{16}
\unnumbsecentry{How You Can Contribute}{17}
\unnumbsecentry{Why All Computer Users Will Benefit}{17}
\unnumbsecentry{Some Easily Rebutted Objections to GNU's Goals}{18}
\unnumbchapentry {Contributors to GNU Pascal}{25}
\chapentry {Installing GNU Pascal}{1}{27}
\secentry {Configuration dependent compilation notes}{1}{1}{28}
\subsecentry {Alpha OSF/1}{1}{1}{1}{28}
\subsecentry {MS-DOS with DJGPP}{1}{1}{2}{29}
\subsecentry {MS-DOS or OS/2 with EMX}{1}{1}{3}{29}
\subsecentry {Windows NT and Windows 95 with cygwin32}{1}{1}{4}{30}
\secentry {Building and Installing a cross-compiler}{1}{2}{30}
\subsecentry {Steps of Cross-Compilation}{1}{2}{1}{31}
\subsecentry {Configuring GNU CC as a cross-compiler}{1}{2}{2}{31}
\subsecentry {Building the Pascal cross-compiler}{1}{2}{3}{31}
\subsecentry {Crossbuilding a compiler.}{1}{2}{4}{32}
\secentry {Installation instructions for a GPC binary distribution}{1}{3}{33}
\chapentry {GNU Pascal Command Options}{2}{35}
\secentry {Option Summary}{2}{1}{36}
\secentry {Options Controlling the Kind of Output}{2}{2}{40}
\secentry {Options Controlling Pascal Dialect}{2}{3}{41}
\secentry {Options for Code Generation Conventions}{2}{4}{43}
\secentry {Options to Request or Suppress Warnings}{2}{5}{45}
\secentry {Options for Debugging Your Program or GNU Pascal}{2}{6}{50}
\secentry {Options That Control Optimization}{2}{7}{53}
\secentry {Options Controlling the Preprocessor}{2}{8}{56}
\secentry {Passing Options to the Assembler}{2}{9}{58}
\secentry {Options for Linking}{2}{10}{58}
\secentry {Options for Directory Search}{2}{11}{60}
\secentry {Specifying Target Machine and Compiler Version}{2}{12}{61}
\secentry {Hardware Models and Configurations}{2}{13}{62}
\subsecentry {M680x0 Options}{2}{13}{1}{62}
\subsecentry {VAX Options}{2}{13}{2}{63}
\subsecentry {SPARC Options}{2}{13}{3}{64}
\subsecentry {Convex Options}{2}{13}{4}{66}
\subsecentry {AMD29K Options}{2}{13}{5}{67}
\subsecentry {ARM Options}{2}{13}{6}{68}
\subsecentry {M88K Options}{2}{13}{7}{68}
\subsecentry {IBM RS/6000 and PowerPC Options}{2}{13}{8}{70}
\subsecentry {IBM RT Options}{2}{13}{9}{74}
\subsecentry {MIPS Options}{2}{13}{10}{75}
\subsecentry {Intel 386 Options}{2}{13}{11}{77}
\subsecentry {HPPA Options}{2}{13}{12}{79}
\subsecentry {Intel 960 Options}{2}{13}{13}{80}
\subsecentry {DEC Alpha Options}{2}{13}{14}{81}
\subsecentry {Clipper Options}{2}{13}{15}{82}
\subsecentry {H8/300 Options}{2}{13}{16}{82}
\subsecentry {Options for System V}{2}{13}{17}{82}
\secentry {Environment Variables Affecting GNU Pascal}{2}{14}{82}
\chapentry {The Programmer's Guide to GPC}{3}{85}
\secentry {Source Structures}{3}{1}{85}
\subsecentry {The Source Structure of Programs}{3}{1}{1}{86}
\subsecentry {The Source Structure of UCSD/Borland Pascal Units}{3}{1}{2}{86}
\subsecentry {The Source Structure of ISO-10206 Extended Pascal Modules}{3}{1}{3}{87}
\secentry {Data Types}{3}{2}{87}
\subsecentry {Integer Types}{3}{2}{1}{87}
\subsubsecentry {``Natural'' Integer Types} {3}{2}{1}{1} {87}
\subsubsecentry {``Main Branch'' Integer Types} {3}{2}{1}{2} {88}
\subsubsecentry {Integer Types with Specified Size} {3}{2}{1}{3} {88}
\subsubsecentry {Compatibility to other Pascal compilers} {3}{2}{1}{4} {89}
\subsubsecentry {Summary of Integer Types} {3}{2}{1}{5} {89}
\subsecentry {Subrange Types}{3}{2}{2}{90}
\subsecentry {Endianness}{3}{2}{3}{91}
\subsecentry {Alignment}{3}{2}{4}{91}
\secentry {Operators}{3}{3}{91}
\subsecentry {Built-in Operators}{3}{3}{1}{91}
\subsecentry {User-defined Operators}{3}{3}{2}{91}
\secentry {Schema Types}{3}{4}{92}
\secentry {Pointer Arithmetics}{3}{5}{94}
\secentry {Type Casts}{3}{6}{94}
\secentry {Object-orientated Programming}{3}{7}{98}
\secentry {Interfacing with Other Languages}{3}{8}{100}
\subsecentry {Importing Libraries from Other Languages}{3}{8}{1}{100}
\subsecentry {Exporting GPC Libraries to Other Languages}{3}{8}{2}{101}
\secentry {Run Time Library---Pascal Declarations}{3}{9}{102}
\chapentry {The Alphabetical GPC Language Reference}{4}{115}
\unnumbsecentry{abs}{116}
\unnumbsecentry{absolute}{118}
\unnumbsecentry{AlignOf}{120}
\unnumbsecentry{all}{121}
\unnumbsecentry{and}{122}
\unnumbsecentry{and then}{124}
\unnumbsecentry{and\unhbox \voidb@x \kern .06em \vbox {\hrule width.3em height.1ex}then}{125}
\unnumbsecentry{AnsiChar}{127}
\unnumbsecentry{append}{128}
\unnumbsecentry{arctan}{129}
\unnumbsecentry{arg}{130}
\unnumbsecentry{array}{131}
\unnumbsecentry{asm}{131}
\unnumbsecentry{asmname}{132}
\unnumbsecentry{Assign}{132}
\unnumbsecentry{attribute}{133}
\unnumbsecentry{begin}{133}
\unnumbsecentry{Bind}{134}
\unnumbsecentry{bindable}{134}
\unnumbsecentry{Binding}{135}
\unnumbsecentry{BindingType}{136}
\unnumbsecentry{BitSizeOf}{137}
\unnumbsecentry{BlockRead}{138}
\unnumbsecentry{BlockWrite}{139}
\unnumbsecentry{Boolean}{139}
\unnumbsecentry{break}{140}
\unnumbsecentry{Byte}{140}
\unnumbsecentry{ByteBool}{141}
\unnumbsecentry{ByteCard}{141}
\unnumbsecentry{ByteInt}{142}
\unnumbsecentry{C}{142}
\unnumbsecentry{C\unhbox \voidb@x \kern .06em \vbox {\hrule width.3em height.1ex}Language}{143}
\unnumbsecentry{Card}{143}
\unnumbsecentry{Cardinal}{144}
\unnumbsecentry{case}{145}
\unnumbsecentry{Char}{145}
\unnumbsecentry{ChDir}{146}
\unnumbsecentry{chr}{146}
\unnumbsecentry{close}{147}
\unnumbsecentry{cmplx}{147}
\unnumbsecentry{Comp}{148}
\unnumbsecentry{Complex}{148}
\unnumbsecentry{Concat}{149}
\unnumbsecentry{conjugate}{150}
\unnumbsecentry{Const}{150}
\unnumbsecentry{Constructor}{151}
\unnumbsecentry{continue}{151}
\unnumbsecentry{Copy}{152}
\unnumbsecentry{cos}{153}
\unnumbsecentry{CString}{153}
\unnumbsecentry{CString2String}{154}
\unnumbsecentry{Date}{154}
\unnumbsecentry{dec}{155}
\unnumbsecentry{default}{155}
\unnumbsecentry{DefineSize}{156}
\unnumbsecentry{Delete}{156}
\unnumbsecentry{Destructor}{157}
\unnumbsecentry{Dispose}{158}
\unnumbsecentry{div}{159}
\unnumbsecentry{do}{159}
\unnumbsecentry{Double}{160}
\unnumbsecentry{downto}{160}
\unnumbsecentry{else}{161}
\unnumbsecentry{empty}{161}
\unnumbsecentry{end}{162}
\unnumbsecentry{eof}{162}
\unnumbsecentry{eoln}{163}
\unnumbsecentry{EpsReal}{163}
\unnumbsecentry{eq}{164}
\unnumbsecentry{erase}{164}
\unnumbsecentry{Exit}{165}
\unnumbsecentry{exp}{165}
\unnumbsecentry{Export}{166}
\unnumbsecentry{extend}{166}
\unnumbsecentry{Extended}{167}
\unnumbsecentry{extern}{167}
\unnumbsecentry{external}{168}
\unnumbsecentry{false}{168}
\unnumbsecentry{far}{169}
\unnumbsecentry{FileMode}{170}
\unnumbsecentry{File}{170}
\unnumbsecentry{FilePos}{171}
\unnumbsecentry{FileSize}{171}
\unnumbsecentry{FillChar}{172}
\unnumbsecentry{flush}{173}
\unnumbsecentry{for}{174}
\unnumbsecentry{forward}{175}
\unnumbsecentry{frac}{175}
\unnumbsecentry{FreeMem}{176}
\unnumbsecentry{Function}{177}
\unnumbsecentry{ge}{177}
\unnumbsecentry{Get}{178}
\unnumbsecentry{GetFile}{179}
\unnumbsecentry{GetMem}{180}
\unnumbsecentry{GetTimeStamp}{181}
\unnumbsecentry{goto}{182}
\unnumbsecentry{gt}{182}
\unnumbsecentry{Halt}{183}
\unnumbsecentry{high}{184}
\unnumbsecentry{if}{184}
\unnumbsecentry{Im}{185}
\unnumbsecentry{import}{186}
\unnumbsecentry{Implementation}{187}
\unnumbsecentry{in}{187}
\unnumbsecentry{inc}{188}
\unnumbsecentry{Index}{188}
\unnumbsecentry{inherited}{189}
\unnumbsecentry{inline}{189}
\unnumbsecentry{InOutRes}{190}
\unnumbsecentry{InOutResStr}{190}
\unnumbsecentry{Input}{191}
\unnumbsecentry{Insert}{191}
\unnumbsecentry{int}{192}
\unnumbsecentry{Integer}{193}
\unnumbsecentry{Interface}{194}
\unnumbsecentry{IOresult}{194}
\unnumbsecentry{Label}{195}
\unnumbsecentry{LastPosition}{195}
\unnumbsecentry{le}{196}
\unnumbsecentry{length}{196}
\unnumbsecentry{ln}{197}
\unnumbsecentry{LoCase}{198}
\unnumbsecentry{LongCard}{198}
\unnumbsecentry{LongInt}{199}
\unnumbsecentry{LongestCard}{200}
\unnumbsecentry{LongestInt}{200}
\unnumbsecentry{LongestReal}{201}
\unnumbsecentry{LongestWord}{201}
\unnumbsecentry{LongReal}{202}
\unnumbsecentry{LongWord}{202}
\unnumbsecentry{low}{203}
\unnumbsecentry{lt}{204}
\unnumbsecentry{Mark}{204}
\unnumbsecentry{max}{205}
\unnumbsecentry{MaxChar}{205}
\unnumbsecentry{MaxInt}{206}
\unnumbsecentry{MaxReal}{206}
\unnumbsecentry{MedCard}{207}
\unnumbsecentry{MedInt}{207}
\unnumbsecentry{MedReal}{208}
\unnumbsecentry{MedWord}{208}
\unnumbsecentry{min}{209}
\unnumbsecentry{MinReal}{209}
\unnumbsecentry{MkDir}{210}
\unnumbsecentry{mod}{210}
\unnumbsecentry{Module}{211}
\unnumbsecentry{move}{211}
\unnumbsecentry{MoveLeft}{212}
\unnumbsecentry{MoveRight}{212}
\unnumbsecentry{near}{213}
\unnumbsecentry{ne}{214}
\unnumbsecentry{New}{215}
\unnumbsecentry{NewCString}{216}
\unnumbsecentry{Nil}{217}
\unnumbsecentry{not}{217}
\unnumbsecentry{object}{218}
\unnumbsecentry{odd}{219}
\unnumbsecentry{of}{219}
\unnumbsecentry{only}{220}
\unnumbsecentry{Operator}{220}
\unnumbsecentry{or}{221}
\unnumbsecentry{or else}{223}
\unnumbsecentry{or\unhbox \voidb@x \kern .06em \vbox {\hrule width.3em height.1ex}else}{224}
\unnumbsecentry{ord}{225}
\unnumbsecentry{others}{226}
\unnumbsecentry{otherwise}{226}
\unnumbsecentry{Output}{227}
\unnumbsecentry{pack}{227}
\unnumbsecentry{packed}{228}
\unnumbsecentry{page}{229}
\unnumbsecentry{pAnsiChar}{230}
\unnumbsecentry{ParamCount}{231}
\unnumbsecentry{ParamStr}{232}
\unnumbsecentry{pChar}{233}
\unnumbsecentry{Pointer}{234}
\unnumbsecentry{polar}{234}
\unnumbsecentry{pos}{235}
\unnumbsecentry{Position}{235}
\unnumbsecentry{pow}{236}
\unnumbsecentry{pred}{237}
\unnumbsecentry{Procedure}{238}
\unnumbsecentry{Program}{239}
\unnumbsecentry{protected}{239}
\unnumbsecentry{PtrCard}{240}
\unnumbsecentry{PtrInt}{240}
\unnumbsecentry{PtrWord}{241}
\unnumbsecentry{Put}{241}
\unnumbsecentry{Re}{242}
\unnumbsecentry{read}{243}
\unnumbsecentry{readln}{244}
\unnumbsecentry{ReadStr}{245}
\unnumbsecentry{Real}{245}
\unnumbsecentry{record}{246}
\unnumbsecentry{Release}{248}
\unnumbsecentry{rename}{248}
\unnumbsecentry{repeat}{249}
\unnumbsecentry{reset}{249}
\unnumbsecentry{restricted}{250}
\unnumbsecentry{Result}{250}
\unnumbsecentry{return}{251}
\unnumbsecentry{rewrite}{251}
\unnumbsecentry{RmDir}{252}
\unnumbsecentry{round}{252}
\unnumbsecentry{RunError}{253}
\unnumbsecentry{Seek}{253}
\unnumbsecentry{SeekRead}{254}
\unnumbsecentry{SeekUpdate}{254}
\unnumbsecentry{SeekWrite}{255}
\unnumbsecentry{Self}{255}
\unnumbsecentry{set}{256}
\unnumbsecentry{SetLength}{257}
\unnumbsecentry{SetType}{258}
\unnumbsecentry{ShortCard}{259}
\unnumbsecentry{ShortInt}{260}
\unnumbsecentry{ShortReal}{260}
\unnumbsecentry{ShortWord}{261}
\unnumbsecentry{Single}{262}
\unnumbsecentry{shl}{263}
\unnumbsecentry{shr}{264}
\unnumbsecentry{sin}{265}
\unnumbsecentry{SizeOf}{266}
\unnumbsecentry{SmallInt}{267}
\unnumbsecentry{sqr}{268}
\unnumbsecentry{sqrt}{270}
\unnumbsecentry{StandardError}{271}
\unnumbsecentry{StandardInput}{271}
\unnumbsecentry{StandardOutput}{272}
\unnumbsecentry{static}{272}
\unnumbsecentry{StdErr}{273}
\unnumbsecentry{Str}{274}
\unnumbsecentry{StrPCopy}{275}
\unnumbsecentry{String}{275}
\unnumbsecentry{String2CString}{276}
\unnumbsecentry{SubStr}{277}
\unnumbsecentry{succ}{278}
\unnumbsecentry{Text}{279}
\unnumbsecentry{then}{280}
\unnumbsecentry{Time}{280}
\unnumbsecentry{TimeStamp}{281}
\unnumbsecentry{to}{282}
\unnumbsecentry{to begin}{282}
\unnumbsecentry{to end}{283}
\unnumbsecentry{Trim}{283}
\unnumbsecentry{true}{284}
\unnumbsecentry{trunc}{284}
\unnumbsecentry{Truncate}{285}
\unnumbsecentry{Type}{285}
\unnumbsecentry{TypeOf}{286}
\unnumbsecentry{UnBind}{287}
\unnumbsecentry{Unit}{287}
\unnumbsecentry{unpack}{288}
\unnumbsecentry{until}{288}
\unnumbsecentry{UpCase}{289}
\unnumbsecentry{update}{290}
\unnumbsecentry{uses}{291}
\unnumbsecentry{Val}{292}
\unnumbsecentry{value}{293}
\unnumbsecentry{Var}{293}
\unnumbsecentry{virtual}{294}
\unnumbsecentry{Void}{294}
\unnumbsecentry{while}{295}
\unnumbsecentry{with}{295}
\unnumbsecentry{Word}{296}
\unnumbsecentry{write}{297}
\unnumbsecentry{writeln}{298}
\unnumbsecentry{WriteStr}{299}
\unnumbsecentry{xor}{300}
\chapentry {The GPC Source Reference}{5}{303}
\secentry {GPC's Lexical Analyzer}{5}{1}{303}
\secentry {Language Definition: GPC's Parser}{5}{2}{304}
\secentry {Tree Nodes}{5}{3}{306}
\secentry {Parameter Passing}{5}{4}{308}
\secentry {GPI files---GNU Pascal Interfaces}{5}{5}{309}
\secentry {GPC's AutoMake Mechanism---How it Works}{5}{6}{310}
\chapentry {Keywords supported by GNU Pascal}{6}{313}
\chapentry {Redefineable built-in identifiers}{7}{315}
\chapentry {GNU Pascal extensions}{8}{319}
\secentry {Extensions to ISO-7185 Pascal language}{8}{1}{319}
\subsecentry {Extended Pascal features still missing from GPC}{8}{1}{1}{320}
\subsecentry {I/O to text files:}{8}{1}{2}{321}
\subsecentry {Variable length strings in GPC:}{8}{1}{3}{321}
\subsecentry {String routine (mostly in library):}{8}{1}{4}{324}
\subsecentry {No name space pollution with extensions:}{8}{1}{5}{325}
\subsecentry {Compile time switches:}{8}{1}{6}{325}
\subsecentry {Implemented directives:}{8}{1}{7}{325}
\subsecentry {Set operations:}{8}{1}{8}{326}
\subsecentry {Initial values to type denoters:}{8}{1}{9}{326}
\subsecentry {Date and time routines:}{8}{1}{10}{327}
\subsecentry {Complex type and operations:}{8}{1}{11}{328}
\subsecentry {Direct access files:}{8}{1}{12}{329}
\subsecentry {Restricted types:}{8}{1}{13}{329}
\subsecentry {Extended Pascal modules:}{8}{1}{14}{330}
\subsecentry {Somewhat simpler GPC modules are also supported:}{8}{1}{15}{333}
\subsecentry {Module initialization and finalization:}{8}{1}{16}{334}
\subsecentry {Binding of objects to external names:}{8}{1}{17}{334}
\subsecentry {Function pointers:}{8}{1}{18}{335}
\subsecentry {String catenation:}{8}{1}{19}{336}
\subsecentry {Type qualifiers:}{8}{1}{20}{336}
\subsecentry {Accessing command line arguments:}{8}{1}{21}{338}
\secentry {Borland Extensions in GNU Pascal}{8}{2}{339}
\chapentry {About Pascal and Extended Pascal languages}{9}{345}
\secentry {A comparison of Borland Turbo Pascal with Extended Pascal}{9}{1}{345}
\chapentry {From Borland Pascal to GNU Pascal}{10}{351}
\secentry {Borland compatibility}{10}{1}{351}
\secentry {IDE versus command line}{10}{2}{351}
\secentry {Comments and compiler directives}{10}{3}{353}
\secentry {Units, GPI files and AutoMake}{10}{4}{354}
\secentry {Optimization}{10}{5}{356}
\secentry {Debugging}{10}{6}{356}
\secentry {GPC inline assembler}{10}{7}{357}
\secentry {Objects}{10}{8}{357}
\secentry {Strings}{10}{9}{358}
\secentry {Typed constants}{10}{10}{358}
\secentry {Bit, byte and memory manipulation}{10}{11}{359}
\secentry {User-defined operators in GPC}{10}{12}{359}
\secentry {Data types in BP and GPC}{10}{13}{360}
\secentry {Files}{10}{14}{361}
\secentry {Built-in constants}{10}{15}{361}
\secentry {Built-in operators in BP and GPC}{10}{16}{362}
\secentry {Built-in Procedures and Functions}{10}{17}{362}
\secentry {Parameters}{10}{18}{362}
\secentry {Miscellaneous}{10}{19}{363}
\chapentry {Known bugs and inconveniences; how to report bugs}{11}{365}
\secentry {General bugs}{11}{1}{365}
\secentry {Standard Pascal}{11}{2}{365}
\secentry {Extended Pascal}{11}{3}{365}
\secentry {Borland Pascal}{11}{4}{366}
\secentry {GNU Extensions}{11}{5}{366}
\secentry {Inconveniences}{11}{6}{366}
\secentry {Notes for debugging}{11}{7}{366}
\chapentry {Where to get support for GNU Pascal}{12}{369}
\chapentry {How you can contribute to GNU Pascal}{13}{371}
\secentry {List of jobs}{13}{1}{371}
\secentry {List of done jobs :-)}{13}{2}{372}
\secentry {List of contributors (in alphabetical order)}{13}{3}{372}
\chapentry {GPC---Gnu Pascal Random Notes}{14}{373}
\chapentry {PVS Conformance Test Results}{15}{375}
\chapentry {Implementation of Set Types in GPC}{16}{377}
\unnumbchapentry {Index}{379}
