Mon, 20 Sep 1993 16:14:07 +0200
|
The PASCAL pre-processor development has completed ahead of schedule.
As mentioned in a previous message, there are currently 104 PASCAL source
files for the VM version of LISTSERV, of which 11 (and not 10 as stated
last time) contain VM-specific code, PASCAL interfaces to functions which
are still written in REXX and are not expected to be available in the
Patchwork stage, or code which is otherwise not useful at the moment on
systems other than VM.
The VMS version of the pre-processor (which translates VS PASCAL idioms
to VAX PASCAL) was finished a few days ago, and all 93 files compile
without error using both VAX PASCAL and DEC PASCAL. In order to check the
bindings and identify any problem with parameter passing, the string
formatting routines of the P-REXX library (the "LDFxx" functions) were
implemented in C and tested with a few simple programs. A series of C
preprocessor macros were developed to make it possible for the same C
source code to generate the bindings required by VAX/DEC PASCAL, p2c, and
VS PASCAL.
The unix version of the pre-processor (which generates input suitable for
p2c) was finished today. After the obligatory 3 hours of underdimensioned
sprintf buffer hunting, a couple of bug fixes and some changes to promote
char constants to string as necessary, p2c now processes all 93 files
without error. A couple thousand lines of code were cursorily scanned and
a couple hundred randomly selected lines were examined more carefully,
and the code looks generally correct. 92 out of the 93 resulting C files
compile without error. The file that doesn't compile and 2 others contain
incorrectly translated string constants which we will have to do
something about, presumably by coding the accurate C idioms directly in
the VS PASCAL source file, using the special p2c comment sequences that
will copy them as is to the C output. Another problem is that p2c uses
native C strings for PASCAL strings, whereas LISTSERV occasionally uses
null bytes in string constants (LISTSERV doesn't use PASCAL strings for
anything but string constants). It may be necessary to translate a few
routines to C manually, which is annoying but not a major inconvenience.
All things considered this is very encouraging, although of course it
will not be possible to run any full-scale test until a comprehensive
implementation of the PREXX library is available.
Eric
|
|
|