![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I am moving an application set from a VAX (VMS 5.4-1) to an Alpha (OpenVMS 7.1-2). The application is in Fortran and uses global sections. My question is how do I get the section mapping to work on the Alpha? In one program, which runs as a detached process, I use a Fortran OPEN to create a disk file of the correct size (based on my global common size requirements) if the file doesn't already exist. If it does exist, I skip the OPEN. I then use the $CRMPSC routine to create and map the section. While the program runs, I can use $INSTALL LIST/GLOBAL and see the global section. I wrote a little test routine to write and read variables in the section. The writer writes, but the reader doesn't see the changes. I have made the page size adjustment from 512 to 8192 but this has made no difference. I have checked linker map files and they list the section as global and everybody has it at the same address. I am totally stumped and am ready to pull out what little hair I have left. Any ideas? The Answer is : Save for the change in the page size, global sections operate the same -- Alpha systems use variable page sizes, with the minimum page size being 8192 and ranging up to 65536 bytes. The VAX page size is permanently set to 512 bytes. Without specific details and (potentially) an example of the source code used or small reproducer, the Wizard might assume that the application attempts to overmap existing address space in the application, that different names might be used, that the application (incorrectly) assumes that it has knowledge of the names of image sections created by INSTALL, that group globals are in use and multiple UICs are present, or that there are any number of other problems in the code. C language examples of global section operations are available at the Compaq Solutions Aliance area of the Compaq Website -- this is the same area as the shareable image cookbook referenced by the OpenVMS Frequently Asked Questions (FAQ).
|