Hello!
I'm looking at GPC to decide wether or not to use it to port a quit large application from VMS to Unix. The original source is written in Vax-pascal, not by me, some ten years ago. It consists of lots of compiler dependent features such as Vax-pascal 'environment' and 'inherit'-statemets that should relatively easy translate to module exports and imports of GPC, but also of. constructs that are, perhaps not that easy to translate.
Currently wehave installed the 2.0 version of GPC on our Sun Solaris 5.5 machine.
The size of the system, about 175 modules, som 70 klines of code, implies that the translation have to rely on safe module-import/export functionality. According to the documentation the GPI-mechanism is not as stable as it should be. but what is the actual problem? what are the limitations? the problem of unsized strings and GPI import? (I get a warning that there are incompatible pointers when calling an imported function with a varying string.) is there som work beeing done to fix it?
Other questions that I also came up with are: Calling functions in C, is easy, just put a C; as a declaration af the body. How about calling functions in ADA (i.e. Gnat)? The other way around, other languages calling functions written in Pascal?
The code uses lots of varying length strings written partly as schemas, and partly as some sort of conformant arrays in parameter lists. A piece fo code may look like this:
Var text_str : varying (. len .) of char ;
procedure testproc ( str : varying (.len .) of char ); var i : integer ; begin for i := 1 to len do something(i,str); end ;
This should translate to
Var text_str : string;
procedure testproc ( str : string ); var i : integer ; begin for i := 1 to length(str) do something(i,str); end ;
But how about the vax statement for issuing variable amount of arguments? Vax-pascal:
procedure test_pro ( var arg1 : integer; [list] therest : integer) ; var cnt : integer ; begin arg1:= 0 ; for cnt := 1 to argument_list_length (therest) do arg1 := arg1 + argument(therest, cnt): end;
Is there a construct for this in GPC? (in that case I�m sorry but I haven�t found it in the manual)
I don�t think I'm on the subscriberlist so please post your reply directly to me aswell. (I've tried to subscribe , but I'havent hear anything...)
Thank you guys, Gnu Pascal's great, but I still miss some important consepts from the extended pascal definition. (Schemas and module integrity...) Hope that all the stuff will be there some day, right now I feel it is not so safe that it will suit our need for this project, but perhaps in the future..
Bye! -- /Jakob :)
mailto:Jakob.Heinemann@lmemw.ericsson.se Ericsson Saab Avionics Link�ping, Sweden