SplEnumJob - Example Code

This sample code accepts a queue name from the command line, and then prints out all the information associated with each job in that queue. Level 0 and 2 are valid; we have chosen to print out level 2 information.

#define INCL_SPL
#define INCL_SPLDOSPRINT
#define INCL_SPLERRORS

#include <os2.h>
#include <stdio.h>      /* for printf function */

INT main (argc, argv)
  INT argc;
  CHAR *argv[];
{
  ULONG  splerr ;
  ULONG  cbBuf ;
  ULONG  cTotal ;
  ULONG  cReturned ;
  ULONG  cbNeeded ;
  ULONG  ulLevel;
  ULONG  i ;
  PSZ    pszComputerName ;
  PSZ    pszQueueName ;
  PVOID  pBuf = NULL;
  PPRJINFO2 pprj2 ;

  /* Check that the command line entry was two parameters.                    */
  if (argc != 2)
  {
    printf("Syntax:  enumjob  QueueName\n");
    DosExit( EXIT_PROCESS , 0 ) ;
  }
  /* Either a NULL or a pointer to a NULL specify the local workstation.      */
  pszComputerName = (PSZ)NULL ;

  /* Set queue name equal to the value entered at the command line.           */
  pszQueueName = argv[1];

  /* Valid level are 0 and2. Level 2 gives info for a PRJINFO2 structure.     */
  ulLevel = 2L;

  /* Make the call the first time with cbBuf = zero so that we can get a      */
  /* return of the number of bytes that are need for pBuf to hold all of      */
  /* the information. The bytes needed will be returned in cbNeeded.          */
  splerr = SplEnumJob(pszComputerName,pszQueueName, ulLevel, pBuf,0L,
                         &cReturned, &cTotal,
                         &cbNeeded, NULL) ;

  /* Check that the return code is one of the two valid errors at this time.  */
  if (splerr == ERROR_MORE_DATA || splerr == NERR_BufTooSmall )
  {
     /* Allocate memory for pBuf. ( No error checking is done on DosAllocMem  */
     /* call to keep this sample code simple.)                                */
     DosAllocMem( &pBuf, cbNeeded,
                  PAG_READ|PAG_WRITE|PAG_COMMIT );

     /* Set bytes needed for buffer to the value returned by the first call.  */
     cbBuf = cbNeeded ;

     /* Make the call with all the valid information.                         */
     SplEnumJob(pszComputerName,pszQueueName, ulLevel,
                         pBuf, cbBuf, &cReturned,&cTotal,
                         &cbNeeded,NULL );

     /* Set up a pointer to point to the beginning of the buffer in which we */
     /* have the returned information                                        */
     pprj2=(PPRJINFO2)pBuf;

     /* The number of structures in the buffer(pBuf) are returned in cReturned*/
     /* Implement a for loop to print out the information for each structure. */
     for (i=0; i<cReturned ;i++ )
     {
         printf("Job ID       = %d\n",  pprj2->uJobId);
         printf("Job Priority = %d\n",  pprj2->uPriority);
         printf("User Name    = %s\n",  pprj2->pszUserName);
         printf("Position     = %d\n",  pprj2->uPosition);
         printf("Status       = %d\n",  pprj2->fsStatus);
         printf("Submitted    = %ld\n", pprj2->ulSubmitted);
         printf("Size         = %ld\n", pprj2->ulSize);
         printf("Comment      = %s\n",  pprj2->pszComment);
         printf("Document     = %s\n\n",pprj2->pszDocument);

         /* Increment the pointer to point to the next structure in the buffer*/
         pprj2++;
     } /* endfor */
     /* Free the memory that we allocated to make the call.                   */
     DosFreeMem(pBuf) ;
  }
  else
  {
  /* If any other error other than ERROR_MORE_DATA or NERR_BufTooSmall, then  */
  /* print the returned information.                                          */
     printf("SplEnumJob Error=%ld, Total Jobs=%ld, Returned Jobs=%ld, Bytes Needed=%ld\n",
             splerr, cTotal, cReturned, cbNeeded) ;
  }
  DosExit( EXIT_PROCESS , 0 ) ;
  return (splerr);
}


[Back: SplEnumJob - Related Functions]
[Next: SplEnumJob - Topics]