All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.ibm.as400.access.PrintObject Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: PrintObject.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2003 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////

package com.ibm.as400.access;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeSupport;
import java.beans.VetoableChangeListener;
import java.beans.PropertyVetoException;

/**
  * The  PrintObject class is an
  * abstract base class for the various types of network print objects.
 **/

abstract public class PrintObject implements java.io.Serializable
{
    private static final String copyright = "Copyright (C) 1997-2005 International Business Machines Corporation and others.";

    static final long serialVersionUID = 4L;

    // Attribute IDs used by network print objects
    /** 3812 SCS (fonts). **/
    public static final int ATTR_3812SCS      = 0x011F;  // AT_3812SCS
    /** Accounting code. **/
    public static final int ATTR_ACCOUNT_CODE = 0x0109;  // AT_ACCOUNT_CODE
    /** ACIF processing". **/
           static final int ATTR_ACIF         = 0x013B;  // AT_ACIF
    /** Advanced function printing. **/
    public static final int ATTR_AFP          = 0x000A;  // AT_AFP
    /** AFP resource integrated file system name. **/
    public static final int ATTR_AFP_RESOURCE =    -12;
    // NOTE: The above attribute is created by the toolbox code using the following 3 attributes
    /** Resource library name. **/
           static final int ATTR_RSCLIB       = 0x00AE;  // Resource library   
    /** Resource name. **/
           static final int ATTR_RSCNAME      = 0x00AF;  // Resource name
    /** Resource object type. **/
           static final int ATTR_RSCTYPE      = 0x00B0;  // Resource object type    /** Advanced function printing (AFP) resource. **/
    // NOTE!!!: This attribute is the same as ATTR_AFP. It is being left for compatibility. 
    public static final int ATTR_AFPRESOURCE  = 0x011A;  // AT_AFP_RESOURCE
    /** ASCII transparency. **/
    public static final int ATTR_ASCIITRANS   = 0x0128;  // AT_ASCII_TRANS
    /** Auxilary storage pool. **/
    public static final int ATTR_AUX_POOL     = 0x00FC;  // AT_AUX_POOL
    /** Character ID. **/
    public static final int ATTR_CHARID       = 0x012C;  // AT_CHAR_ID
    /** DBCS character rotation commands. **/
    public static final int ATTR_CHR_RTT_CMDS = 0x013C;  // AT_CHR_RTT_CMDS
    /** Character set library name. **/
    public static final int ATTR_CHRSET_LIB   = 0x0133;  // AT_CHARSET_LIB_NAME
    /** Character set name. **/
    public static final int ATTR_CHRSET       = 0x0134;  // AT_CHARSET_NAME
    /** Character set point size.  **/
    public static final int ATTR_CHRSET_SIZE  = 0x0138;  // AT_CHAR_POINT_SIZE
    /** Coded font array. **/
    public static final int ATTR_CODFNT_ARRAY = 0x0132;  // AT_CODED_FNT_ARRAY
    /** OfficeVision. **/
    public static final int ATTR_OFFICEVISION = 0x0125;  // AT_OFFICEVISION
    /** Page groups. **/
    public static final int ATTR_PAGE_GROUPS  = 0x0126;  // AT_PAGE_GROUPS
    /** Page level index tags. **/
    public static final int ATTR_PAGELVLIDXTAG= 0x0127;  // AT_PAGE_LVL_IDX_TAG
    /** Record format name present in data stream. **/
    public static final int ATTR_RCDFMT_DATA  = 0x0129;  // AT_RCD_FMT_IN_DATA
    /** Align forms. **/
    public static final int ATTR_ALIGNFORMS   = 0x00BE;  // Align forms
    /** Align page. **/
    public static final int ATTR_ALIGN        = 0x000B;  // AT_ALIGN
    /** Allow direct print. **/
    public static final int ATTR_ALWDRTPRT    = 0x000C;  // Allow direct printing
    /** Auxilliary storage pool device name. **/
    public static final int ATTR_ASPDEVICE    = 0x010A;  // AT_ASP_DEVICE
    /** NPS Attribute default value. **/
           static final int ATTR_ATTRDEFAULT  = 0x0083;  // attribute default value
    /** NPS Attribute high limit. **/
           static final int ATTR_ATTRMAX      = 0x0084;  // attribute maximum value
    /** NPS Attribute ID. **/
           static final int ATTR_ATTRID       = 0x0085;  // attribute ID
    /** NPS Attribute low limit. **/
           static final int ATTR_ATTRMIN      = 0x0086;  // attribute minimum value
    /** NPS Attribute possible value. **/
           static final int ATTR_ATTRPOSSIBL  = 0x0087;  // possible value for attribute
    /** NPS Attribute text description. **/
           static final int ATTR_ATTRDESCRIPT = 0x0088;  // attribute description
    /** NPS Attribute type. **/
           static final int ATTR_ATTRTYPE     = 0x0089;  // attribute type
    /** Authority. **/
    public static final int ATTR_AUTHORITY    = 0x000D;  // Authority to users not on  output queue
    /** Authority to check. **/
    public static final int ATTR_AUTHCHCK     = 0x000E;  // AT_AUTHORITY_TO_CHECK
    /** Automatically end writer. **/
    public static final int ATTR_AUTOEND      = 0x0010;  // automatically end writer *YES/*NO
    /** Barcode. **/
    public static final int ATTR_BARCODE      = 0x011B;  // AT_BARCODE
    /** Back overlay integrated file system name. **/
    public static final int ATTR_BACK_OVERLAY =     -1;  // Back overlay Integrated File System name
           static final int ATTR_BKOVRLLIB    = 0x0013;  // AT_BACK_OVL_LIB
           static final int ATTR_BKOVRLAY     = 0x0014;  // AT_BACK_OVL_NAME
    /** Back margin offset across. **/
    public static final int ATTR_BKMGN_ACR    = 0x0011;  // AT_BACK_MGN_OFFSET_ACROSS
    /** Back margin offset down. **/
    public static final int ATTR_BKMGN_DWN    = 0x0012;  // AT_BACK_MGN_OFFSET_DOWN
    /** Back overlay offset across.**/
    public static final int ATTR_BKOVL_ACR    = 0x0016;  // AT_BACK_OVL_OFFSET_ACROSS
    /** Back overlay offset down.**/
    public static final int ATTR_BKOVL_DWN    = 0x0015;  // AT_BACK_OVL_OFFSET_DOWN
    /** Between copies status. **/
    public static final int ATTR_BTWNCPYSTS   = 0x00CE;  // Indicates whether the writer is between copies of multiple copy spooled file
    /** Between files status. **/
    public static final int ATTR_BTWNFILESTS  = 0x00CF;  // Indicates whether the writer is between files
    /** Changes take effect. **/
    public static final int ATTR_CHANGES      = 0x00BF;  // Changes take effect
    /** Graphic character set. **/
    public static final int ATTR_CHAR_ID      = 0x0037;  // AT_CHARID_CHAR_SET (chrid)
    /** Characters per inch. **/
    public static final int ATTR_CPI          = 0x0017;  // AT_CPI
    /** Characters per inch changes. **/
    public static final int ATTR_CPI_CHANGES  = 0x012D;  // AT_CPI_CHANGES
    /** Coded font name. **/
    public static final int ATTR_CODEDFNT     = 0x001A;  // AT_CODED_FONT_NAME
    /** Coded font library name. **/
    public static final int ATTR_CODEDFNTLIB  = 0x0018;  // AT_CODED_FONT_LIB
    /** Coded font point size. **/
    public static final int ATTR_CODEDFONT_SIZE = 0x0119; // AT_CODE_FONT_SIZE
    /** Code page. **/
    public static final int ATTR_CODEPAGE     = 0x0019;  // AT_CHARID_CODE_PAGE
    /** Code page name. **/
    public static final int ATTR_CODEPAGE_NAME= 0x0118;  // AT_CODE_PAGE_NAME
    /** Code page library name. **/
    public static final int ATTR_CODEPAGE_NAME_LIB = 0x0117; // AT_CODE_PAGE_LIB
    /** Color. **/
    public static final int ATTR_COLOR        = 0x011C;  // AT_COLOR
    /** Constant back overlay. **/
    public static final int ATTR_CONSTBCK_OVL = 0x010E;  // AT_CONST_BACK_OVL
    /** Control character. **/
    public static final int ATTR_CONTROLCHAR  = 0x00C4;  // AT_CONTROL_CHARACTER
    /** Convert line data. **/
    public static final int ATTR_CONVERT_LINEDATA  = 0x00F7;  // AT_CONVERT_LINE_DATA
    /** Copies. **/
    public static final int ATTR_COPIES       = 0x001C;  // AT_COPIES
    /** Copies left to produce. **/
    public static final int ATTR_COPIESLEFT   = 0x001D;  // AT_COPIES_LEFT
    /** Corner staple. **/
    public static final int ATTR_CORNER_STAPLE= 0x00F8;  // AT_CORNER_STAPLE
    /** Current page. **/
    public static final int ATTR_CURPAGE      = 0x001E;  // current page
    /** Data queue integrated file system name. **/
    public static final int ATTR_DATA_QUEUE   =     -2;  // Data queue IFS name
           static final int ATTR_DATAQUELIB   = 0x0020;  // AT_DATA_QUEUE_LIB
           static final int ATTR_DATAQUE      = 0x0021;  // AT_DATA_QUEUE
    /** Data format.**/
    public static final int ATTR_DATAFORMAT   = 0x001F;  // data format
    /** Date file opened (created). **/
    public static final int ATTR_DATE         = 0x0022;  // AT_DATE
    /** Spooled file selection ending date . **/
    public static final int ATTR_DATE_END     = 0x00FD;  // 
    /** Date file last used. **/
    public static final int ATTR_DATE_USED    = 0x010D;  // AT_DATE_FILE_USED
    /** Date writer began processing spooled file. **/
    public static final int ATTR_DATE_WTR_BEGAN_FILE = 0x00EA;  // date writer began file
    /** Date writer completed processing spooled filed. **/
    public static final int ATTR_DATE_WTR_CMPL_FILE = 0x00EB;  // date writer finished file
    /** Days until file expires. **/
    public static final int ATTR_DAYS_UNTIL_EXPIRE = 0x0140;   // AT_DAYS_UNTIL_EXPIRE
    /** User specified DBCS data. **/
    public static final int ATTR_DBCSDATA     = 0x0099; // contains DBCS character set data
    /** DBCS extension characters.  **/
    public static final int ATTR_DBCSEXTENSN  = 0x009A; // process DBCS extension characters
    /** DBCS character rotation.  **/
    public static final int ATTR_DBCSROTATE   = 0x009B; // rotate DBCS characters
    /** DBCS coded font name.  **/
    public static final int ATTR_DBCS_FNT     = 0x0113; // AT_DBCS_FONT
    /** DBCS coded font library name.  **/
    public static final int ATTR_DBCS_FNT_LIB = 0x0112; // AT_DBCS_FONT_LIB
    /** DBCS coded font point size.  **/
    public static final int ATTR_DBCS_FNT_SIZE= 0x0114; // AT_DBCS_FONT_SIZE
    /** DBCS characters per inch.  **/
    public static final int ATTR_DBCSCPI      = 0x009C; // DBCS CPI
    /** DBCS SO/SI spacing. **/
    public static final int ATTR_DBCSSISO     = 0x009D; // DBCS SI/SO positioning
    /** Data description specifications (DDS). **/
    public static final int ATTR_DDS          = 0x011D; // AT_DDS
    /** Decimal format used. **/
    public static final int ATTR_DECIMAL_FMT  = 0x010C;  // AT_DECIMAL_FORMAT
    /** Delete file after sending. **/
    public static final int ATTR_DELETESPLF   = 0x0097; // delete file after sending
    /** Text description. **/
    public static final int ATTR_DESCRIPTION  = 0x006D;  // text description
    /** Destination type. **/
    public static final int ATTR_DESTINATION  = 0x0025;  // destination type
    /** Destination option. **/
    public static final int ATTR_DESTOPTION   = 0x0098; // destinaton option sent
    /** Device class. **/
    public static final int ATTR_DEVCLASS     = 0x0026;  // device class
    /** Device model.**/
    public static final int ATTR_DEVMODEL     = 0x0027;  // device model
    /** Device status.**/
    public static final int ATTR_DEVSTATUS    = 0x00C7;  // device status
    /** Device type.**/
    public static final int ATTR_DEVTYPE      = 0x0028;  // device type
    /** Display any file. **/
    public static final int ATTR_DISPLAYANY   = 0x0029;  // users can display any file on queue
    /** Defer write. **/
    public static final int ATTR_DFR_WRITE    = 0x0023;  // defer write    
    /** Drawer for separators. **/
    public static final int ATTR_DRWRSEP      = 0x002A;  // drawer to use for separators
    /** Double wide characters. **/
    public static final int ATTR_DOUBLEWIDE   = 0x011E;  // AT_DOUBLE_WIDE_CHAR
    /** Drawer change. **/
    public static final int ATTR_DRAWERCHANGE = 0x012E;  // AT_DRAWER_CHANGE
    /** Print on both sides. **/
    public static final int ATTR_DUPLEX       = 0x0055;  // print on both sides of paper
    /** Edge stitch reference edge. **/
    public static final int ATTR_EDGESTITCH_REF= 0x00EE; // edgestitch reference edge 
    /** Edge stitch number of staples. **/
    public static final int ATTR_EDGESTITCH_NUMSTAPLES= 0x00F0;  // edgesticth number stapes
    /** Offset from edge stitch reference edge. **/
    public static final int ATTR_EDGESTITCH_REFOFF = 0x00EF;  // edgestitch reference offset 
    /** Edge stitch staple offset. **/
           static final int ATTR_EDGESTITCH_STPL_OFFSET_INFO   = 0x00F1;  // edgestitch staple offset
    /** Ending page.**/
    public static final int ATTR_ENDPAGE      = 0x002B;  // ending page number to print
    /** End pending status. **/
    public static final int ATTR_ENDPNDSTS    = 0x00CC;  // indicates whether an end writer command has been issued for this writer
    /** Envelope source. **/
    public static final int ATTR_ENVLP_SOURCE = 0x00D3;  // envelope source
    /** Spooled file expiration date. **/
    public static final int ATTR_EXPIRATION_DATE= 0x0141; // Spooled file expiration date
    /** Print fidelity. **/
    public static final int ATTR_FIDELITY     = 0x0054;  // the error handling when printing
    /** Field outlining. **/
    public static final int ATTR_FIELD_OUTLIN = 0x0120;  // AT_FIELD_OUTLIN
    /** File separators. **/
    public static final int ATTR_FILESEP      = 0x002C;  // number of file separators
    /** Fold records. **/
    public static final int ATTR_FOLDREC      = 0x002D;  // wrap text to next line
    /** Font changes. **/
    public static final int ATTR_FONT_CHANGES = 0x012F;  // AT_FONT_CHANGES 
    /** Font identifier. **/
    public static final int ATTR_FONTID       = 0x002E;  // Font identifier to use (default)
    /** Font resolution for formatting. **/
    public static final int ATTR_FONTRESFMT   = 0x010B;  // AT_FONT_RES_FORMAT  
    /** Form definition integrated file system name. **/
    public static final int ATTR_FORM_DEFINITION =  -3;  // Form definition IFS name
           static final int ATTR_FORMDEFLIB   = 0x00B7;  // Form definition library name
           static final int ATTR_FORMDEF      = 0x00B6; // Form definition name
    /** Form feed. **/
    public static final int ATTR_FORMFEED     = 0x002F;  // type of paperfeed to be used
    /** Form type. **/
    public static final int ATTR_FORMTYPE     = 0x0030;  // name of the form to be used
    /** Form type message option. **/
    public static final int ATTR_FORMTYPEMSG  = 0x0043;  // form type message option
    /** Front overlay integrated file system name. **/
    public static final int ATTR_FRONT_OVERLAY=     -4;  // Front overlay IFS name
           static final int ATTR_FTOVRLLIB    = 0x0033;  // Front overlay library name
           static final int ATTR_FTOVRLAY     = 0x0034;  // Front overlay name
    /** Front margin offset across. **/
    public static final int ATTR_FTMGN_ACR    = 0x0031;  // front margin across
    /** Front margin offset down. **/
    public static final int ATTR_FTMGN_DWN    = 0x0032;  // front margin down
    /** Front overlay offset across. **/
    public static final int ATTR_FTOVL_ACR    = 0x0036;  // front overlay offset across
    /** Front overlay offset down. **/
    public static final int ATTR_FTOVL_DWN    = 0x0035;  // front overlay offset down
    /** Graphics in spooled file. **/
    public static final int ATTR_GRAPHICS     = 0x0121;  // AT_GRAPHICS 
    /** Graphics token. **/
    public static final int ATTR_GRAPHICS_TOK = 0x0122;  // AT_GRAPHICS_TOK
    /** Group level index tags. **/
    public static final int ATTR_GRPLVL_IDXTAG= 0x0123;  // AT_GROUP_LVL_IDX_TAG
    /** Held status. **/
    public static final int ATTR_HELDSTS      = 0x00D0;  // Indicates whether the writer is held
    /** Highlight. **/
    public static final int ATTR_HIGHLIGHT    = 0x0124;  // AT_HIGHLIGHT
    /** Hold spool file before written.**/
    public static final int ATTR_HOLD         = 0x0039;  // Hold file before written
    /** Hold pending status. **/
    public static final int ATTR_HOLDPNDSTS   = 0x00D1;  // Indicates whether a hold writer command has been issued for this writer
    /** When to hold file. **/
    public static final int ATTR_HOLDTYPE     = 0x009E;  // When to hold spooled file
    /** Image configuration.  **/
    public static final int ATTR_IMGCFG       = 0x0100;  // Image Configuration
    /** Initialize printer. **/
           static final int ATTR_INITIALIZE_PRINTER = 0x00D2; // initialize the printer
    /** Internet address. **/
    public static final int ATTR_INTERNETADDR = 0x0094; // internet address
    /** IPDS pass-through. **/
    public static final int ATTR_IPDSPASSTHRU = 0x0116;  // AT_IPDS_PASSTHRU
    /** IPP attributes ccsid. **/
    public static final int ATTR_IPP_ATTR_CCSID= 0x00E1; // AT_IPP_ATTR_CCSID
    /** IPP natural language. **/
    public static final int ATTR_IPP_ATTR_NL  = 0x00FA;  // IPP natural language
    /** IPP job ID. **/
    public static final int ATTR_IPP_JOB_ID   = 0x00E4;  // IPP Job ID
    /** IPP job name. **/
    public static final int ATTR_IPP_JOB_NAME = 0x00E6;  // IPP Job Name
    /** IPP job name natural language. **/
    public static final int ATTR_IPP_JOB_NAME_NL= 0x00E7;  // IPP Job Name NL
    /** IPP job originating user name. **/
    public static final int ATTR_IPP_JOB_ORIGUSER= 0x00E8;  // IPP Job Originating usernam
    /** IPP job originating user name natural language. **/
    public static final int ATTR_IPP_JOB_ORIGUSER_NL= 0x00E9;  // Originating user NL 
    /** IPP printer name. **/
    public static final int ATTR_IPP_PRINTER_NAME= 0x00E5;  // IPP Printer URI name
    /** Job ccsid. **/
    public static final int ATTR_JOBCCSID     = 0x014E;  // ccsid of the job that created file
    /** Job name. **/
    public static final int ATTR_JOBNAME      = 0x003B;  // name of the job that created file
    /** Job number.**/
    public static final int ATTR_JOBNUMBER    = 0x003C;  // number of the job that created file
    /** Job separators. **/
    public static final int ATTR_JOBSEPRATR   = 0x003D;  // number of job separators
    /** Job system name. **/
    public static final int ATTR_JOBSYSTEM    = 0x00FB;  // name of the system where the job that created this spooled file ran
    /** Job user. **/
    public static final int ATTR_JOBUSER      = 0x003E;  // name of the user that created file
    /** Justification. **/
    public static final int ATTR_JUSTIFY      = 0x0038;  // justification
    /** Last page printed. **/
    public static final int ATTR_LASTPAGE     = 0x003F;  // last page that printed
    /** Library name. **/
    public static final int ATTR_LIBRARY      = 0x000F;  // library name
    /** Line spacing. **/
    public static final int ATTR_LINESPACING  = 0x00C3;  // line spacing
    /** Lines per inch. **/
    public static final int ATTR_LPI          = 0x0040;  // AT_LPI
    /** Lines per inch changes. **/
    public static final int ATTR_LPI_CHANGES  = 0x0130;  // AT_LPI_CHANGES
    /** Maximum jobs per client. **/
    public static final int ATTR_MAX_JOBS_PER_CLIENT = 0x00DE;  // 
    /** Maximum records. **/
    public static final int ATTR_MAXRCDS      = 0x0042;  // Maximum records
    /** Measurement method. **/
    public static final int ATTR_MEASMETHOD   = 0x004F;  // Measurement method (*ROWCOL or *UOM)
    /** Message queue integrated file system name. **/
    public static final int ATTR_MESSAGE_QUEUE=     -5;  // Message Queue IFSPath
    /** Message queue library name.  **/
           static final int ATTR_MSGQUELIB    = 0x0044;  // Message queue library
    /** Message queue name. **/
           static final int ATTR_MSGQUE       = 0x005E;  // Message queue
    /** Manufacturer type and model. **/
    public static final int ATTR_MFGTYPE      = 0x0041;  // Manufacturer's type & model
    /** Message help. **/
    public static final int ATTR_MSGHELP      = 0x0081;  // Message help text
    /** Message ID. **/
    public static final int ATTR_MSGID        = 0x0093;  // Message ID
    /** Message reply. **/
    public static final int ATTR_MSGREPLY     = 0x0082;  // Message reply
    /** Message severity. **/
    public static final int ATTR_MSGSEV       = 0x009F;  // Message severity
    /** Message text. **/
    public static final int ATTR_MSGTEXT      = 0x0080;  // message text
    /** Message type. **/
    public static final int ATTR_MSGTYPE      = 0x008E;  // message type
    /** Multi-item reply capability. **/
    public static final int ATTR_MULTI_ITEM_REPLY = 0x00DC;  // multiple item reply capable
    /** Pages per side. **/
    public static final int ATTR_MULTIUP      = 0x0052;  // logical pages per physical side
    /** Net ID where file originated. **/
    public static final int ATTR_NETWORK      = 0x00BD;  // network ID where file originated
           static final int ATTR_NLV_ID       = 0x00B4;  // NLV ID (ie: "2924");
    /** NPS object action. **/
           static final int ATTR_NPSACTION    = 0x008C;  // Action ID
    /** NPS CCSID. **/
    public static final int ATTR_NPSCCSID     = 0x008A;  // server CCSID
    /** NPS level. **/
    public static final int ATTR_NPSLEVEL     = 0x008D;  // server code level
    /** NPS object. **/
           static final int ATTR_NPSOBJECT    = 0x008B;  // Object ID
    /** Number of bytes to read/write. **/
    public static final int ATTR_NUMBYTES     = 0x007D;  // number of bytes to read/write
    /** Number of bytes available in a stream or spooled file. **/
    public static final int ATTR_NUMBYTES_SPLF= 0x00D9;  // number of bytes available in a stream/spooled file
    /** Number of files. **/
    public static final int ATTR_NUMFILES     = 0x0045;  // total spooled files no output queue
    /** Number of user resource library list entries. **/
    public static final int ATTR_NUMRSC_LIB_ENT= 0x0139; // AT_NUMRSC_LIB_ENT
    /** Number of writers started to queue **/
    public static final int ATTR_NUMWRITERS   = 0x0091;  // number of writers started to queue
    /** Object extended attribute. **/
    public static final int ATTR_OBJEXTATTR   = 0x00B1;  // Object extended attribute
    /** On job queue status. **/
    public static final int ATTR_ONJOBQSTS    = 0x00CD;  // indicates whether the writer is on a job queue and therefore is not currently running
    /** Open time commands. **/
    public static final int ATTR_OPENCMDS     = 0x00A0;  // Open time commands on read (for SCS)
    /** Operator controlled. **/
    public static final int ATTR_OPCNTRL      = 0x0046;  // operator controlled
    /** Order of files on queue. **/
    public static final int ATTR_ORDER        = 0x0047;  // order on queue (sequence) - *FIFO, *JOBNBR
    /** OS/400-create AFPDS.  **/
    public static final int ATTR_OS4_CRT_AFP  = 0x0135;  // AT_OS4_CRT_AFP
    /** Output priority. **/
    public static final int ATTR_OUTPTY       = 0x0048;  // output priority
    /** Output queue integrated file system name. **/
    public static final int ATTR_OUTPUT_QUEUE =     -6;  // Output queue IFS name
           static final int ATTR_OUTQUELIB    = 0x0049;  // Output queue library name
           static final int ATTR_OUTQUE       = 0x004A;  // Output queue name
    /** Output bin. **/
    public static final int ATTR_OUTPUTBIN    = 0x00C0;  // output bin
    /** Output queue status. **/
    public static final int ATTR_OUTQSTS      = 0x004B;  // output queue status
    /** Overall status of printer. **/
    public static final int ATTR_OVERALLSTS   = 0x00C8;  // overall status of printer
    /** Overflow line number. **/
    public static final int ATTR_OVERFLOW     = 0x004C;  // overflow line number
    /** Page at a time. **/
    public static final int ATTR_PAGE_AT_A_TIME= 0x00D6; // page at a time
    /* Lines Per Page is 0x004D and isn't used anymore. Use 0x004E instead. */
    /** Page definition integrated file system name. **/
    public static final int ATTR_PAGE_DEFINITION=  -13;  // Page definition IFS name 
           static final int ATTR_PAGDFNLIB    = 0x00F5;  // Page definition library name
           static final int ATTR_PAGDFN       = 0x00F6;  // Page definition name
    /** Page rotation used.  **/
    public static final int ATTR_PAGE_ROTATE  = 0x012A;  // AT_PAGE_ROTATE
    /** Length of page. **/
    public static final int ATTR_PAGELEN      = 0x004E;  // page length in Units of Measurement
    /** Page number. **/
    public static final int ATTR_PAGENUMBER   = 0x00D7;  // page number
    /** Total pages. **/
    public static final int ATTR_PAGES        = 0x006F;  // number of pages in spool file
    /** Total pages estimated. **/
    public static final int ATTR_PAGES_EST    = 0x00DA;  // indicates if the number of pages is estimated
    /** Width of page. **/
    public static final int ATTR_PAGEWIDTH    = 0x0051;  // width of page in Units of Measure
    /** Page rotation. **/
    public static final int ATTR_PAGRTT       = 0x0024;  // Page rotation
    // Chars per Line is 0x0050 and isn't used anymore - use 0x004E instead
    /** Paper source 1. **/
    public static final int ATTR_PAPER_SOURCE_1= 0x00D4; // paper source 1
    /** Paper source 2. **/
    public static final int ATTR_PAPER_SOURCE_2= 0x00D5; // paper source 2
    /** Pel density. **/
    public static final int ATTR_PELDENSITY   = 0x00B2;  // Font Pel Density "1"=240;"2"=300;
    /** Program that opened file library name. **/
    public static final int ATTR_PGM_OPN_LIB  = 0x010F;  // AT_PGM_OPN_LIB
    /** Program that opened file name. **/
    public static final int ATTR_PGM_OPN_FILE = 0x0110;  // AT_PGM_OPN_FILE
    /** Point size. **/
    public static final int ATTR_POINTSIZE    = 0x0053;  // the default font's point size
           static final int ATTR_PRECOMPUTE_NUMBYTES = 0x00B8;  // Precompute Number of bytes on open
    /** Printer (device name). **/
    public static final int ATTR_PRINTER      = 0x0059;  // Printer device name
    /** Printer file integrated file system name. **/
    public static final int ATTR_PRINTER_FILE =     -7;  // Printer file IFS name
           static final int ATTR_PRTFLIB      = 0x005B;  // Printer file library name
           static final int ATTR_PRTFILE      = 0x005C;  // Printer file name
    /** Print text. **/
    public static final int ATTR_PRTTEXT      = 0x0058;  // Text printed at bottom of each page
    /** Printer assigned. **/
    public static final int ATTR_PRTASSIGNED  = 0x00BA;  // Printer assigned
    /** Printer device type. **/
    public static final int ATTR_PRTDEVTYPE   = 0x005A;  // Printer dev type (data stream type (*SCS, *AFPDS, etc))
    /** Print quality. **/
    public static final int ATTR_PRTQUALITY   = 0x0056;  // Print quality
    /** Print sequence. **/
    public static final int ATTR_PRTSEQUENCE  = 0x0057;  // Print sequence
    /** Published printer. **/
    public static final int ATTR_PUBINF = 0x014F; //Published Printer
    /** Color supported. **/
    public static final int ATTR_PUBINF_COLOR_SUP = 0x0101; //Color supported
    /** Data stream supported. **/
    public static final int ATTR_PUBINF_DS    = 0x0106;  //Data Stream supported
    /** Pages per minute (monochrome). **/
    public static final int ATTR_PUBINF_DUPLEX_SUP = 0x0104; //Duplex supported
    /** Location description. **/
    public static final int ATTR_PUBINF_LOCATION = 0x0105; //Location description
    /** Pages per minute (color). **/
    public static final int ATTR_PUBINF_PPM   = 0x0103;  //Pages per minute (monochrome)
    /** Duplex supported. **/
    public static final int ATTR_PUBINF_PPM_COLOR = 0x0102; //Pages per minute (color)
    /** Record length. **/
    public static final int ATTR_RECLENGTH    = 0x005F;  // record length
    /** Reduce output. **/
    public static final int ATTR_REDUCE       = 0x00C2;  // Reduce output
           static final int ATTR_RESOURCE_AVAIL= 0x00B3; // resource is available
    /** Restart printing. **/
    public static final int ATTR_RESTART      = 0x0063;  // where to restart printing at
    /** Remote system name. **/
    public static final int ATTR_RMTSYSTEM    = 0x0060;  // remote system name
    /** Remote location name. **/
    public static final int ATTR_RMTLOCNAME   = 0x00FF;  // Remote location name
    /** Printer queue. **/
    public static final int ATTR_RMTPRTQ      = 0x005D;  // Remote print queue used on SNDTCPSPLF
    /** Replacement character. **/
    public static final int ATTR_RPLCHAR      = 0x0062;  // character to replace uNPrintables with
    /** Replace unprintable characters. **/
    public static final int ATTR_RPLUNPRT     = 0x0061;  // replace uNPrintable characters
    /** User resource library list. **/
    public static final int ATTR_RSC_LIB_LIST = 0x00F9;  // User resource library list
    /** Saddle stitch number of staples. **/
    public static final int ATTR_SADDLESTITCH_NUMSTAPLES = 0x00F3;  // Saddle stitch number of staples
    /** Saddle stitch reference edge. **/
    public static final int ATTR_SADDLESTITCH_REF= 0x00F2;  // Saddle stitch reference edge
    /** Saddle stitch staple offset. **/
    public static final int ATTR_SADDLESTITCH_STPL_OFFSEINFO = 0x00F4;  // saddle stitch staple offset
    /** Save spooled file after written. **/
    public static final int ATTR_SAVE         = 0x0064;  // Save spooled file after written
    /** Save command. **/
    public static final int ATTR_SAVE_COMMAND = 0x0142;  // Save command
    /** Save device. **/
    public static final int ATTR_SAVE_DEVICE  = 0x0143;  // Save device
    /** Save file integrated file system name. **/
    public static final int ATTR_SAVE_FILE    =    -14;  // Save file IFSPath
           static final int ATTR_SAVEFILE     = 0x0145;  // Save file name
           static final int ATTR_SAVEFILELIB  = 0x0144;  // Save file library name
    /** Save label. **/
    public static final int ATTR_SAVE_LABEL   = 0x0146;  // Save label
    /** Save sequence number. **/
    public static final int ATTR_SAVE_SEQUENCE_NUMBER = 0x0147;  // Save sequence number
    /** Save volume format. **/
    public static final int ATTR_SAVE_VOLUME_FORMAT = 0x0148; // Save volume format
    /** Save volume ID. **/
    public static final int ATTR_SAVE_VOLUME_ID = 0x0149; // Save volume ID
    /** File available. **/
    public static final int ATTR_SCHEDULE     = 0x006B;  // when available to the writer
    /** Transform SCS to ASCII. **/
    public static final int ATTR_SCS2ASCII    = 0x0071;  // transform SCS to ASCII
    /** Seek offset. **/
    public static final int ATTR_SEEKOFF      = 0x007E;  // seek offset
    /** Seek origin. **/
    public static final int ATTR_SEEKORG      = 0x007F;  // seek origin
    /** Send priority. **/
    public static final int ATTR_SENDPTY      = 0x0065;  // send priority
    /** Separator page. **/
    public static final int ATTR_SEPPAGE      = 0x00A1;  // Print banner page or not
           static final int ATTR_SPLFSENDCMD  = 0x0092;  // spooled file send command
    /** Source code page conversion. **/
    public static final int ATTR_SRC_CODEPAGE = 0x0107;  // Source code page conversion
    /** Source drawer. **/
    public static final int ATTR_SRCDRWR      = 0x0066;  // source drawer
    /** Spooled file creation authentication method. **/
    public static final int ATTR_SPLF_AUTH_METHOD = 0x00E3;  // Spooled file creation auth method
    /** User Who Owned File. **/
    public static final int ATTR_SPLF_CREATOR = 0x013A;  // User who owned file
    /** Spooled file restored date. **/
    public static final int ATTR_SPLF_RESTORED_DATE = 0x014A;  // Spooled file restored date
    /** Spooled file restored time. **/
    public static final int ATTR_SPLF_RESTORED_TIME = 0x014B;  // Spooled file restored time
    /** Spooled file saved date. **/
    public static final int ATTR_SPLF_SAVED_DATE = 0x014C;  // Spooled file saved date
    /** Spooled file saved time. **/
    public static final int ATTR_SPLF_SAVED_TIME = 0x014D;  // Spooled file saved time
    /** Spooled file creation security method. **/
    public static final int ATTR_SPLF_SECURITY_METHOD= 0x00E2;  // IPP Attributes-charset
    /** Spooled file size. **/
    public static final int ATTR_SPLF_SIZE    = 0x0136;  // AT_SPLF_SIZE
    /** Spooled file size multiplier.   **/
    public static final int ATTR_SPLF_SIZE_MULT = 0x0137; // AT_SPLF_SIZE_MULT
    /** Spooled file number. **/
    public static final int ATTR_SPLFNUM      = 0x0069;  // spool file number
    /** Spooled file status. **/
    public static final int ATTR_SPLFSTATUS   = 0x006A;  // spool file status
    /** Spool SCS. **/
    public static final int ATTR_SPLSCS       = 0x00AD;  // Spool SCS attr on splfile
    /** Spool the data. **/
    public static final int ATTR_SPOOL        = 0x0067;  // spool the data
    /** Spooled file name. **/
    public static final int ATTR_SPOOLFILE    = 0x0068;  // spool file name
    /** Starting page. **/
    public static final int ATTR_STARTPAGE    = 0x006C;  // starting page to print
    /** Started by. **/
    public static final int ATTR_STARTEDBY    = 0x00C5;  // started by user
    /** System driver program name. **/
    public static final int ATTR_SYS_DRV_PGM  = 0x0131;  // System driver program name
    /** System where file originated. **/
    public static final int ATTR_SYSTEM       = 0x00BC;  // system where file originated
    /** Target code page conversion. **/
    public static final int ATTR_TGT_CODEPAGE = 0x0108;  // Target code page converstion
    /** Time file opened (created). **/
    public static final int ATTR_TIME         = 0x006E;  // time spooled file was opened (created)
    /** Spooled file selection ending time.. **/
    public static final int ATTR_TIME_END     = 0x00FE;  
    /** Time writer began procesing spooled file. **/
    public static final int ATTR_TIME_WTR_BEGAN_FILE = 0x00EC;  // time writer began file
    /** Time writer completed processing spooled file. **/
    public static final int ATTR_TIME_WTR_CMPL_FILE = 0x00ED;  // time writer finished file
    /** User ID address. **/
    public static final int ATTR_TOADDRESS    = 0x0076;  // address of user to send file to
    /** User ID. **/
    public static final int ATTR_TOUSERID     = 0x0075;  // user id to send spool file to
    /** TRC for 1403. **/
    public static final int ATTR_TRC1403      = 0x012B;  // AT_TRC_1403
    /** Unit of measure. **/
    public static final int ATTR_UNITOFMEAS   = 0x0072;  // unit of measure
    /** User defined object integrated file system name. **/
    public static final int ATTR_USER_DEFINED_OBJECT= -9;  // User defined object IFS name
           static final int ATTR_USRDEFOBJLIB = 0x00A4;  // User defined object library
           static final int ATTR_USRDEFOBJ    = 0x00A5;  // User defined object
           static final int ATTR_USRDEFOBJTYP = 0x00A6;  // User defined object type
    /** User defined text. **/
    public static final int ATTR_USER_DFN_TXT = 0x0115;  // AT_USER_DFN_TEXT
    /** User driver program integrated file system name. **/
    public static final int ATTR_USER_DRIVER_PROG = -11; // user driver program IFSPath
           static final int ATTR_USRDRVLIB    = 0x00AA;  // User driver program library
           static final int ATTR_USERDRV      = 0x00AB;  // User driver program
    /** User transform program integrated file system name. **/
    public static final int ATTR_USER_TRANSFORM_PROG = -10;  // user transform program IFSPath
                  static final int ATTR_USRTFM       = 0x00A8;  // User transform program
                  static final int ATTR_USRTFMLIB    = 0x00A7;  // User transform program library
    /** User comment. **/
    public static final int ATTR_USERCMT      = 0x0073;  // user comment
    /** User data. **/
    public static final int ATTR_USERDATA     = 0x0074;  // user data
    /** System Validated data stream. **/
    public static final int ATTR_USERGEN_DATA = 0x0111;  // AT_USER_GEN_DATA
    /** User defined data. **/
    public static final int ATTR_USRDEFDATA   = 0x00A2;  // User defined data
    /** User defined file. **/
    public static final int ATTR_USRDEFFILE   = 0x00C6;  // User defined file
    /** User defined option(s). **/
    public static final int ATTR_USRDEFOPT    = 0x00A3;  // User defined options
    /** User driver program data. **/
    public static final int ATTR_USRDRVDATA   = 0x00A9;  // User driver program data
    /** Viewing fidelity. **/
    public static final int ATTR_VIEWING_FIDELITY= 0x00D8; // viewing fidelity
    /** VM/MVS Class. **/
    public static final int ATTR_VMMVSCLASS   = 0x0077;  //  VM/MVS SYSOUT class
    /** Workstation customization object integrated file system name. **/
    public static final int ATTR_WORKSTATION_CUST_OBJECT = -8;  // Workstation Cust. obj IFSPath
    /** Writing status. **/
    public static final int ATTR_WRTNGSTS     = 0x00BB;  // indicates whether the printer is in writing status
    /** Workstation customizing object name. **/
           static final int ATTR_WSCUSTMOBJ   = 0x0095;  // workstation customizing object
    /** Workstation customizing object library. **/
           static final int ATTR_WSCUSTMOBJL  = 0x0096;  // workstation customizing object library
    /** Waiting for data status. **/
    public static final int ATTR_WTNGDATASTS  = 0x00CB;  // indicates whether the writer has written all the
                                                         // data currently in the spooled file and is waiting
                                                         // for more data
    /** Waiting for device status. **/
    public static final int ATTR_WTNGDEVSTS   = 0x00C9;  // indicates whether the writer is waiting to get the
                                                         // device from a job that is printing directly to the printer
    /** Waiting for message status. **/
    public static final int ATTR_WTNGMSGSTS   = 0x00CA;  // indicates whether the writer is wating for a reply
                                                         // to an inquiry message
    /** When to automatically end writer. **/
    public static final int ATTR_WTRAUTOEND   = 0x0078;  // when to automatically end writer
    /** When to end writer. **/
    public static final int ATTR_WTREND       = 0x0090;  // when to end the writer
    /** Initialize the writer. **/
    public static final int ATTR_WTRINIT      = 0x00AC;  // When to initialize the writer
    /** Writer job name.  **/
    public static final int ATTR_WTRJOBNAME   = 0x0079;  // AT_WTR_JOB_NAME
    /** Writer job number. **/
    public static final int ATTR_WTRJOBNUM    = 0x007A;  // AT_WTR_JOB_NUMBER
    /** Writer job status. **/
    public static final int ATTR_WTRJOBSTS    = 0x007B;  // AT_WTR_JOB_STATUS
    /** Writer job user name. **/
    public static final int ATTR_WTRJOBUSER   = 0x007C;  // AT_WTR_JOB_USER
    /** Starting page. **/
    public static final int ATTR_WTRSTRPAGE   = 0x008F;  // AT_WTR_STARTING_PAGE
    /** Writer started. **/
    public static final int ATTR_WTRSTRTD     = 0x00C1;  // indicates whether the writer is started


