NULLIFY

Statement: Disassociates a pointer from a target.

Syntax

NULLIFY (pointer-object[,pointer-object]...)

pointer-object

Is a structure component or the name of a variable; it must be a pointer (have the POINTER attribute).

Description

The initial association status of a pointer is undefined. You can use NULLIFY to initialize an undefined pointer, giving it disassociated status. Then the pointer can be tested using the intrinsic function ASSOCIATED.

Example

The following is an example of the NULLIFY statement:

REAL, TARGET :: TAR(0:50)

REAL, POINTER :: PTR_A(:), PTR_B(:)

PTR_A => TAR

PTR_B => TAR

...

NULLIFY(PTR_A)

After these statements are executed, PTR_A will have disassociated status, while PTR_B will continue to be associated with variable TAR.

The following shows another example:

! POINTER2.F90 Pointing at a Pointer and Target

!DEC$ FIXEDFORMLINESIZE:80

REAL, POINTER :: arrow1 (:)

REAL, POINTER :: arrow2 (:)

REAL, ALLOCATABLE, TARGET :: bullseye (:)

ALLOCATE (bullseye (7))

bullseye = 1.

bullseye (1:7:2) = 10.

WRITE (*,'(/1x,a,7f8.0)') 'target ',bullseye

arrow1 => bullseye

WRITE (*,'(/1x,a,7f8.0)') 'pointer',arrow1

arrow2 => arrow1

IF (ASSOCIATED(arrow2)) WRITE (*,'(/a/)') ' ARROW2 is pointed.'

WRITE (*,'(1x,a,7f8.0)') 'pointer',arrow2

NULLIFY (arrow2)

IF (.NOT.ASSOCIATED(arrow2)) WRITE (*,'(/a/)') ' ARROW2 is not pointed.'

WRITE (*,'( 1x,a,7f8.0)') 'pointer',arrow1

WRITE (*,'(/1x,a,7f8.0)') 'target ',bullseye

END

See Also