C CLASSIFIED LIST OF FORTRAN ROUTINES

 C.1 Access to Existing NDFs
 C.2 Enquiring NDF Attributes
 C.3 Enquiring Component Attributes
 C.4 Creating and Deleting NDFs
 C.5 Setting NDF Attributes
 C.6 Setting Component Attributes
 C.7 Access to Component Values
 C.8 Enquiring and Setting Axis Attributes
 C.9 Access to Axis Values
 C.10 Access to World Coordinate System Information
 C.11 Creation and Control of Identifiers
 C.12 Handling NDF (and Array) Sections
 C.13 Matching and Merging Attributes
 C.14 Parameter System Routines
 C.15 Message System Routines
 C.16 Creating Placeholders
 C.17 Copying NDFs
 C.18 Handling Extensions
 C.19 Handling History Information
 C.20 Tuning the NDF_ system
 C.21 Compression

C.1 Access to Existing NDFs

NDF_ASSOC( PARAM, MODE, INDF, STATUS )
    Associate an existing NDF with an ADAM parameter
NDF_EXIST( PARAM, MODE, INDF, STATUS )
    See if an existing NDF is associated with an ADAM parameter.
NDF_FIND( LOC, NAME, INDF, STATUS )
    Find an NDF in an HDS structure and import it into the NDF_ system
NDF_OPEN( LOC, NAME, MODE, STAT, INDF, PLACE, STATUS )
    Open an existing or new NDF

C.2 Enquiring NDF Attributes

NDF_BOUND( INDF, NDIMX, LBND, UBND, NDIM, STATUS )
    Enquire the pixel-index bounds of an NDF
NDF_DIM( INDF, NDIMX, DIM, NDIM, STATUS )
    Enquire the dimension sizes of an NDF
NDF_ISACC( INDF, ACCESS, ISACC, STATUS )
    Determine whether a specified type of NDF access is available
NDF_ISBAS( INDF, ISBAS, STATUS )
    Enquire if an NDF is a base NDF
NDF_ISIN( INDF1, INDF2, ISIN, STATUS )
    Enquire if one NDF is contained within another NDF
NDF_ISTMP( INDF, ISTMP, STATUS )
    Determine if an NDF is temporary
NDF_NBLOC( INDF, NDIM, MXDIM, NBLOCK, STATUS )
    Determine the number of blocks of adjacent pixels in an NDF
NDF_NCHNK( INDF, MXPIX, NCHUNK, STATUS )
    Determine the number of chunks of contiguous pixels in an NDF
NDF_SAME( INDF1, INDF2, SAME, ISECT, STATUS )
    Enquire if two NDFs are part of the same base NDF
NDF_SIZE( INDF, NPIX, STATUS )
    Determine the size of an NDF
NDF_VALID( INDF, VALID, STATUS )
    Determine whether an NDF identifier is valid

C.3 Enquiring Component Attributes

NDF_BAD( INDF, COMP, CHECK, BAD, STATUS )
    Determine if an NDF array component may contain bad pixels
NDF_BB( INDF, BADBIT, STATUS )
    Obtain the bad-bits mask value for the quality component of an NDF
NDF_CLEN( INDF, COMP, LENGTH, STATUS )
    Determine the length of an NDF character component
NDF_CMPLX( INDF, COMP, CMPLX, STATUS )
    Determine whether an NDF array component holds complex values
NDF_FORM( INDF, COMP, FORM, STATUS )
    Obtain the storage form of an NDF array component
NDF_FTYPE( INDF, COMP, FTYPE, STATUS )
    Obtain the full type of an NDF array component
NDF_QMF( INDF, QMF, STATUS )
    Obtain the value of an NDF’s quality masking flag
NDF_STATE( INDF, COMP, STATE, STATUS )
    Determine the state of an NDF component (defined or undefined)
NDF_TYPE( INDF, COMP, TYPE, STATUS )
    Obtain the numeric type of an NDF array component

C.4 Creating and Deleting NDFs

NDF_CREAT( PARAM, FTYPE, NDIM, LBND, UBND, INDF, STATUS )
    Create a new simple NDF via the ADAM parameter system
NDF_CREP( PARAM, FTYPE, NDIM, UBND, INDF, STATUS )
    Create a new primitive NDF via the ADAM parameter system
NDF_DELET( INDF, STATUS )
    Delete an NDF
NDF_NEW( FTYPE, NDIM, LBND, UBND, PLACE, INDF, STATUS )
    Create a new simple NDF