    // KEEP THIS CURRENT ***** KEEP THIS CURRENT ***** KEEP THIS CURRENT
    // KEEP THIS CURRENT ***** KEEP THIS CURRENT ***** KEEP THIS CURRENT
    // KEEP THIS CURRENT ***** KEEP THIS CURRENT ***** KEEP THIS CURRENT
    static final int                    MAX_ATTR_ID = 0x014F;  // last attribute ID

    static final String                 EMPTY_STRING = "";
    private static final String         SYSTEM = "system";

    NPCPAttribute                       attrs;
    private NPCPID                      cpID_;
    private int                         objectType_;
    private AS400                       system_;

    transient PrintObjectImpl           impl_;

    // These instance variables are not persistent.
    transient PropertyChangeSupport     changes;
    transient VetoableChangeSupport     vetos;


    PrintObject(NPCPID idCodePoint,
                NPCPAttribute cpAttrs,
                int type)
    {

        cpID_ = idCodePoint;
        attrs = cpAttrs;
        objectType_ = type;
        system_ = null;
        initializeTransient();
    }


    PrintObject(AS400 system,
                NPCPID idCodePoint,
                NPCPAttribute cpAttrs,
                int type)
    {
        this(idCodePoint, cpAttrs, type);

        if( system == null )
        {
            Trace.log(Trace.ERROR, "Parameter 'system' is null");
            throw new NullPointerException("system");
        }
        system_ = system;
    }


