[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::decbasic

Title:DEC BASIC Conference
Notice:SSB Kit Now available - Note 2.29
Moderator:TLE::HAYNES
Created:Wed Sep 15 1993
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:210
Total number of notes:976

202.0. "AXP Debuger can't examine dynamic string arrays ..." by BACHUS::SABLON (Mich�le Sablon, TP/IM Support Belgium 856-7238) Thu Mar 06 1997 07:53

OpenVMS AXP 7.1
Basic 1.2-000

    I'm not sure if this is a debugger or a BASIC problem.

    The little program below can be use to reproduce the strange behaviour  
    of the OpenVMS AXP debugger. While an examine of a dynamic array is 
    performed, one receive the error message:

    %DEBUG-E-NOSYMBOL, symbol '...' is not in the symbol table.

    * This problem only occurs on the AXP. It doesn't on the VAX (OpenVMS 
      V6.2). I made the test with OpenVMS AXP V7.1 but the customer that found
      the problem is in V6.2.

    * It only occurs with dynamic string arrays, i.e. arrays defined using the 
      DIMENSION STRING statement, using variables as dimension specification:

      DECLARE INTERGER a%
      a% = 5%
      DIMENSION STRING array( a% )

    * It doesn't occur if the dynamic arrays are of numerical type (integer 
      and real tested) or if the dimensions are specified using CONSTANTs.

    Do I need to escalate the problem ? Best,
    Mich�le Sablon.

=====

$CREATE y.bas

1	DECLARE INTEGER a%, b%, c%, d%, e%

!	The below syntax would work:
!1	DECLARE INTEGER CONSTANT a% = 5%
!2	DECLARE INTEGER CONSTANT b% = 2%
!3	DECLARE INTEGER CONSTANT c% = 3%
!4	DECLARE INTEGER CONSTANT d% = 7%
!5	DECLARE INTEGER CONSTANT e% = 6%

6	a% = 5%
7 	b% = 2%
8	c% = 3%
9	d% = 7%
10	e% = 6%

100	DIMENSION   STRING	x1(a%)
110	DIMENSION   STRING	x2(a%, b%)
120	DIMENSION   REAL	y1(a%, b%, c%)
130	DIMENSION   INTEGER	y2(a%, b%, c%, d%)

1000	z% = 0%
	FOR i% = 1% TO a% STEP 1%
	    FOR j% = 1% TO b% STEP 1%
	    	FOR k% = 1% TO c% STEP 1%
		    FOR l% = 1% TO d% STEP 1%
		    	y2( i%,j%,k%,l% ) = z%
			z% = z% + 1
		    NEXT l%
		    y1( i%,j%,k% ) = z% * 1.1
		NEXT k%
		x2( i%,j% ) = chr$( z% )
	    NEXT j%
	    x1( i% ) = chr$( z% )
	NEXT i%

5000    FOR i% = 1% TO a% STEP 1%
            PRINT   x1(i%)
        NEXT i% 

32767	END PROGRAM 1

$ BASIC/NOOPT/DEBUG y
$ LINK/DEBUG y
$ RUN/NODEBUG y
*
T
~
�
�
$ RUN/DEBUG y
DBG> set br %li 20
DBG> go
DBG> exa x1
%DEBUG-E-NOSYMBOL, symbol 'X1' is not in the symbol table
DBG> exa x2
%DEBUG-E-NOSYMBOL, symbol 'X2' is not in the symbol table
DBG> exa y1
Y$MAIN\Y1(0:5,0:2,0:3)
    (0,0,0):    0.0000000
    (0,0,1):    0.0000000
    ...
DBG> exa y2
Y$MAIN\Y2(0:5,0:2,0:3,0:7)
    (0,0,0,0):  0
    (0,0,0,1):  0
    ...
DBG>go
*
T
~
�
�
%DEBUG-I-EXITSTATUS, is '%SYSTEM-S-NORMAL, normal successful completion'
DBG> exa x1
%DEBUG-E-NOSYMBOL, symbol 'X1' is not in the symbol table
DBG> exa y1
%DEBUG-W-SYMNOTACT, non-static variable 'Y$MAIN\Y1' is not active
T.RTitleUserPersonal
Name
DateLines