NDF_NEWP( FTYPE, NDIM, UBND, PLACE, INDF, STATUS )
    Create a new primitive NDF
NDF_OPEN( LOC, NAME, MODE, STAT, INDF, PLACE, STATUS )
    Open an existing or new NDF
NDF_PROP( INDF1, CLIST, PARAM, INDF2, STATUS )
    Propagate NDF information to create a new NDF via the ADAM parameter system
NDF_SCOPY( INDF1, CLIST, PLACE, INDF2, STATUS )
    Selectively copy NDF components to a new location

C.5 Setting NDF Attributes

NDF_NOACC( ACCESS, INDF, STATUS )
    Disable a specified type of access to an NDF
NDF_SBND( NDIM, LBND, UBND, INDF, STATUS )
    Set new pixel-index bounds for an NDF
NDF_SHIFT( NSHIFT, SHIFT, INDF, STATUS )
    Apply pixel-index shifts to an NDF

C.6 Setting Component Attributes

NDF_RESET( INDF, COMP, STATUS )
    Reset an NDF component to an undefined state
NDF_SBAD( BAD, INDF, COMP, STATUS )
    Set the bad-pixel flag for an NDF array component
NDF_SBB( BADBIT, INDF, STATUS )
    Set a bad-bits mask value for the quality component of an NDF
NDF_SQMF( QMF, INDF, STATUS )
    Set a new logical value for an NDF’s quality masking flag
NDF_STYPE( FTYPE, INDF, COMP, STATUS )
    Set a new type for an NDF array component

C.7 Access to Component Values

NDF_CGET( INDF, COMP, VALUE, STATUS )
    Obtain the value of an NDF character component
NDF_CPUT( VALUE, INDF, COMP, STATUS )
    Assign a value to an NDF character component
NDF_MAP( INDF, COMP, TYPE, MMOD, PNTR, EL, STATUS )
    Obtain mapped access to an array component of an NDF
NDF_MAPQL( INDF, PNTR, EL, BAD, STATUS )
    Map the quality component of an NDF as an array of logical values
NDF_MAPZ( INDF, COMP, TYPE, MMOD, RPNTR, IPNTR, EL, STATUS )
    Obtain complex mapped access to an array component of an NDF
NDF_QMASK( QUAL, BADBIT )
    Combine an NDF quality value with a bad-bits mask to give a logical result
NDF_UNMAP( INDF, COMP, STATUS )
    Unmap an NDF or a mapped NDF array

C.8 Enquiring and Setting Axis Attributes

NDF_ACLEN( INDF, COMP, IAXIS, LENGTH, STATUS )
    Determine the length of an NDF axis character component
NDF_ACRE( INDF, STATUS )
    Ensure that an axis coordinate system exists for an NDF
NDF_AFORM( INDF, COMP, IAXIS, FORM, STATUS )
    Obtain the storage form of an NDF axis array
NDF_ANORM( INDF, IAXIS, NORM, STATUS )
    Obtain the logical value of an NDF axis normalisation flag
NDF_AREST( INDF, COMP, IAXIS, STATUS )
    Reset an NDF axis component to an undefined state
NDF_ASNRM( NORM, INDF, IAXIS, STATUS )
    Set a new value for an NDF axis normalisation flag
NDF_ASTAT( INDF, COMP, IAXIS, STATE, STATUS )
    Determine the state of an NDF axis component (defined or undefined)
NDF_ASTYP( TYPE, INDF, COMP, IAXIS, STATUS )
    Set a new numeric type for an NDF axis array
NDF_ATYPE( INDF, COMP, IAXIS, TYPE, STATUS )
    Obtain the numeric type of an NDF axis array

C.9 Access to Axis Values

NDF_ACGET( INDF, COMP, IAXIS, VALUE, STATUS )
    Obtain the value of an NDF axis character component
NDF_ACMSG( TOKEN, INDF, COMP, IAXIS, STATUS )
    Assign the value of an NDF axis character component to a message token
NDF_ACPUT( VALUE, INDF, COMP, IAXIS, STATUS )
    Assign a value to an NDF axis character component
NDF_AMAP( INDF, COMP, IAXIS, TYPE, MMOD, PNTR, EL, STATUS )
    Obtain mapped access to an NDF axis array
NDF_AUNMP( INDF, COMP, IAXIS, STATUS )
    Unmap an NDF axis array component

C.10 Access to World Coordinate System Information

NDF_GTWCS( INDF, IWCS, STATUS )
    Obtain world coordinate system information from an NDF