    /**
     * Adds the specified PropertyChange listener to receive
     * PropertyChange events from this print object.
     *
     * @see #removePropertyChangeListener
     * @param listener The PropertyChange listener.
     **/
    public void addPropertyChangeListener(PropertyChangeListener listener)
    {
        if (listener == null)
            throw new NullPointerException("listener");
        changes.addPropertyChangeListener(listener);
    }


    /**
     * Adds the specified VetoableChange listener to receive
     * VetoableChange events from this print object.
     *
     * @see #removeVetoableChangeListener
     * @param listener The VetoableChange listener.
     **/
    public void addVetoableChangeListener(VetoableChangeListener listener)
    {
        if (listener == null)
            throw new NullPointerException("listener");
        vetos.addVetoableChangeListener(listener);
    }


    /**
     * The sub classes have default constructors implemented
     * for JavaBean support in visual builders. We need to
     * check the run time state of the object. The sub classes
     * will add additional checks by having their own
     * checkRunTimeState(), but will call super.checkRunTimeState()
     * to get this check.
     **/
    void checkRunTimeState()
    {
        if( getSystem() == null )
        {
            Trace.log(Trace.ERROR, "Parameter 'system' has not been set.");
            throw new ExtendedIllegalStateException(
              "system", ExtendedIllegalStateException.PROPERTY_NOT_SET);
        }
    }



