Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP Pascal/HP-UX Programmer's Guide > Appendix B HP-UX Dependencies

HP-UX Extensions

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Glossary

 » Index

HP-UX extensions are available only to programs that are compiled by the HP Pascal compiler running on the HP-UX operating system. The programs themselves must also run on the HP-UX operating system. The HP-UX extensions are:

  • Access to special global variables through the EXTERNAL directive.

  • The predefined function get_alignment, which returns the alignment requirement of a given type or variable.

  • The predefined function statement_number, which returns the statement number of the statement that calls it.

Accessing Special Global Variables

The global variable errno is special in that a program can access it through the EXTERNAL directive.

Example

$EXTERNAL$
PROGRAM ErrorNo_Example;

VAR
ErrorNumber $ALIAS 'errno'$ : INTEGER;

FUNCTION Pas_Errno : integer;
BEGIN
Pas_Errno := ErrorNumber;
END;

BEGIN
END.

When another compilation unit is linked with the preceding program, it can access the function Pas_Errno, which returns the value of the global variable errno.

Fnum Function

The predefined function fnum returns the HP-UX file number of the physical file currently associated with a given logical file. You can use this file number in system calls.

Syntax

fnum (filename)

Parameter

filename

The name of the logical file. This parameter is required, even if the logical file is the standard file input or output. The logical file must be associated with a physical file.

Example

program xref(output);
const SEEK_SET=0; { Set file pointer to "offset" }
SEEK_CUR=1; { Set file pointer to current plus "offset" }
SEEK_END=2; { Set file pointer to EOF plus "offset" }

var s_file : text;
max : integer;
f : integer;

function lseek(fildes:integer; offset:integer; whence:integer): integer;
external;

begin
reset(s_file,'foo');
f:=fnum(s_file);
max:=lseek(f,0,seek_end);
writeln('file#:',f:1,', max bytes=',max:1);
end.

Output:

file#:3, max bytes=487

Get_alignment Function

The predefined function get_alignment returns the alignment requirement of a given type or variable.

Syntax

[get_alignment ( {variabletype})]

Parameters

variable

Any variable. The function get_alignment returns its alignment requirement.

type

Any type identifier (the name of any type). The function get_alignment returns its alignment requirement.

Example

PROGRAM prog;

TYPE
Rec = $ALIGNMENT 8$
RECORD
f1 : integer;
f2 : shortint;
f3 : real;
END;

integer_ = $ALIGNMENT 2$ integer;

VAR
ptr : ^integer_;

BEGIN
i := get_alignment(rec);

IF get_alignment(ptr^) > 2 THEN
.
.
.
END.

Statement_number Function

The predefined function statement_number returns the statement number of the statement that calls it, as shown on the compiled listing. It is a useful debugging aid, especially when used with the predefined procedure assert.

Syntax

statement_number

Example

PROGRAM prog (output);

VAR
i : integer;

BEGIN
i := statement_number;
writeln('Current Statement Number is ', i);
assert(a > b, statement_number);
END.
Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© Hewlett-Packard Development Company, L.P.