PROGRAM DEMODMMS
CALL DEMO(50,40,60,60,120,120)
STOP
END
SUBROUTINE DEMO(NI1,NJ1,NI2,NJ2,NI3,NJ3)
INTEGER NI1,NJ1,NI2,NJ2,NI3,NJ3
REAL ARRAY1,ARRAY2,ARRAY3
POINTER (PTR1,ARRAY1(NI1,NJ1))
POINTER (PTR2,ARRAY2(NI2,NJ2))
POINTER (PTR3,ARRAY3(NI3,NJ3))
INTEGER I,J,IER
EXTERNAL HPALLOC,HPDEALLC,HPCHECK
*
CALL HPALLOC(PTR1,NI1*NJ1,IER,0)
CALL HPALLOC(PTR2,NI2*NJ2,IER,0)
CALL HPALLOC(PTR3,NI3*NJ3,IER,0)
*
DO 150 I = 1,NJ1
DO 100 J = 1,NJ1
ARRAY1(I,J) = 0
100 CONTINUE
150 CONTINUE
CALL SUBRXYZ(ARRAY1,ARRAY2,NI1,NJ1,NI2,NJ2)
CALL BKCHECK(PTR1,IER)
IF (IER .NE. 0) PRINT *,'ERROR, ARRAY1 HAS BEEN OVER INDEXED'
*
* HERE IS SOME EXPLICIT OVER INDEXING FOR DEMO PURPOSE
*
DO 250 I=1,NI3+4
DO 200 J = 1,NJ3
ARRAY3(I,J) = ARRAY1(I,J) * ARRAY2(I,J)
200 CONTINUE
250 CONTINUE
CALL HPCHECK(IER)
CALL HPDEALLC(PTR1,IER,IABT)
CALL HPDEALLC(PTR2,IER,IABT)
CALL HPDEALLC(PTR3,IER,IABT)
RETURN
END
---------------------------------------------------------------------
f77 demodmms.f demo.f $ARMNLIB/lib/rmnxlib.a
a.out
#
# This run will probably generate an error (due to the over indexing)
# of that kind:
# block check error: internal pointer destroyed ptbloc=0x10005e38
#
---------------------------------------------------------------------
# a subsequent run can use:
BAD_POINTER=0x10005e38
export BAD_POINTER
a.out
----------------------------------------------------------------------
AUTHOR
Mario Lépine - RPNNOTES
The traceback information (given with the use of BAD_POINTER environment variable) can only be obtained on a machine where the traceback system software is available (SX3, SX3r currently).
SEE ALSO
( hpalloc hpdeallc, hpcheck, bkcheck, memoirc, dmmsdbg)