    // Chooses the appropriate implementation.(Proxy or Remote)     
    // Subclasses MUST supply the implementation to this method.    
    abstract void chooseImpl()                                      
    throws IOException, AS400SecurityException;                     



    // This method is avialable for use by other classes within the package.
    final NPCPID getIDCodePoint()
    {
        // @B2A - no need for converter if the attribute list need not be built.
        if ((cpID_ != null) && (cpID_.getfListOutOfDate())) {                               // @B2C
        if (cpID_.converter_ == null) {                                                     // @B1A
            try {                                                                           // @B1A
                cpID_.setConverter((new Converter(system_.getCcsid(), system_)).impl);      // @B1A
            }                                                                               // @B1A
            catch(UnsupportedEncodingException e) {                                         // @B1A
                if (Trace.isTraceErrorOn())                                                 // @B1A
                    Trace.log(Trace.ERROR,  "Unable to set converter ", e);                 // @B1A
            }                                                                               // @B1A
        }                                                                                   // @B1A
        }                                                                                   // @B1A

        return cpID_;
    }


    // Returns the impl_ ... required for passing XXXImpl parameters
    PrintObjectImpl getImpl()
    {
        return impl_;
    }



    /**
     * Returns an attribute of the object that is a Integer type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     *
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public Integer getIntegerAttribute(int attributeID)
      throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        Integer aValue = null;                                  
        if ((attrs != null) && (impl_ == null)                  
            &&  (cpID_.converter_ != null)) {                   
            aValue = attrs.getIntValue(attributeID);            
        }                                                       
        if (aValue == null) {                                   
            if (impl_ == null)                                  
                chooseImpl();                                   
            aValue = impl_.getIntegerAttribute(attributeID);    
            // update the attrs, since updateAttrs may have     
            // been called on the remote side...                
            attrs = impl_.getAttrValue();                       
        }                                                       
        return aValue;                                          
    }


    /**
     * Returns an attribute of the object that is a Integer type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     *
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public Integer getSingleIntegerAttribute(int attributeID)
      throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        Integer aValue = null;
        if ((attrs != null) && (impl_ == null)
            &&  (cpID_.converter_ != null)) {
            aValue = attrs.getIntValue(attributeID);
        }
        if (aValue == null) {
            if (impl_ == null)
                chooseImpl();
            aValue = impl_.getSingleIntegerAttribute(attributeID);
            // update the attrs, since updateAttrs may have
            // been called on the remote side...
            attrs = impl_.getAttrValue();
        }
        return aValue;
    }


    /**
     * Returns an attribute of the object that is a Float type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public Float getFloatAttribute(int attributeID)
       throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        Float aValue = null;                                    
        if ((attrs != null) && (impl_ == null)                  
            &&  (cpID_.converter_ != null)) {                   
            aValue = attrs.getFloatValue(attributeID);          
        }                                                       
        if (aValue == null) {                                   
            if (impl_ == null)                                  
                chooseImpl();                                   
            aValue = impl_.getFloatAttribute(attributeID);      
            // update the attrs, since updateAttrs may have     
            // been called on the remote side...                
            attrs = impl_.getAttrValue();                       
        }                                                       
        return aValue;                                          
    }


   /**
     * Returns an attribute of the object that is a Float type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public Float getSingleFloatAttribute(int attributeID)
       throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        Float aValue = null;
        if ((attrs != null) && (impl_ == null)
            &&  (cpID_.converter_ != null)) {
            aValue = attrs.getFloatValue(attributeID);
        }
        if (aValue == null) {
            if (impl_ == null)
                chooseImpl();
            aValue = impl_.getSingleFloatAttribute(attributeID);
            // update the attrs, since updateAttrs may have
            // been called on the remote side...
            attrs = impl_.getAttrValue();
        }
        return aValue;
    }


    /**
     * Returns an attribute of the object that is a String type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     *
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public String getStringAttribute(int attributeID)
       throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        String str = null;                                      
        if ((attrs != null) && (impl_ == null)                  
            &&  (cpID_.converter_ != null)) {                   
            str = attrs.getStringValue(attributeID);            
        }                                                       
        if (str == null) {                                      
            if (impl_ == null)                                  
                chooseImpl();                                   
            str = impl_.getStringAttribute(attributeID);        
            // update the attrs, since updateAttrs may have     
            // been called on the remote side...                
            attrs = impl_.getAttrValue();                       
        }                                                       
        return str;                                             
    }


    /**
     * Returns an attribute of the object that is a String type attribute.
     *
     * @param attributeID Identifies which attribute to retrieve.
     * See the following links for the attribute IDs that are valid for each
     * particular subclass.
     *
     * @return The value of the attribute.
     *
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public String getSingleStringAttribute(int attributeID)
       throws AS400Exception,
              AS400SecurityException,
              ErrorCompletingRequestException,
              IOException,
              InterruptedException,
              RequestNotSupportedException
    {
        String str = null;
        if ((attrs != null) && (impl_ == null)
            &&  (cpID_.converter_ != null)) {
            str = attrs.getStringValue(attributeID);
        }
        if (str == null) {
            if (impl_ == null)
            chooseImpl();
            str = impl_.getSingleStringAttribute(attributeID);
            // update the attrs, since updateAttrs may have
            // been called on the remote side...
            attrs = impl_.getAttrValue();
        }
        return str;
    }


    /**
     * Returns the system on which this object exists.
     * @return The system on which this object exists.
     **/
    final public AS400 getSystem()
    {
        return system_;
    }