NDF_PTWCS( IWCS, INDF, STATUS )
    Store world coordinate system information in an NDF

C.11 Creation and Control of Identifiers

NDF_ANNUL( INDF, STATUS )
    Annul an NDF identifier
NDF_BASE( INDF1, INDF2, STATUS )
    Obtain an identifier for a base NDF
NDF_BEGIN
    Begin a new NDF context
NDF_CLONE( INDF1, INDF2, STATUS )
    Clone an NDF identifier
NDF_END( STATUS )
    End the current NDF context
NDF_VALID( INDF, VALID, STATUS )
    Determine whether an NDF identifier is valid

C.12 Handling NDF (and Array) Sections

NDF_BASE( INDF1, INDF2, STATUS )
    Obtain an identifier for a base NDF
NDF_BLOCK( INDF1, NDIM, MXDIM, IBLOCK, INDF2, STATUS )
    Obtain an NDF section containing a block of adjacent pixels
NDF_CHUNK( INDF1, MXPIX, ICHUNK, INDF2, STATUS )
    Obtain an NDF section containing a chunk of contiguous pixels
NDF_NBLOC( INDF, NDIM, MXDIM, NBLOCK, STATUS )
    Determine the number of blocks of adjacent pixels in an NDF
NDF_NCHNK( INDF, MXPIX, NCHUNK, STATUS )
    Determine the number of chunks of contiguous pixels in an NDF
NDF_SECT( INDF1, NDIM, LBND, UBND, INDF2, STATUS )
    Create an NDF section
NDF_SSARY( IARY1, INDF, IARY2, STATUS )
    Create an array section, using an NDF section as a template
NDF_XIARY( INDF, XNAME, CMPT, MODE, IARY, STATUS )
    Obtain access to an array stored in an NDF extension

C.13 Matching and Merging Attributes

NDF_MBAD( BADOK, INDF1, INDF2, COMP, CHECK, BAD, STATUS )
    Merge the bad-pixel flags of the array components of a pair of NDFs
NDF_MBADN( BADOK, N, NDFS, COMP, CHECK, BAD, STATUS )
    Merge the bad-pixel flags of the array components of a number of NDFs
NDF_MBND( OPTION, INDF1, INDF2, STATUS )
    Match the pixel-index bounds of a pair of NDFs
NDF_MBNDN( OPTION, N, NDFS, STATUS )
    Match the pixel-index bounds of a number of NDFs
NDF_MTYPE( TYPLST, INDF1, INDF2, COMP, ITYPE, DTYPE, STATUS )
    Match the types of the array components of a pair of NDFs
NDF_MTYPN( TYPLST, N, NDFS, COMP, ITYPE, DTYPE, STATUS )
    Match the types of the array components of a number of NDFs

C.14 Parameter System Routines

NDF_ASSOC( PARAM, MODE, INDF, STATUS )
    Associate an existing NDF with an ADAM parameter
NDF_CANCL( PARAM, STATUS )
    Cancel the association of an NDF with an ADAM parameter
NDF_CINP( PARAM, INDF, COMP, STATUS )
    Obtain an NDF character component value via the ADAM parameter system
NDF_CREAT( PARAM, FTYPE, NDIM, LBND, UBND, INDF, STATUS )
    Create a new simple NDF via the ADAM parameter system
NDF_CREP( PARAM, FTYPE, NDIM, UBND, INDF, STATUS )
    Create a new primitive NDF via the ADAM parameter system
NDF_CREPL( PARAM, PLACE, STATUS )
    Create a new NDF placeholder via the ADAM parameter system
NDF_EXIST( PARAM, MODE, INDF, STATUS )
    See if an existing NDF is associated with an ADAM parameter.
NDF_PROP( INDF1, CLIST, PARAM, INDF2, STATUS )
    Propagate NDF information to create a new NDF via the ADAM parameter system

C.15 Message System Routines

NDF_CMSG( TOKEN, INDF, COMP, STATUS )
    Assign the value of an NDF character component to a message token
NDF_MSG( TOKEN, INDF )
    Assign the name of an NDF to a message token

C.16 Creating Placeholders

NDF_CREPL( PARAM, PLACE, STATUS )
    Create a new NDF placeholder via the ADAM parameter system
NDF_OPEN( LOC, NAME, MODE, STAT, INDF, PLACE, STATUS )
    Open an existing or new NDF
NDF_PLACE( LOC, NAME, PLACE, STATUS )
    Obtain an NDF placeholder
