![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: DEC BASIC V1.3-000 (ident from linker map) Code fragment from small BASIC FUNCTION... DECLARE INTEGER II DECLARE INTEGER JJ DECLARE INTEGER MATCHED DECLARE STRING NAMBITS(1 TO 6) DECLARE STRING TMP NAMBITS(1)="TEST" When compiling with: bas/opt=LEVEL=2 SUB_MATCH_TRUSTEES.BAS where LEVEL is 2 or higher the following INFORMATIONAL messages are issued a number of times: NAMBITS(1)="TEST" %BASIC-I-UNINIT, variable is fetched, not initialized at line number 59 in file TRU$DEVICE_LIBRARY_SCR:[AC.BOOT.RLS]SUB_MATCH_TRUSTEES.BAS;37 Executable created from the object ACCVIOs in BASRTL: %BAS-F-MEMMANVIO, Memory management violation -BAS-I-USEPC_PSL, at user PC=808DD5DC, PSL=0000001B -SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=000000007AD07333, PC=FFFFFFFF808DD5DC, PS=0000001B -BAS-I-FROFUN, In external function SUB_MATCH_TRUSTEES -BAS-I-FROFUN, In external function SUB_SUPER_TRUSTEE_COMPARE %TRACE-F-TRACEBACK, symbolic stack dump follows image module routine line rel PC abs PC 0 FFFFFFFF80888A44 FFFFFFFF80888A44 DEC$BASRTL 0 000000000000E5D8 000000007C05C5D8 ----- above condition handler called with exception 0000000C: %SYSTEM-F-ACCVIO, access violation, reason mask=00, virtual address=000000007AD07333, PC=FFFFFFFF808DD5DC, PS=0000001B ----- end of exception message 0 FFFFFFFF800C9CCC FFFFFFFF800C9CCC 0 FFFFFFFF808DD5DC FFFFFFFF808DD5DC BAT_BOOT_PARTY SUB_MATCH_TRUSTEES SUB_MATCH_TRUSTEES 72 000000000000017C 00000000000A0FBC BAT_BOOT_PARTY SUB_SUPER_TRUSTEE_COMPARE SUB_SUPER_TRUSTEE_COMPARE 114 00000000000003F8 000000000008F468 BAT_BOOT_PARTY SUB_BOOT_PARTY SUB_BOOT_PARTY 10531 0000000000016A30 000000000007E470 BAT_BOOT_PARTY 0 00000000000557C4 00000000000657C4 BAT_BOOT_PARTY 0 0000000000098C60 00000000000A8C60 0 FFFFFFFF8028F59C FFFFFFFF8028F59C (1) The 'error' seems to make absolutely no sense. (2) Rearranging code can move the 'error' line but it always seems associated with a reference to the string array. (3) Compiling /NOOPT results in a correctly functioning program. Any idea what's going on??? Many thanks in advance. andrew The Answer is : Please upgrade your BASIC compiler to a more current release. As should be obvious, this appears to be a bug within the compiler. As the compiler involved is far from current, an upgrade is strongly encouraged. This appears to be similar to a known issue that was reported and subsequently resolved roughly five years ago, and specifically with an ECO update (BASAE01013) to V1.3. Please do not search for this ECO, as the V1.3 compiler and this ECO are no longer current; the current BASIC compiler version (as of this writing) is V1.5, and that version includes the BASAE01013 changes.
|