    private void initializeTransient()
    {
        impl_   = null;
        changes = new PropertyChangeSupport(this);
        vetos   = new VetoableChangeSupport(this);

    }


    /**
     * We need to initialize our transient and static data when
     * the object is de-serialized. static final data is OK.
     **/
    private void readObject(java.io.ObjectInputStream in)
      throws IOException, ClassNotFoundException
    {
        in.defaultReadObject();
        initializeTransient();
    }


    /**
     * Removes the specified PropertyChange listener
     * so that it no longer receives PropertyChange events
     * from this print object.
     *
     * @see #addPropertyChangeListener
     * @param listener The PropertyChange listener.
     **/
    public void removePropertyChangeListener(PropertyChangeListener listener)
    {
        if (listener == null)
            throw new NullPointerException("listener");
        changes.removePropertyChangeListener(listener);
    }


    /**
     * Removes the specified VetoableChange listener
     * so that it no longer receives VetoableChange events
     * from this print object.
     *
     * @see #addVetoableChangeListener
     * @param listener The VetoableChange listener.
     **/
    public void removeVetoableChangeListener(VetoableChangeListener listener)
    {
        if (listener == null)
            throw new NullPointerException("listener");
        vetos.removeVetoableChangeListener(listener);
    }


    // This is left here for public subclasses to use...
    // It is also located in PrintObjectImplRemote.java
    final void setIDCodePoint(NPCPID cpID)
    {
        cpID_ = cpID;
        if (impl_ != null)
             impl_.setPrintObjectAttrs(cpID_, attrs, objectType_);
    }


