13.6. Job Hold File

The information used to control the printing of a job is string in a hold file. The entries in this file have the form:

    key=[value]


The following is an example of a hold file:

    server=0
    A=papowell@astart.com
    J=jobname
    transfername=cfA001astart.com
    datafiles=N=file\002transfername=dfA001astart.com
    subserver=0
    attempt=3
    error=cannot open printer
    hold=0
    priority=0
    remove=0
    routed=0


The contents of the control file are stored as X=<value> entries, where X is the upper case letter corresponding to the control file entry. The datafiles entry contains the data file information, as a set of fields separated by field separator characters.

The server and subserver entry records the process ID of the server process and the subserver process that is printing the job. The attempt field records the total number of attempts to print the job. The error field records any error that would prevent the job from being printed. This information is reported by the lpq program.

The hold field is non-zero when the lpc hold command is used to explicitly prevent the job from being printed; lpc release will clear the field and allow the job to be printed.

The priority field is modified by the lpc topq command and is used to provide an overriding priority to printing the file.

The remove field is non-zero when the file has been printed and should be removed.

The routed field is used to indicate that there is routing information present in the hold file, and that special handling is needed. The routing information is provided by a routing filter. The information is recorded by information in the hold file. The following is an example of routing information. Normally this information is stored in a compressed format with one line per destination, but for clarity this has been broken out into plain text form:

    active 0
    attempt 0
    done 0
    hold 0
    priority 0
    remove 0
    routed 880892602
    route 1
      dest t1
      ident papowell@h4+705.1
      error
      copies 1
      copy_done 0
      status 0
      active 0
      attempt 0
      done 0
      hold 0
      sequence 0
      priority B
      CB
      end
    route 2
      dest t1
      ident papowell@h4+705.2
      error
      copies 0
      copy_done 0
      status 0
      active 0
      attempt 0
      done 0
      hold 0
      sequence 1
      end


Routing information lines start with route followed by individual routing entry information. The route dest, copies, priority, and Xnnnn entries are derived from the output of the router program; other fields are used during the printing process. The copy_done records the numbers of copies done, while the done records that the entry has been completed. The status is the process ID of the server process doing the printing.

The output from route filter that generated the above file was:

    dest t1
    copies 1
    priority B
    CB
    end
    dest t1
    end