NDF_TEMP( PLACE, STATUS )
    Obtain a placeholder for a temporary NDF

C.17 Copying NDFs

NDF_COPY( INDF1, PLACE, INDF2, STATUS )
    Copy an NDF to a new location
NDF_PROP( INDF1, CLIST, PARAM, INDF2, STATUS )
    Propagate NDF information to create a new NDF via the ADAM parameter system
NDF_SCOPY( INDF1, CLIST, PLACE, INDF2, STATUS )
    Selectively copy NDF components to a new location

C.18 Handling Extensions

NDF_XDEL( INDF, XNAME, STATUS )
    Delete a specified NDF extension
NDF_XGT0x( INDF, XNAME, CMPT, VALUE, STATUS )
    Read a scalar value from a component within a named NDF extension
NDF_XIARY( INDF, XNAME, CMPT, MODE, IARY, STATUS )
    Obtain access to an array stored in an NDF extension
NDF_XLOC( INDF, XNAME, MODE, LOC, STATUS )
    Obtain access to a named NDF extension via an HDS locator
NDF_XNAME( INDF, N, XNAME, STATUS )
    Obtain the name of the N’th extension in an NDF
NDF_XNEW( INDF, XNAME, TYPE, NDIM, DIM, LOC, STATUS )
    Create a new extension in an NDF
NDF_XNUMB( INDF, NEXTN, STATUS )
    Determine the number of extensions in an NDF
NDF_XPT0x( VALUE, INDF, XNAME, CMPT, STATUS )
    Write a scalar value to a component within a named NDF extension
NDF_XSTAT( INDF, XNAME, THERE, STATUS )
    Determine if a named NDF extension exists

C.19 Handling History Information

NDF_HAPPN( APPN, STATUS )
    Declare a new application name for NDF history recording
NDF_HCOPY( INDF1, INDF2, STATUS )
    Copy history information from one NDF to another
NDF_HCRE( INDF, STATUS )
    Ensure that a history component exists for an NDF
NDF_HDEF( INDF, APPN, STATUS )
    Write default history information to an NDF
NDF_HECHO( NLINES, TEXT, STATUS )
    Write out lines of history text
NDF_HEND( STATUS )
    End NDF history recording for the current application
NDF_HFIND( INDF, YMDHM, SEC, EQ, IREC, STATUS )
    Find an NDF history record by date and time
NDF_HGMOD( INDF, HMODE, STATUS )
    Get the history update mode for an NDF
NDF_HINFO( INDF, ITEM, IREC, VALUE, STATUS )
    Obtain information about an NDF’s history component
NDF_HNREC( INDF, NREC, STATUS )
    Determine the number of NDF history records present
NDF_HOUT( INDF, IREC, ROUTIN, STATUS )
    Display text from an NDF history record
NDF_HPURG( INDF, IREC1, IREC2, STATUS )
    Delete a range of records from an NDF history component
NDF_HPUT( HMODE, APPN, REPL, NLINES, TEXT, TRANS, WRAP, RJUST, INDF, STATUS )
    Write history information to an NDF
NDF_HSDAT( DATE, INDF, STATUS )
    Set the date and time for the next history record in an NDF
NDF_HSMOD( HMODE, INDF, STATUS )
    Set the history update mode for an NDF

C.20 Tuning the NDF_ system

NDF_GTUNE( TPAR, VALUE, STATUS )
    Obtain the value of an NDF_ system tuning parameter
NDF_TUNE( VALUE, TPAR, STATUS )
    Set an NDF_ system tuning parameter

C.21 Compression

NDF_FORM( INDF, COMP, FORM, STATUS )
    Obtain the storage form of an NDF array component
NDF_GTDLT( INDF, COMP, ZAXIS, ZTYPE, ZRATIO, STATUS )
    Get compression details for a DELTA compressed NDF array component
NDF_GTSZx( INDF, COMP, SCALE, ZERO, STATUS )
    Get scale and zero factors for a scaled array in an NDF
NDF_PTSZx( SCALE, ZERO, INDF, COMP, STATUS )
    Store new scale and zero factors for a scaled array in an NDF
NDF_ZDELT( INDF1, COMP, MINRAT, ZAXIS, TYPE, PLACE, INDF2, ZRATIO, STATUS )
    Create a compressed copy of an NDF using DELTA compression
NDF_ZSCAL( INDF1, TYPE, SCALE, ZERO, PLACE, INDF2, STATUS )
    Create a compressed copy of an NDF using SCALE compression