HP3000-L Archives

May 1999, Week 3

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Greg Fudala <[log in to unmask]>
Reply To:
Greg Fudala <[log in to unmask]>
Date:
Mon, 17 May 1999 16:35:54 GMT
Content-Type:
text/plain
Parts/Attachments:
text/plain (62 lines)
I can't get this to work.  This pascal function (in a separate object file)
returns a pascal packed array [1..8].
I'd like to have a C program call it and get the result.  It always returns
NULL.   According to "HP C Programmer's Guide",
I am supposed to declare the return result as the struct "pac8" shown
below.
Any idea what to do?  Thanks very much.

Greg Fudala
Circuit City Stores
[log in to unmask]

Pascal program testpas.p, to compile: pc testpas.p -c   (creates testpas.o)
==========================================================
$os 'hpux'$  { ux }
$STANDARD_LEVEL 'EXT_MODCAL'$
$NOTES OFF$

$SUBPROGRAM$
$CODE_OFFSETS ON; TABLES ON$

program mytest;
type
   pac8 = packed array [1..8] of char;
$SYSINTR '/usr/lib/paslib'$

function pascalfunc (hpsys : shortint) : pac8;
var
    myvar : pac8;
begin
   myvar := 'TESTTEST';
   pascalfunc := myvar;
end;

BEGIN
END.


C program test.c, to compile: cc test.c testpas.o   (creates a.out
executible)
==========================================================
#include <stdlib.h>
#include <stdio.h>

static struct pac8 {
 char p[9];
 } myvar ;

extern struct pac8 pascalfunc(short i);

main()
{
myvar = pascalfunc(123);
printf("myvar='%s'\n", myvar.p);
}


Run of the program
===========================================================
> a.out
myvar=''

ATOM RSS1 RSS2