    /**
     * Set the system property of the PrintObject if necessary, as well
     * as the codepoint, attributes, and object type.
     **/
    void setImpl()
    throws IOException, AS400SecurityException
    {
        system_.connectService(AS400.PRINT);
        impl_.setSystem(system_.getImpl());
        impl_.setPrintObjectAttrs(cpID_, attrs, objectType_);
    }



    /**
     * Sets the system on which this object exists. This
     * method is primarily provided for visual application builders
     * that support JavaBeans. Application programmers should
     * specify the system in the constructor for the
     * specific print object.
     * @param system The system on which this object exists.
     *
     * @exception PropertyVetoException If the change is vetoed.
     *
     **/
    final public void setSystem(AS400 system)
      throws PropertyVetoException
    {
        if( system == null )
        {
            Trace.log(Trace.ERROR, "Parameter 'system' is null.");
            throw new NullPointerException("system");
        }

        if (impl_ != null) {
            Trace.log(Trace.ERROR, "Cannot set property 'system' after connect.");
            throw new ExtendedIllegalStateException( "system", ExtendedIllegalStateException.PROPERTY_NOT_CHANGED );
        }

        AS400 oldSystem = getSystem();

        // Tell any vetoers about the change. If anyone objects
        // we let the PropertyVetoException propagate back to
        // our caller.
        vetos.fireVetoableChange( SYSTEM, oldSystem, system );

        // No one vetoed, make the change.
        system_ = system;

        // we may need to pass on system...
        if (impl_ != null)
            impl_.setSystem(system_.getImpl());

        // When the system is changed, we need to "erase" any attributes
        // of the object that we have cached locally. We will refresh the
        // attributes from the new system the next time we need them.
        attrs   = null;

        // Notify any property change listeners.
        changes.firePropertyChange( SYSTEM, oldSystem, system );
    }



    /**
     * Updates the attributes of this object by going to the system and
     * retrieving the latest attributes for the object.
     *
     * @exception AS400Exception If the system returns an error message.
     * @exception AS400SecurityException If a security or authority error occurs.
     * @exception ErrorCompletingRequestException If an error occurs before the request is completed.
     * @exception IOException If an error occurs while communicating with the system.
     * @exception InterruptedException If this thread is interrupted.
     * @exception RequestNotSupportedException If the requested function is not supported because the
     *                                         the system is not at the correct level.
     **/
    public void update()
      throws AS400Exception,
             AS400SecurityException,
             ErrorCompletingRequestException,
             IOException,
             InterruptedException,
             RequestNotSupportedException
    {

       // We have chosen to do nothing here for JavaBeans. We don't
       // think the Print Attributes are JavaBean properties and we
       // have not provided separate getters/setters.

        checkRunTimeState();

        if (impl_ == null)                              
            chooseImpl();                               
        impl_.update();                                 
        // propagate any changes to attrs               
        attrs = impl_.getAttrValue();                   
    }



    // this function returns the name of the ATTR corresponding to an integer id;
    // it returns NULL if the ATTR is private, or if the id is invalid;

    // in those cases where the ATTR id is specified (in this file) as a negative decimal integer,
    // this function does report the ATTR names of the private ATTRs immediately following the one
    // with the negative id; in such cases it returns the name of the ATTR with the negative decimal id;

