DMMS (Dynamic Memory Management System)

EXAMPLE OF USE

	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 - RPN
NOTES
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)