SQKEITH@CSVAX.LIV.AC.UK (12/21/87)
I have a fairly major problem with DEC Ada 1.4's use of the pragma PSECT_OBJECT when linking to write shareable (installed) images. Basically, they don't work. Here is the giste: I have a FORTRAN common block defined as follows in KKH_SHARED.FOR: INTEGER LAST CHARACTER CHARS(255) COMMON /TEST$SHARED_DATA/ LAST,CHARS END This is compiled, linked/shareable and installed with /SHARE/WRITEABLE. I also define a systemwide executive logical name to point to this for activation purposes. The following units are compiled with Ada: package SHARED_DATA is type BLOCK is record LAST : INTEGER; CHARS : STRING(1..255); end record; BUFFER : BLOCK; pragma PSECT_OBJECT(BUFFER,"TEST$SHARED_DATA"); end SHARED_DATA; with TEXT_IO; use TEXT_IO; with SHARED_DATA; procedure COMMON_USER is begin ... BUFFER := ( LAST => 0, CHARS => (1..255=>' ')); ... end COMMON_USER; I link this as follows: $ ACS LINK COMMON_USER SYS$LOGIN:KKH_SHARED/SHARE On executing COMMON_USER, I receive an access violation (Reason mask=04) when attempting to perform the above assignment BUFFER := ... etc. A similar violation is also signalled on any attempt to read BUFFER. I tried using the installed common block from Fortran, Basic and Pascal using basically the same form of program as for COMMON_USER and it works perfectly. I would like to be able to do the same thing from Ada without having to create and map my own global sections - installed images are much more convenient. I have checked the obvious things like PSECT sizes and alignment and they match. Does anybody have any words of wisdom? Does anybody else use DEC Ada? I can supply the linker maps if anybody is interested. If all fails then it's time to brush up on the delights of using $CRMPSC. Awaiting FTP_Q processes desperately, Keith Halewood SQKEITH@UK.AC.LIV.CSVAX