    static String getAttributeName(int id)
    {
        switch (id)
        {
        case 0x011F: return "ATTR_3812SCS";
        case 0x0109: return "ATTR_ACCOUNT_CODE";
        case 0x000A: return "ATTR_AFP";
        case    -12: return "ATTR_AFP_RESOURCE"; // "negative decimal"
        case 0x011A: return "ATTR_AFPRESOURCE";
        case 0x0128: return "ATTR_ASCIITRANS";
        case 0x00FC: return "ATTR_AUX_POOL";
        case 0x011B: return "ATTR_BARCODE";
        case 0x011C: return "ATTR_COLOR";
        case 0x0132: return "ATTR_CODFNT_ARRAY";
        case 0x012C: return "ATTR_CHARID";
        case 0x013C: return "ATTR_CHR_RTT_CMDS";
        case 0x0133: return "ATTR_CHRSET_LIB";
        case 0x0134: return "ATTR_CHRSET";
        case 0x0138: return "ATTR_CHRSET_SIZE";
        case 0x012D: return "ATTR_CPI_CHANGES";
        case 0x011D: return "ATTR_DDS";
        case 0x011E: return "ATTR_DOUBLEWIDE";
        case 0x012E: return "ATTR_DRAWERCHANGE";
        case 0x0120: return "ATTR_FIELD_OUTLIN";
        case 0x012F: return "ATTR_FONT_CHANGES";
        case 0x0121: return "ATTR_GRAPHICS";
        case 0x0122: return "ATTR_GRAPHICS_TOK";
        case 0x0123: return "ATTR_GRPLVL_IDXTAG";
        case 0x0124: return "ATTR_HIGHLIGHT";
        case 0x0125: return "ATTR_OFFICEVISION";
        case 0x0126: return "ATTR_PAGE_GROUPS";
        case 0x0127: return "ATTR_PAGELVLIDXTAG";
        case 0x0129: return "ATTR_RCDFMT_DATA";
        case 0x00BE: return "ATTR_ALIGNFORMS";
        case 0x012B: return "ATTR_TRC1403";
        case 0x000B: return "ATTR_ALIGN";
        case 0x000C: return "ATTR_ALWDRTPRT";
        case 0x010A: return "ATTR_ASPDEVICE";
        case 0x000D: return "ATTR_AUTHORITY";
        case 0x000E: return "ATTR_AUTHCHCK";
        case 0x0010: return "ATTR_AUTOEND";
        case 0x0011: return "ATTR_BKMGN_ACR";
        case 0x0012: return "ATTR_BKMGN_DWN";
        case     -1: return "ATTR_BACK_OVERLAY";   // "negative decimal"
        case 0x0013: return "ATTR_BACK_OVERLAY";   // declared as private (ATTR_BKOVRLLIB)
        case 0x0014: return "ATTR_BACK_OVERLAY";   // declared as private (ATTR_BKOVRLAY)
        case 0x0015: return "ATTR_BKOVL_DWN";
        case 0x0016: return "ATTR_BKOVL_ACR";
        case 0x00CE: return "ATTR_BTWNCPYSTS";
        case 0x00CF: return "ATTR_BTWNFILESTS";
        case 0x00BF: return "ATTR_CHANGES";
        case 0x0037: return "ATTR_CHAR_ID";
        case 0x0017: return "ATTR_CPI";
        case 0x0018: return "ATTR_CODEDFNTLIB";
        case 0x0019: return "ATTR_CODEPAGE";
        case 0x0117: return "ATTR_CODEPAGE_NAME_LIB";
        case 0x0118: return "ATTR_CODEPAGE_NAME";
        case 0x0119: return "ATTR_CODEDFONT_SIZE";
        case 0x001A: return "ATTR_CODEDFNT";
        case 0x010E: return "ATTR_CONSTBCK_OVL";
        case 0x00C4: return "ATTR_CONTROLCHAR";
        case 0x00F7: return "ATTR_CONVERT_LINEDATA";
        case 0x001C: return "ATTR_COPIES";
        case 0x001D: return "ATTR_COPIESLEFT";
        case 0x00F8: return "ATTR_CORNER_STAPLE";
        case 0x001E: return "ATTR_CURPAGE";
        case 0x001F: return "ATTR_DATAFORMAT";
        case     -2: return "ATTR_DATA_QUEUE";   // "negative decimal"
        case 0x0020: return "ATTR_DATA_QUEUE";   // declared as private (ATTR_DATAQUELIB)
        case 0x0021: return "ATTR_DATA_QUEUE";   // declared as private (ATTR_DATAQUE)
        case 0x0022: return "ATTR_DATE";
        case 0x00FD: return "ATTR_DATE_END";
        case 0x010D: return "ATTR_DATE_USED";
        case 0x00EA: return "ATTR_DATE_WTR_BEGAN_FILE";
        case 0x00EB: return "ATTR_DATE_WTR_CMPL_FILE";
        case 0x0140: return "ATTR_DAYS_UNTIL_EXPIRE";
        case 0x0099: return "ATTR_DBCSDATA";
        case 0x009A: return "ATTR_DBCSEXTENSN";
        case 0x009B: return "ATTR_DBCSROTATE";
        case 0x0112: return "ATTR_DBCS_FNT_LIB";
        case 0x0113: return "ATTR_DBCS_FNT";
        case 0x0114: return "ATTR_DBCS_FNT_SIZE";
        case 0x009C: return "ATTR_DBCSCPI";
        case 0x009D: return "ATTR_DBCSSISO";
        case 0x0023: return "ATTR_DFR_WRITE";
        case 0x010C: return "ATTR_DECIMAL_FMT";
        case 0x0097: return "ATTR_DELETESPLF";
        case 0x006D: return "ATTR_DESCRIPTION";
        case 0x0025: return "ATTR_DESTINATION";
        case 0x0098: return "ATTR_DESTOPTION";
        case 0x0026: return "ATTR_DEVCLASS";
        case 0x0027: return "ATTR_DEVMODEL";
        case 0x00C7: return "ATTR_DEVSTATUS";
        case 0x0028: return "ATTR_DEVTYPE";
        case 0x0029: return "ATTR_DISPLAYANY";
        case 0x002A: return "ATTR_DRWRSEP";
        case 0x0055: return "ATTR_DUPLEX";
        case 0x00EE: return "ATTR_EDGESTITCH_REF";
        case 0x00F0: return "ATTR_EDGESTITCH_NUMSTAPLES";
        case 0x00EF: return "ATTR_EDGESTITCH_REFOFF";
        case 0x002B: return "ATTR_ENDPAGE";
        case 0x00CC: return "ATTR_ENDPNDSTS";
        case 0x00D3: return "ATTR_ENVLP_SOURCE";
        case 0x0141: return "ATTR_EXPIRATION_DATE";
        case 0x0054: return "ATTR_FIDELITY";
        case 0x002C: return "ATTR_FILESEP";
        case 0x002D: return "ATTR_FOLDREC";
        case 0x002E: return "ATTR_FONTID";
        case 0x010B: return "ATTR_FONTRESFMT";
        case     -3: return "ATTR_FORM_DEFINITION";  // "negative decimal"
        case 0x00B7: return "ATTR_FORM_DEFINITION";  // declared as private (ATTR_FORMDEFLIB)
        case 0x00B6: return "ATTR_FORM_DEFINITION";  // declared as private (ATTR_FORMDEF)
        case 0x002F: return "ATTR_FORMFEED";
        case 0x0030: return "ATTR_FORMTYPE";
        case 0x0043: return "ATTR_FORMTYPEMSG";
        case 0x0031: return "ATTR_FTMGN_ACR";
        case 0x0032: return "ATTR_FTMGN_DWN";
        case     -4: return "ATTR_FRONT_OVERLAY";    // "negative decimal"
        case 0x0033: return "ATTR_FRONT_OVERLAY";    // declared as private (ATTR_FTOVRLLIB)
        case 0x0034: return "ATTR_FRONT_OVERLAY";    // declared as private (ATTR_FTOVRLAY)
        case 0x0036: return "ATTR_FTOVL_ACR";
        case 0x0035: return "ATTR_FTOVL_DWN";
        case 0x00D0: return "ATTR_HELDSTS";
        case 0x0039: return "ATTR_HOLD";
        case 0x00D1: return "ATTR_HOLDPNDSTS";
        case 0x009E: return "ATTR_HOLDTYPE";
        case 0x0100: return "ATTR_IMGCFG";
        case 0x0094: return "ATTR_INTERNETADDR";
        case 0x0116: return "ATTR_IPDSPASSTHRU";
        case 0x00E1: return "ATTR_IPP_ATTR_CCSID";
        case 0x00E4: return "ATTR_IPP_JOB_ID";
        case 0x00E6: return "ATTR_IPP_JOB_NAME";
        case 0x00E7: return "ATTR_IPP_JOB_NAME_NL";
        case 0x00E8: return "ATTR_IPP_JOB_ORIGUSER";
        case 0x00E9: return "ATTR_IPP_JOB_ORIGUSER_NL";
        case 0x00E5: return "ATTR_IPP_PRINTER_NAME";
        case 0x00FA: return "ATTR_IPP_ATTR_NL";
        case 0x014E: return "ATTR_JOBCCSID";
        case 0x003B: return "ATTR_JOBNAME";
        case 0x003C: return "ATTR_JOBNUMBER";
        case 0x003D: return "ATTR_JOBSEPRATR";
        case 0x00FB: return "ATTR_JOBSYSTEM";
        case 0x003E: return "ATTR_JOBUSER";
        case 0x0038: return "ATTR_JUSTIFY";
        case 0x003F: return "ATTR_LASTPAGE";
        case 0x000F: return "ATTR_LIBRARY";
        case 0x00C3: return "ATTR_LINESPACING";
        case 0x0040: return "ATTR_LPI";
        case 0x0130: return "ATTR_LPI_CHANGES";
        case 0x00DE: return "ATTR_MAX_JOBS_PER_CLIENT";
        case 0x0042: return "ATTR_MAXRCDS";
        case 0x004F: return "ATTR_MEASMETHOD";
        case 0x0041: return "ATTR_MFGTYPE";
        case     -5: return "ATTR_MESSAGE_QUEUE";  // "negative decimal"
        case 0x0044: return "ATTR_MESSAGE_QUEUE";  // declared as private (ATTR_MSGQUELIB)
        case 0x005E: return "ATTR_MESSAGE_QUEUE";  // declared as private (ATTR_MSGQUE)
        case 0x0081: return "ATTR_MSGHELP";
        case 0x0093: return "ATTR_MSGID";
        case 0x0082: return "ATTR_MSGREPLY";
        case 0x009F: return "ATTR_MSGSEV";
        case 0x0080: return "ATTR_MSGTEXT";
        case 0x008E: return "ATTR_MSGTYPE";
        case 0x00DC: return "ATTR_MULTI_ITEM_REPLY";
        case 0x0052: return "ATTR_MULTIUP";
        case 0x00BD: return "ATTR_NETWORK";
        case 0x008A: return "ATTR_NPSCCSID";
        case 0x008D: return "ATTR_NPSLEVEL";
        case 0x007D: return "ATTR_NUMBYTES";
        case 0x00D9: return "ATTR_NUMBYTES_SPLF";
        case 0x0045: return "ATTR_NUMFILES";
        case 0x0091: return "ATTR_NUMWRITERS";
        case 0x0139: return "ATTR_NUMRSC_LIB_ENT";
        case 0x00B1: return "ATTR_OBJEXTATTR";
        case 0x00CD: return "ATTR_ONJOBQSTS";
        case 0x00A0: return "ATTR_OPENCMDS";
        case 0x0046: return "ATTR_OPCNTRL";
        case 0x0047: return "ATTR_ORDER";
        case 0x0048: return "ATTR_OUTPTY";
        case 0x0135: return "ATTR_OS4_CRT_AFP";
        case 0x00C0: return "ATTR_OUTPUTBIN";
        case     -6: return "ATTR_OUTPUT_QUEUE";  // "negative decimal"
        case 0x0049: return "ATTR_OUTPUT_QUEUE";  // declared as private (ATTR_OUTQUELIB)
        case 0x004A: return "ATTR_OUTPUT_QUEUE";  // declared as private (ATTR_OUTQUE)
        case 0x004B: return "ATTR_OUTQSTS";
        case 0x00C8: return "ATTR_OVERALLSTS";
        case 0x004C: return "ATTR_OVERFLOW";
        case 0x00D6: return "ATTR_PAGE_AT_A_TIME";
        case    -13: return "ATTR_PAGE_DEFINITION"; // "negative decimal"
        case 0x00F5: return "ATTR_PAGE_DEFINITION"; // declared as private (ATTR_PAGDFNLIB)
        case 0x00F6: return "ATTR_PAGE_DEFINITION"; // declared as private (ATTR_PAGDFN)
        case 0x004E: return "ATTR_PAGELEN";
        case 0x00D7: return "ATTR_PAGENUMBER";
        case 0x006F: return "ATTR_PAGES";
        case 0x00DA: return "ATTR_PAGES_EST";
        case 0x0024: return "ATTR_PAGRTT";
        case 0x012A: return "ATTR_PAGE_ROTATE";
        case 0x0051: return "ATTR_PAGEWIDTH";
        case 0x00B2: return "ATTR_PELDENSITY";
        case 0x00D4: return "ATTR_PAPER_SOURCE_1";
        case 0x00D5: return "ATTR_PAPER_SOURCE_2";
        case 0x0053: return "ATTR_POINTSIZE";
        case 0x010F: return "ATTR_PGM_OPN_LIB";
        case 0x0110: return "ATTR_PGM_OPN_FILE";
        case 0x0056: return "ATTR_PRTQUALITY";
        case 0x0057: return "ATTR_PRTSEQUENCE";
        case 0x0058: return "ATTR_PRTTEXT";
        case 0x0059: return "ATTR_PRINTER";
        case 0x00BA: return "ATTR_PRTASSIGNED";
        case 0x005A: return "ATTR_PRTDEVTYPE";
        case     -7: return "ATTR_PRINTER_FILE";  // "negative decimal"
        case 0x005B: return "ATTR_PRINTER_FILE";  // declared as private (ATTR_PRTFLIB)
        case 0x005C: return "ATTR_PRINTER_FILE";  // declared as private (ATTR_PRTFILE)
        case 0x014F: return "ATTR_PUBINF";
        case 0x0101: return "ATTR_PUBINF_COLOR_SUP";
        case 0x0102: return "ATTR_PUBINF_PPM_COLOR";
        case 0x0106: return "ATTR_PUBINF_DS";
        case 0x0103: return "ATTR_PUBINF_PPM";
        case 0x0104: return "ATTR_PUBINF_DUPLEX_SUP";
        case 0x0105: return "ATTR_PUBINF_LOCATION";
        case 0x00FF: return "ATTR_RMTLOCNAME";
        case 0x005D: return "ATTR_RMTPRTQ";
        case 0x00DF: return "AT_READ_BUFFERS_SEQ";
        case 0x005F: return "ATTR_RECLENGTH";
        case 0x00C2: return "ATTR_REDUCE";
        case 0x0060: return "ATTR_RMTSYSTEM";
        case 0x0061: return "ATTR_RPLUNPRT";
        case 0x0062: return "ATTR_RPLCHAR";
        case 0x0063: return "ATTR_RESTART";
        case 0x00F3: return "ATTR_SADDLESTITCH_NUMSTAPLES";
        case 0x00F2: return "ATTR_SADDLESTITCH_REF";
        case 0x00F4: return "ATTR_SADDLESTITCH_STPL_OFFSEINFO";
        case 0x0064: return "ATTR_SAVE";
        case 0x0142: return "ATTR_SAVE_COMMAND";
        case 0x0143: return "ATTR_SAVE_DEVICE";
        case    -14: return "ATTR_SAVE_FILE";
        case 0x0145: return "ATTR_SAVEFILE";
        case 0x0144: return "ATTR_SAVEFILELIB";
        case 0x0146: return "ATTR_SAVE_LABEL";
        case 0x0147: return "ATTR_SAVE_SEQUENCE_NUMBER";
        case 0x0148: return "ATTR_SAVE_VOLUME_FORMAT";
        case 0x0149: return "ATTR_SAVE_VOLUME_ID";
        case 0x006B: return "ATTR_SCHEDULE";
        case 0x0071: return "ATTR_SCS2ASCII";
        case 0x007E: return "ATTR_SEEKOFF";
        case 0x007F: return "ATTR_SEEKORG";
        case 0x0065: return "ATTR_SENDPTY";
        case 0x00A1: return "ATTR_SEPPAGE";
        case 0x0066: return "ATTR_SRCDRWR";
        case 0x0107: return "ATTR_SRC_CODEPAGE";
        case 0x0067: return "ATTR_SPOOL";
        case 0x0068: return "ATTR_SPOOLFILE";
        case 0x00E3: return "ATTR_SPLF_AUTH_METHOD";
        case 0x013A: return "ATTR_SPLF_CREATOR";
        case 0x014A: return "ATTR_SPLF_RESTORED_DATE";
        case 0x014B: return "ATTR_SPLF_RESTORED_TIME";
        case 0x014C: return "ATTR_SPLF_SAVED_DATE";
        case 0x014D: return "ATTR_SPLF_SAVED_TIME";
        case 0x0136: return "ATTR_SPLF_SIZE";
        case 0x0137: return "ATTR_SPLF_SIZE_MULT";
        case 0x00E2: return "ATTR_SPLF_SECURITY_METHOD";
        case 0x0069: return "ATTR_SPLFNUM";
        case 0x006A: return "ATTR_SPLFSTATUS";
        case 0x00AD: return "ATTR_SPLSCS";
        case 0x006C: return "ATTR_STARTPAGE";
        case 0x00C5: return "ATTR_STARTEDBY";
        case 0x00BC: return "ATTR_SYSTEM";
        case 0x0108: return "ATTR_TGT_CODEPAGE";
        case 0x0131: return "ATTR_SYS_DRV_PGM";
        case 0x006E: return "ATTR_TIME";
        case 0x00FE: return "ATTR_TIME_END";
        case 0x00EC: return "ATTR_TIME_WTR_BEGAN_FILE";
        case 0x00ED: return "ATTR_TIME_WTR_CMPL_FILE";
        case 0x0075: return "ATTR_TOUSERID";
        case 0x0076: return "ATTR_TOADDRESS";
        case 0x0072: return "ATTR_UNITOFMEAS";
        case 0x0073: return "ATTR_USERCMT";
        case 0x0074: return "ATTR_USERDATA";
        case 0x00A2: return "ATTR_USRDEFDATA";
        case 0x00C6: return "ATTR_USRDEFFILE";
        case 0x00A3: return "ATTR_USRDEFOPT";
        case     -9: return "ATTR_USER_DEFINED_OBJECT";  // "negative decimal"
        case 0x00A4: return "ATTR_USER_DEFINED_OBJECT";  // declared as private (ATTR_USRDEFOBJLIB)
        case 0x00A5: return "ATTR_USER_DEFINED_OBJECT";  // declared as private (ATTR_USRDEFOBJ)
        case 0x00A6: return "ATTR_USER_DEFINED_OBJECT";  // declared as private (ATTR_USRDEFOBJTYP)
        case 0x0115: return "ATTR_USER_DFN_TXT";
        case 0x0111: return "ATTR_USERGEN_DATA";
        case    -10: return "ATTR_USER_TRANSFORM_PROG";  // "negative decimal"
        case 0x00A7: return "ATTR_USER_TRANSFORM_PROG";  // declared as private (ATTR_USRTFMLIB)
        case 0x00A8: return "ATTR_USER_TRANSFORM_PROG";  // declared as private (ATTR_USRTFM)
        case 0x00A9: return "ATTR_USRDRVDATA";
        case    -11: return "ATTR_USER_DRIVER_PROG";     // "negative decimal"
        case 0x00AA: return "ATTR_USER_DRIVER_PROG";     // declared as private (ATTR_USRDRVLIB)
        case 0x00AB: return "ATTR_USER_DRIVER_PROG";     // declared as private (ATTR_USERDRV)
        case 0x00D8: return "ATTR_VIEWING_FIDELITY";
        case 0x00F9: return "ATTR_RSC_LIB_LIST";
        case 0x0077: return "ATTR_VMMVSCLASS";
        case     -8: return "ATTR_WORKSTATION_CUST_OBJECT";   // "negative decimal"
        case 0x00BB: return "ATTR_WRTNGSTS";
        case 0x00CB: return "ATTR_WTNGDATASTS";
        case 0x00C9: return "ATTR_WTNGDEVSTS";
        case 0x00CA: return "ATTR_WTNGMSGSTS";
        case 0x0078: return "ATTR_WTRAUTOEND";
        case 0x0090: return "ATTR_WTREND";
        case 0x00AC: return "ATTR_WTRINIT";
        case 0x0079: return "ATTR_WTRJOBNAME";
        case 0x007A: return "ATTR_WTRJOBNUM";
        case 0x007B: return "ATTR_WTRJOBSTS";
        case 0x007C: return "ATTR_WTRJOBUSER";
        case 0x008F: return "ATTR_WTRSTRPAGE";
        case 0x00C1: return "ATTR_WTRSTRTD";
        default:     return "";
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy