midrange.com code scratchpad
Name:
STRFAXSPT *ALL
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
08/21/2008 03:21:41 pm
IP:
Logged
Description:
Starts all fax devices for fax/400 by IBM.
Code:
  1. /* Start all fax devices.                                                 */
  2. /* Adds *ALL as an option in FAXD on the STRFAXSPT command.               */
  3. /*                                                                        */
  4. /* No rights reserved at all.  Feel free to modify code and comments as   */
  5. /* desired.                                                               */
  6. /* Thanks to Guy Vig of IBM for assistance with handling pointers in CL   */
  7. /* For information on handling Application Program Interfaces or APIs     +
  8.    please see the Infocenter at:                                          +
  9.    http://publib.boulder.ibm.com/iseries/                                 +
  10.    Studying:                                                              +
  11.      - API concepts                                                       +
  12.      - QUSPTRUS - Retrieve pointer to userspace                           +
  13.      - QUSCRTUS - Create user space                                       +
  14.      - QUSMBRL  - List Members                                            +
  15.    Or buy the book by the former IBMer Bruce Vining                       +
  16.    "IBM System i APIs at Work" available at http://store.midrange.com     */
  17.  
  18. /* Modification log:                                                      */
  19. /* 08/21/08 by R.Berendt                                                  */
  20. /*          Created                                                       */
  21. /*                                                                        */
  22. /*                                                                        */
  23. PGM
  24.  
  25.  DCL  &UserSpace   *CHAR  20  /* Qualified user space                         */
  26.  DCL   &SpaceObj   *CHAR  10 STG(*DEFINED) DEFVAR(&UserSpace 1)
  27.  DCL   &SpaceLib   *CHAR  10 STG(*DEFINED) DEFVAR(&UserSpace 11)
  28.  DCL  &USExtAttr   *CHAR  10 VALUE('MEMBERLIST') /* Extended Attr of userspace  */
  29.  DCL  &USSize      *INT    4 VALUE(0001) /* Initial size of user space          */
  30.  DCL  &USInit      *CHAR   1 VALUE(X'00') /* Initial value of user space        */
  31.  DCL  &USAuth      *CHAR  10 VALUE('*ALL') /* Public authority of user space    */
  32.  DCL  &USText      *CHAR  50 VALUE('QUSLMBR') /* Text of user space             */
  33.  DCL  &Format      *CHAR   8 VALUE('MBRL0100')
  34.  DCL  &DataBase    *CHAR  20  /* Qualified database name                        */
  35.  DCL   &DBObj      *CHAR  10 STG(*DEFINED) DEFVAR(&DataBase 1)
  36.  DCL   &DBLib      *CHAR  10 STG(*DEFINED) DEFVAR(&DataBase 11)
  37.  DCL  &MbrSelect   *CHAR  10 VALUE('*ALL') /* Which members to retrieve info    */
  38.  DCL  &Overrides   *CHAR   1 VALUE('0') /* No override processing               */
  39.  DCL  &USPtr       *PTR       /* Pointer to user space                          */
  40.  DCL  &GHPtr       *PTR       /* Pointer to generic header information          */
  41.  DCL  &GHInfo      *CHAR 256 STG(*BASED) BASPTR(&GHPtr) /* Generic header information */
  42.  DCL   &GHHOffset  *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 117) /* offset to header */
  43.  DCL   &GHHSize    *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 121) /* header size */
  44.  DCL   &GHLOffset  *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 125) /* offset to list */
  45.  DCL   &GHLSize    *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 129) /* list size */
  46.  DCL   &GHLNbr     *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 133) /* Number of list entries */
  47.  DCL   &GHLEntSize *INT    4 STG(*DEFINED) DEFVAR(&GHInfo 137) /* Size of each entry */
  48.  DCL  &pListEntry  *PTR       /* Pointer to list entry. */
  49.  DCL  &ListEntry   *CHAR  10 STG(*BASED) BASPTR(&pListEntry) /* Current fax configuration */
  50.  DCL  &EntryNbr    *INT    4 /* DOFOR VAR(&ENTRYNBR) FROM(1) TO(&GHLNBR) */
  51.  DCL  &EnhSrv      *CHAR   4 VALUE('*YES') /* Initially flag Enhanced services to start */
  52.  DCL  &FAXD        *CHAR 220 VALUE(X'00') /* List of fax devices */
  53.  DCL  &Cmd         *CHAR 512 VALUE(X'00') /* Command to execute */
  54.  DCL  &CmdLen      *DEC (15 5) VALUE(512) /* Length of command to execute  */
  55.  
  56.  /* Create a user space to hold the list of members holding the fax devices */
  57.  CHGVAR &SpaceObj 'QFAXDEV'
  58.  CHGVAR &SpaceLib 'QTEMP'
  59.  CALL QUSCRTUS PARM(&UserSpace &USExtAttr &USSize &USInit &USAuth &USText)
  60.  /* MONMSG CPF9870 User space already exists */
  61.  
  62.  CHGVAR &DBObj 'QAFFCFG'
  63.  CHGVAR &DBLib 'QUSRSYS'
  64.  CALL QUSLMBR PARM(&UserSpace &Format &DataBase &MbrSelect &Overrides)
  65.  /* For debugging purposes only                    +
  66.       DSPF '/QSYS.LIB/QTEMP.LIB/QFAXDEV.USRSPC'    +
  67.  */
  68.  
  69.  /* Retrieve pointer to user space */
  70.  CALL QUSPTRUS PARM(&UserSpace &USPtr)
  71.  
  72.  /* Header information */
  73.  CHGVAR &GHPtr &USPtr
  74.  
  75.  /* Any list entries? ie:  Are there any fax devices at all?  */
  76.  if (&GHLNbr>0) Then(Do)
  77.  
  78.     /* Initialize pListEntry to some valid entry to allow the %offset to work shortly */
  79.     chgvar &pListEntry &USPtr
  80.  
  81.     DOFOR VAR(&EntryNbr) FROM(1) TO(&GHLNbr)
  82.          CHGVAR  VAR(%offset(&pListEntry)) +
  83.                VALUE(%offset(&USPtr) + &GHLOffset +
  84.                              + ((&EntryNbr - 1) * &GHLEntSize))
  85.          IF (&EntryNbr = 1) then(do)
  86.             CHGVAR VAR(&FAXD) VALUE(&ListEntry)
  87.          EndDo
  88.          Else Do
  89.             CHGVAR VAR(&FAXD) VALUE(&FAXD *BCAT &ListEntry)
  90.          EndDo
  91.     EndDo       /* Cycling through each list entry */
  92.     /* Using QCMDEXC because, if you have more than one fax device you'll get +
  93.         STRFAXSPT FAXD('FAXD01 FAXD02')...                                    +
  94.         while it should be                                                    +
  95.         STRFAXSPT FAXD(FAXD01 FAXD02) ...                                    */
  96.     CHGVAR VAR(&Cmd) VALUE('STRFAXSPT FAXD(' *TCAT &FAXD *TCAT ') ENHSRV(' +
  97.            *TCAT &EnhSrv *TCAT ')')
  98.     CALL QCMDEXC PARM(&Cmd &CmdLen)
  99.  
  100.  EndDo       /* At least one list entry */
  101.  
  102. CleanUp:
  103.  
  104.  /* Delete user space when done */
  105.  DLTUSRSPC USRSPC(&SPACELIB/&SPACEOBJ)
  106.  
  107. END:
  108.  
  109.              ENDPGM 
© 2004-2019 by midrange.com generated in 0.007s valid xhtml & css