Article 4882 of vmsnet.internals:
In article <X49791d/nPT7@infopiz>, mark@infocomm.com writes:
: I'm looking for a code sequence that will implement a file delete with one
: or more QIO operations.
: 
: I'm looking for a QIO interface to this since I'm trying to perform the file
: delete operation asynchronously.  I'd like my program to be able to continue
: doing other things while this operation is happening, or alternatively I'd
: like to be able to be performing multiple file delete operations at the same
: time (in different directories).  Will the XQP actually let me do this?
: 
: I guess I'm being lazy, but I've seen Brian Schenkenberger and others pull
: this type of thing out of their hats too often to not ask here before I
: start digging elsewhere.  Thanks.
: 
: --
: Mark Pizzolato - INFO COMM Computer Consulting, Half Moon Bay, Ca
: PHONE: (415)712-6701   FAX: (415)712-6719    E-Mail: mark@infocomm.com

	Mark,

	Below is a C code fragment that basically shows how to set up the call in C.
	Although the data structures are not given, it shows which FIB fields to
	set up.  Note that this code does not remove directory entries.

			Ben Carter
			Systems & Networks
			University of Pittsburgh
			bhc+@pitt.edu    (412)624-6470

------------------------

{
        int     i,
                Status;

        short int       File_Channel;

        $DESCRIPTOR( FIB_Descr, "" );

        void Delete_File_AST_Routine();

        Status = sys$assign( &LPD_Spool_Descr, &File_Channel, 0, 0, 0 );

        if ( !( Status & 1 ) )
                return Status;

        CDB->File_Channel = File_Channel;
        bzero( (char *) &CDB->FIB, sizeof CDB->FIB );
        for ( i=0; i<3; i++ )
                CDB->FIB.fib$w_fid[i] = CDB->FIDs[CDB->Files_Deleted][i];

#ifdef DEBUG
                printf( "\n%s Starting file deletion for (%d,%d,%d)", 
				Prn_Time(),
                        (int) CDB->FIDs[CDB->Files_Deleted][0],
                        (int) CDB->FIDs[CDB->Files_Deleted][1],
                        (int) CDB->FIDs[CDB->Files_Deleted][2] );
#endif

        FIB_Descr.dsc$a_pointer = (char *) &CDB->FIB;
        FIB_Descr.dsc$w_length = sizeof CDB->FIB;

        Status = sys$qio( 0, CDB->File_Channel, IO$_DELETE|IO$M_DELETE, 
		CDB->File_IOSB, Delete_File_AST_Routine, CDB, &FIB_Descr,
		0, 0, 0, 0, 0 );

        if ( Status & 1 )
		.
		.
		.
		.



