This worked for me:
---------------file fum------------------------------
BEGIN
PROCEDURE DBCALL (L'STATUS, L'BUF, BUF'LEN);
LOGICAL ARRAY L'STATUS, L'BUF;
INTEGER BUF'LEN;
OPTION EXTERNAL;
PROCEDURE DBSTATUS2 (L'STATUS, L'BUF, BUF'LEN);
LOGICAL ARRAY L'STATUS, L'BUF;
INTEGER BUF'LEN;
OPTION EXTERNAL;
END.
-----------------------------------------------------
:purge foo
:build foo
:file splintr = foo
:run buildint.pub.sys;stdin = fum
--------------output of BUILDINT: -------------------
PAGE 0001 HEWLETT-PACKARD 32150A.03.1 SPL INTRINSIC BUILDER (C) COPYRIGHT
H
EWLETT-PACKARD COMPANY 1976
PROCEDURE DBCALL (L'STATUS, L'BUF, BUF'LEN);
LOGICAL ARRAY L'STATUS, L'BUF;
INTEGER BUF'LEN;
OPTION EXTERNAL;
PROCEDURE DBSTATUS2 (L'STATUS, L'BUF, BUF'LEN);
LOGICAL ARRAY L'STATUS, L'BUF;
INTEGER BUF'LEN;
OPTION EXTERNAL;
END.
PAGE 0002 HEWLETT-PACKARD
TYPE OPTIONS
PARAMETERS
N NONE 0,1,2,3 LEVEL OF CHECKING COLUMN 1
COLUMN 2 COLUMN 3
L LOGICAL E EXTERNAL V VALUE
T SEE TYPE S SIMPLE VARIABLE
I INTEGER V VARIABLE R
REFERENC
E A ARRAY
B BYTE
P POINTER
D DOUBLE
T PROCEDURE
R REAL
L LABEL
E EXTENDED
NAME TYPE OPTIONS #PAR
PA
RAMETERS
1 2 3 4 5 6 7 8 9
1
0 11 12 13 14 15 16 17 18 19 20
DBCALL N 0E 14 15 16 17 18 19 20
DBCALL N 0E 3 RLA RLA RIS
DBSTATUS2 N 0E 3 RLA RLA RIS
NO. ERRORS=000
-------------------------------------------------------------------
Sample usage of above SPLINTR-format file (FOO)...
compile the following (Pascal/V) and run it...
{t3.source cm norl}
program m;
type
pac80 = packed array [1..80] of char;
shortint = -32768..32767; {CM Pascal}
str80 = string [80];
image_status_array_type = array [0..9] of shortint;
var
basename : pac80; {overkill}
buf : pac80;
dummy : shortint;
len : shortint;
mode : shortint;
password : pac80; {overkill}
s : str80;
statusa : image_status_array_type;
Function ascii : shortint; intrinsic;
Procedure dbopen; intrinsic;
Procedure print; intrinsic;
Procedure terminate; intrinsic;
$splintr 'foo'$
Procedure dbcall; intrinsic;
Procedure dbstatus2; intrinsic;
begin
print (buf, 0, 0); {blank line}
s := 'Welcome to the DBSTATUS/DBCALL test program';
print (s, - strlen (s), 0);
print (buf, 0, 0); {blank line}
{for fun, show plabel for dbcall...}
s := 'plabel for dbcall is: %';
print (s, - strlen (s), octal ('320'));
dummy := ascii (waddress (dbcall), 8, buf);
len := 6; {ascii, base 8, always puts 6 characters out}
print (buf, -len, 0);
{try to open a non-database with dbopen...}
basename := ' editor.pub.sys;'; {first 2 chars will be updated}
mode := 1;
password := ';';
dbopen (basename, password, mode, statusa);
{show DBCALL results...}
s := 'DBCALL: ';
print (s, -strlen (s), octal ('320'));
dbcall (statusa, buf, len); {does *NOT* require PM}
print (buf, -len, 0);
{show DBSTATUS results...}
s := 'DBSTATUS: ';
print (s, -strlen (s), octal ('320'));
dbstatus2 (statusa, buf, len); {does *NOT* require PM}
print (buf, -len, 0);
print (buf, 0, 0); {blank line}
end.
--------------------------------------------------------------------
sample output from above test program:
Welcome to the DBSTATUS/DBCALL test program
plabel for dbcall is: %134500
DBCALL: DBOPEN, MODE 1, ON editor.pub.sys
DBSTATUS: -1 0 2974720 10289553 6553740 67819
SS
|