免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: JTM
打印 上一主题 下一主题

请教一下JOBNUM的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-07-29 19:28 |只看该作者
测试验证 :其实我SBMJOB   CMD(DSPLIBL ) SBMFOR(123456/USER/TESTJOB) 这整个动作也是个JOB也有自己的JOBNUM/USER/JOBNMAE ;但是你提交的内容DSPLIBL 也是作为一个JOB 被提交了,(否则不就不叫提交作业了吗)这个JOB的JOBNUM/USER/JOBNAME才是你指定的那个,如果不指定他将和整个SBMJOB动作的是一样的,这个你可以看JOBLOG,
但是不是说每个JOB都是唯一的吗,这里是不是有点矛盾啊?
还要继续请教其他大侠。。。

论坛徽章:
0
12 [报告]
发表于 2006-07-30 00:18 |只看该作者
这都什么时候的帖子了 又给翻出来了。。。。。。。。

LZ直接说出你的目的好了,饶来饶去都给我饶迷糊了

论坛徽章:
0
13 [报告]
发表于 2006-08-01 20:21 |只看该作者
有意思,还没试过!但是我想取JOBNUM应该是没有问题的!

[ 本帖最后由 coolk 于 2006-8-1 20:26 编辑 ]

论坛徽章:
0
14 [报告]
发表于 2006-08-02 09:31 |只看该作者
使用QUSLJOB  API可获取JOB NUMBER, 转一个sample:



  1. /*-------------------------------------------------------------------*/
  2. /*                                                                   */
  3. /*  CL PROGRAM DESCRIPTION...                                        */
  4. /*                                                                   */
  5. /*                                                                   */
  6. /*   PROGRAM ID: CHKJOBSTS                                           */
  7. /*                                                                   */
  8. /*  DESCRIPTION: This program uses the List Job API to check the     */
  9. /*               status of any given Job based solely on the Job     */
  10. /*               Name.  This program will only return information    */
  11. /*               for a Job if it is Active or on the Job Queue.      */
  12. /*                                                                   */
  13. /*-------------------------------------------------------------------*/
  14. /*                                                                   */
  15. /*  PARAMETER USAGE                                                  */
  16. /*  ===============                                                  */
  17. /*                                                                   */
  18. /*   PARM  USAGE  TYPE  LENGTH  DESCRIPTION                          */
  19. /*   -------------------------------------------------------------   */
  20. /*    #1     I    *CHAR   10    Job Name                             */
  21. /*    #2    I/O   *CHAR   10    User Name                            */
  22. /*                                 Values: '          ' (blank)      */
  23. /*                                         Valid User Id             */
  24. /*    #3    I/O   *CHAR    6    Job Number                           */
  25. /*                                 Values: '      '     (blank)      */
  26. /*                                         Valid Job Number          */
  27. /*    #4     O    *CHAR   10    Job Status                           */
  28. /*                                 Values: '          ' (blank)      */
  29. /*                                         '*ACTIVE   '              */
  30. /*                                         '*JOBQ     '              */
  31. /*                                                                   */
  32. /*-------------------------------------------------------------------*/
  33. /*                                                                   */
  34. /*  INDICATOR USAGE                                                  */
  35. /*  ===============                                                  */
  36. /*                                                                   */
  37. /*                                                                   */
  38. /*                                                                   */
  39. /*                                                                   */
  40. /*-------------------------------------------------------------------*/
  41. /*                                                                   */
  42. /*  MODIFICATION HISTORY                                             */
  43. /*  ====================                                             */
  44. /*                                                                   */
  45. /*                                                                   */
  46. /*  MODIFICATION ID: n/a                                             */
  47. /*             DATE: 9 June 1995                                     */
  48. /*       PROGRAMMER: Kevin J. McDaniel                               */
  49. /*                   Computer Associates International, Inc.         */
  50. /*                   Global Professional Services                    */
  51. /*                   6650 W. Snowville Road                          */
  52. /*                   Brecksville, Ohio  44141                        */
  53. /*                   Tel: 216-838-8200                               */
  54. /*                   Fax: 216-838-4144                               */
  55. /*      DESCRIPTION: Created.                                        */
  56. /*                                                                   */
  57. /*                                                                   */
  58. /*-------------------------------------------------------------------*/
  59. /*                                                                   */
  60. /*  PROGRAM NOTES                                                    */
  61. /*  =============                                                    */
  62. /*                                                                   */
  63. /*  The format used here with API QUSLJOB, will be JOBL0100.         */
  64. /*                                                                   */
  65. /*  Format JOBL0100 contains:                                        */
  66. /*     1 - 10  Job Name                                              */
  67. /*    11 - 20  User Name Used                                        */
  68. /*    21 - 26  Job Number Used                                       */
  69. /*    27 - 42  Internal Job Identifier                               */
  70. /*    43 - 52  Job Status (*** This is what we want)                 */
  71. /*    53 - 53  Job Type                                              */
  72. /*    54 - 54  Job Subtype                                           */
  73. /*    55 - 56  Reserved                                              */
  74. /*                                                                   */
  75. /*-------------------------------------------------------------------*/


  76. CHKJOBSTS:  PGM        PARM(&JOBNAM &JOBUSR &JOBNBR &JOBSTAT)


  77. /*********************************************************************/
  78. /*         D E C L A R E   P R O G R A M   V A R I A B L E S         */
  79. /*********************************************************************/

  80.   /*------------------------------------*/
  81. /*  PARAMETER VARIABLES.              */
  82. /*------------------------------------*/

  83.              DCL        VAR(&JOBNAM) TYPE(*CHAR) LEN(10)
  84.              DCL        VAR(&JOBUSR) TYPE(*CHAR) LEN(10)
  85.              DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6)
  86.              DCL        VAR(&JOBSTAT) TYPE(*CHAR) LEN(10)

  87.   /*------------------------------------*/
  88. /*  GENERIC VARIABLES.                */
  89. /*------------------------------------*/

  90.              DCL        VAR(&JOBID) TYPE(*CHAR) LEN(26)
  91.              DCL        VAR(&BIN4) TYPE(*CHAR) LEN(4)
  92.              DCL        VAR(&DEC8) TYPE(*DEC) LEN(8 0)
  93.              DCL        VAR(&LEN) TYPE(*DEC) LEN(8 0)
  94.              DCL        VAR(&LENBIN) TYPE(*CHAR) LEN(4)
  95.              DCL        VAR(&LJENTRY) TYPE(*CHAR) LEN(57)
  96.              DCL        VAR(&LOOP) TYPE(*DEC) LEN(8 0)
  97.              DCL        VAR(&NBR) TYPE(*CHAR) LEN(6)
  98.              DCL        VAR(&STATUS) TYPE(*CHAR) LEN(10)

  99.   /*------------------------------------*/
  100. /*  USER SPACE VARIABLES.             */
  101. /*------------------------------------*/

  102.              DCL        VAR(&USRSPC) TYPE(*CHAR) LEN(20) +
  103.                           VALUE('LJ        QTEMP     ')
  104.              DCL        VAR(&WRKSPC) TYPE(*CHAR) LEN(10) +

  105.   /*------------------------------------*/
  106. /*  ERROR HANDLING VARIABLES.         */
  107. /*------------------------------------*/

  108.              DCL        VAR(&MSGID) TYPE(*CHAR) LEN(7)
  109.              DCL        VAR(&MSG) TYPE(*CHAR) LEN(512)
  110.              DCL        VAR(&MSGDTA) TYPE(*CHAR) LEN(512)
  111.              DCL        VAR(&MSGF) TYPE(*CHAR) LEN(10)
  112.              DCL        VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
  113.              DCL        VAR(&KEYVAR) TYPE(*CHAR) LEN(4)
  114.              DCL        VAR(&KEYVAR2) TYPE(*CHAR) LEN(4)
  115.              DCL        VAR(&RTNTYPE) TYPE(*CHAR) LEN(2)


  116. /*********************************************************************/
  117. /*      G L O B A L   E R R O R   M E S S A G E   M O N I T O R      */
  118. /*********************************************************************/

  119.              MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(STDERR1))


  120. /*********************************************************************/
  121. /*                          M A I N L I N E                          */
  122. /*********************************************************************/

  123. START:

  124.    /*------------------------------------*/
  125.   /* CREATE A TEMPORARY USER SPACE TO   */
  126. /*  LIST JOBS IN.                     */
  127. /*------------------------------------*/

  128.              RTVJOBA    NBR(&NBR)
  129.              CHGVAR     VAR(%SST(&USRSPC 3 6)) VALUE(&NBR)
  130.              CHGVAR     VAR(&WRKSPC) VALUE(%SST(&USRSPC 1 10))

  131.          /* TRY TO DELETE USER SPACE BEFORE CREATING IT. */
  132.              DLTUSRSPC  USRSPC(QTEMP/&WRKSPC)
  133.                MONMSG     MSGID(CPF0000)

  134.          /* CREAT THE USER SPACE. */
  135.              CALL       PGM(QUSCRTUS) PARM(&USRSPC 'LJSPACE   ' +
  136.                           X'00000100' ' ' '*ALL      ' 'LJ +
  137.                           Temporary User Space')
  138.                  /*----------------------------------------*/
  139.                  /* CREATE USER SPACE PARMS:               */
  140.                  /*----------------------------------------*/
  141.                  /* USER SPACE NAME AND LIBRARY            */
  142.                  /* EXTENDED ATTRIBUTE (LIKE PF, LF, DSPF) */
  143.                  /* INITIAL SIZE                           */
  144.                  /* INITIAL VALUE                          */
  145.                  /* AUTHORITY                              */
  146.                  /* TEXT                                   */
  147.                  /*----------------------------------------*/

  148.   /*------------------------------------*/
  149. /*  GET INFO ABOUT A SPECIFIC JOB.    */
  150. /*------------------------------------*/

  151.              IF         COND(&JOBUSR *EQ ' ') THEN(CHGVAR +
  152.                           VAR(&JOBUSR) VALUE('*ALL      '))
  153.              IF         COND(&JOBNBR *EQ ' ') THEN(CHGVAR +
  154.                           VAR(&JOBNBR) VALUE('*ALL  '))

  155.              CHGVAR     VAR(&JOBID) VALUE(&JOBNAM *CAT &JOBUSR +
  156.                           *CAT &JOBNBR)

  157.          /* USE LIST JOB API. */
  158.              CALL       PGM(QUSLJOB) PARM(&USRSPC 'JOBL0100  ' +
  159.                           &JOBID '*ALL      ')
  160.                  /*----------------------------------------*/
  161.                  /* LIST JOB PARMS:                        */
  162.                  /*----------------------------------------*/
  163.                  /* RECEIVING USER SPACE NAME AND LIBRARY  */
  164.                  /* FORMAT NAME OF INFORMATION TO RECEIVE  */
  165.                  /* QUALIFIED JOB NAME                     */
  166.                  /* JOB STATUS                             */
  167.                  /*----------------------------------------*/

  168.   /*------------------------------------*/
  169. /*  SEE IF ANY JOB INFO WAS FOUND.    */
  170. /*------------------------------------*/

  171.          /* LOOK AT HEADER PORTION TO SEEI IF ANY JOB INFO WAS FOUND. */
  172.              CALL       PGM(QUSRTVUS) PARM(&USRSPC X'00000085' +
  173.                           X'00000004' &BIN4)
  174.                  /*----------------------------------------*/
  175.                  /* RETREIVE USER SPACE PARMS:             */
  176.                  /*----------------------------------------*/
  177.                  /* USER SPACE NAME AND LIBRARY            */
  178.                  /* OFFSET TO # OF ENTRIES - 133 IN HEADER */
  179.                  /* LENGTH OF DATA TO RECEIVE              */
  180.                  /* VAR TO RECEIVE VALUE OF # OF ENTRIES   */
  181.                  /*----------------------------------------*/

  182.    /*------------------------------------*/
  183.   /*  IF NO ENTRIES WERE FOUND, THEN    */
  184. /*   SET THE RETURN CODE AND EXIT.    */
  185. /*------------------------------------*/

  186.              CHGVAR     VAR(&LOOP) VALUE(%BINARY(&BIN4))

  187.              IF         COND(&LOOP *EQ 0) THEN(DO)
  188.                CHGVAR     VAR(&JOBSTAT) VALUE('          ')
  189.                GOTO       CMDLBL(ALLDONE)
  190.                ENDDO

  191.        /*------------------------------------*/
  192.       /* OK, JOBS WERE FOUND, BUT ARE THEY  */
  193.      /* ACTIVE OR ON THE JOBQ?  WE COULD   */
  194.     /* HAVE LOOKED JUST FOR ACTIVE JOBS   */
  195.    /* WITH THE LIST JOB API BUT THIS     */
  196.   /* WOULD HAVE MISSED ANYTHING WAITING */
  197. /* ON THE JOBQ.                       */
  198. /*------------------------------------*/

  199.          /* RETREIVE THE LIST ENTRY LENGTH FROM HEADER OF USER SPACE. */
  200.              CALL       PGM(QUSRTVUS) PARM(&USRSPC X'00000089' +
  201.                           X'00000004' &LENBIN)
  202.                  /*----------------------------------------*/
  203.                  /* RETREIVE USER SPACE PARMS:             */
  204.                  /*----------------------------------------*/
  205.                  /* USER SPACE NAME AND LIBRARY            */
  206.                  /* OFFSET TO SIZE OF ENTRIES - 137 IN HDR */
  207.                  /* LENGTH OF DATA TO RECEIVE              */
  208.                  /* VAR TO RECEIVE VALUE OF ENTRY SIZE     */
  209.                  /*----------------------------------------*/

  210.              CHGVAR     VAR(&LEN) VALUE(%BINARY(&LENBIN))

  211.          /* RETREIVE THE OFFSET TO THE LIST PORTION OF THE USER SPACE. */
  212.              CALL       PGM(QUSRTVUS) PARM(&USRSPC X'0000007D' +
  213.                           X'00000004' &BIN4)
  214.                  /*----------------------------------------*/
  215.                  /* RETREIVE USER SPACE PARMS:             */
  216.                  /*----------------------------------------*/
  217.                  /* USER SPACE NAME AND LIBRARY            */
  218.                  /* OFFSET TO LIST ENTRY - 125 IN HEADER   */
  219.                  /* LENGTH OF DATA TO RECEIVE              */
  220.                  /* VAR TO RECEIVE VALUE OF LIST OFFSET    */
  221.                  /*----------------------------------------*/

  222.              CHGVAR     VAR(&DEC8) VALUE(%BINARY(&BIN4))
  223.              CHGVAR     VAR(&DEC8) VALUE(&DEC8 + 1)

  224.   /*------------------------------------*/
  225. /*  RETREIVE LIST INFORMATION.        */
  226. /*------------------------------------*/

  227. STARTLOOP:  CHGVAR     VAR(%BINARY(&BIN4)) VALUE(&DEC8)

  228.          /* RETREIVE THE ACTUAL LIST ENTRY FROM THE USER SPACE. */
  229.              CALL       PGM(QUSRTVUS) PARM(&USRSPC &BIN4 +
  230.                           &LENBIN &LJENTRY)
  231.                  /*----------------------------------------*/
  232.                  /* RETREIVE USER SPACE PARMS:             */
  233.                  /*----------------------------------------*/
  234.                  /* USER SPACE NAME AND LIBRARY            */
  235.                  /* OFFSET TO LIST ENTRY                   */
  236.                  /* LENGTH OF DATA TO RECEIVE              */
  237.                  /* VAR TO RECEIVE VALUE OF LIST ENTRY     */
  238.                  /*----------------------------------------*/

  239.              CHGVAR     VAR(&STATUS) VALUE(%SST(&LJENTRY 43 10))

  240.              IF         COND((&STATUS *EQ '*ACTIVE   ') *OR +
  241.                              (&STATUS *EQ '*JOBQ     ')) THEN(DO)
  242.                CHGVAR     VAR(&JOBUSR) VALUE(%SST(&LJENTRY 11 10))
  243.                CHGVAR     VAR(&JOBNBR) VALUE(%SST(&LJENTRY 21 6))
  244.                CHGVAR     VAR(&JOBSTAT) VALUE(&STATUS)
  245.                GOTO       CMDLBL(ALLDONE)
  246.                ENDDO

  247. ENDLOOP:    CHGVAR     VAR(&DEC8) VALUE(&DEC8 + &LEN)
  248.              CHGVAR     VAR(&LOOP) VALUE(&LOOP - 1)

  249.              IF         COND(&LOOP *EQ 0) THEN(DO)
  250.                CHGVAR     VAR(&JOBSTAT) VALUE('          ')
  251.                GOTO       CMDLBL(ALLDONE)
  252.                ENDDO

  253.              GOTO       CMDLBL(STARTLOOP)

  254.   /*------------------------------------*/
  255. /*  CLEAN UP AFTER OURSELVES.         */
  256. /*------------------------------------*/

  257. ALLDONE:    DLTUSRSPC  USRSPC(QTEMP/&WRKSPC)
  258.                MONMSG     MSGID(CPF0000)

  259.              GOTO       CMDLBL(ENDPGM)


  260. /*********************************************************************/
  261. /*                E R R O R   H A N D L I N G                        */
  262. /*********************************************************************/

  263. STDERR1:    DMPCLPGM

  264. STDERR2:    RCVMSG     PGMQ(*PRV) MSGKEY(&KEYVAR) RMV(*NO) +
  265.                           KEYVAR(&KEYVAR2) MSG(&MSG) +
  266.                           MSGDTA(&MSGDTA) MSGID(&MSGID) +
  267.                           RTNTYPE(&RTNTYPE) MSGF(&MSGF) +
  268.                           SNDMSGFLIB(&MSGFLIB)

  269.              IF         COND(&RTNTYPE *NE '02') THEN(GOTO +
  270.                           CMDLBL(STDERR3))

  271.              IF         COND(&MSGID *NE ' ') THEN(SNDPGMMSG +
  272.                           MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
  273.                           MSGDTA(&MSGDTA) MSGTYPE(*DIAG))

  274.              IF         COND(&MSGID *EQ ' ') THEN(SNDPGMMSG +
  275.                           MSG(&MSG) MSGTYPE(*DIAG))

  276.              RMVMSG     MSGKEY(&KEYVAR2)

  277. STDERR3:    RCVMSG     MSGKEY(&KEYVAR) MSGDTA(&MSGDTA) +
  278.                           MSGID(&MSGID) MSGF(&MSGF) +
  279.                           SNDMSGFLIB(&MSGFLIB)
  280.              SNDPGMMSG  MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) +
  281.                           MSGDTA(&MSGDTA) MSGTYPE(*ESCAPE)


  282. /*********************************************************************/
  283. /*                  P R O G R A M   E N D                            */
  284. /*********************************************************************/

  285. ENDPGM:     ENDPGM
复制代码

论坛徽章:
0
15 [报告]
发表于 2006-08-02 09:35 |只看该作者
自由格式的user space和QUSLJOB使用(可获取job number)


  1.       *
  2.       * CrtUsrSpc: Create User Space for OS/400 API's
  3.       *
  4.      d QUSCRTUS        pr                  extpgm('QUSCRTUS')
  5.      d   UsrSpc                      20A   const
  6.      d   ExtAttr                     10A   const
  7.      d   InitialSize                 10I 0 const
  8.      d   InitialVal                   1A   const
  9.      d   PublicAuth                  10A   const
  10.      d   Text                        50A   const
  11.      d   Replace                     10A   const
  12.      d   ErrorCode                32766A   options(*nopass: *varsize)
  13.       *
  14.       * --- Prototype for API Retrive User Space
  15.       *
  16.      d QUSRTVUS        pr                  extpgm( 'QUSRTVUS' )
  17.      d   QRtvUserSpace...
  18.      d                               20
  19.      d   QRtvStartingPosition...
  20.      d                                8B 0
  21.      d   QRtvLengthOfData...
  22.      d                                8B 0
  23.      d   QRtvReceiverVariable...
  24.      d                            32048
  25.      d   QRtvError...
  26.      d                              256

  27.       * --- Prototype for API Retrive List Job
  28.       *
  29.      d QUSLJOB         pr                  extpgm( 'QUSLJOB' )
  30.      d   QJobUserSpace...
  31.      d                               20
  32.      d   QJobFormatName...
  33.      d                                8
  34.      d   QJobJobName...
  35.      d                               26
  36.      d   QFldStatus...
  37.      d                               10
  38.      d   QFldError...
  39.      d                              256
  40.      d   QJobType...
  41.      d                                1
  42.      d   QNbrFldRtn...
  43.      d                                8B 0
  44.      d   QKeyFldRtn...
  45.      d                                8B 0 dim( 100 )
  46.       *
  47.      d qcmdexc         pr                  extpgm( 'QCMDEXC' )
  48.      d   os400_cmd                 2000A   options( *varsize ) const
  49.      d   cmdlength                   15P 5                     const
  50.       *
  51.       * Defined variables
  52.       *
  53.      d emailaddress    s             24    inz('abc@xyz.com')
  54.      d size            s             10I 0
  55.      d UsrSpcName      s             20    inz( 'DSPJOB    QTEMP     ' )

  56.       *
  57.       ******************************************************************

  58.      dQUSA0100         DS
  59.      d QUsrSpcOffset...
  60.      d                         1      4B 0
  61.      d QUsrSpcEntries...
  62.      d                         9     12B 0
  63.      d QUsrSpcEntrieSize...
  64.      d                        13     16B 0

  65.      dLJOBINPUT        ds                           qualified
  66.      d  JobName...
  67.      d                         1     10
  68.      d  UserName...
  69.      d                        11     20
  70.      d  JobNumber...
  71.      d                        21     26
  72.      d  Status...
  73.      d                        27     36
  74.      d  UserSpace...
  75.      d                        37     46
  76.      d  UserSpaceLibrary...
  77.      d                        47     56
  78.      d  Format...
  79.      d                        57     64
  80.      d  JobType...
  81.      d                        65     65
  82.      d  Reserved01...
  83.      d                        66     68
  84.      d  Reserved02...
  85.      d                        69     72B 0
  86.       *
  87.      dLJOB100          ds                           qualified
  88.      d  JobName...
  89.      d                         1     10
  90.      d  UserName...
  91.      d                        11     20
  92.      d  JobNumber...
  93.      d                        21     26
  94.      d  InternalJobId...
  95.      d                        27     42
  96.      d  Status...
  97.      d                        43     52
  98.      d  JobType...
  99.      d                        53     53
  100.      d  JobSubType...
  101.      d                        54     54
  102.      d  Reserved01...
  103.      d                        55     56
  104.       *
  105.      dLJOB200          ds                           qualified
  106.      d  JobName...
  107.      d                         1     10
  108.      d  UserName...
  109.      d                        11     20
  110.      d  JobNumber...
  111.      d                        21     26
  112.      d  InternalJobId...
  113.      d                        27     42
  114.      d  Status...
  115.      d                        43     52
  116.      d  JobType...
  117.      d                        53     53
  118.      d  JobSubType...
  119.      d                        54     54
  120.      d  Reserved01...
  121.      d                        55     56
  122.      d  JobInfoStatus...
  123.      d                        57     57
  124.      d  Reserved02...
  125.      d                        58     60
  126.      d  NumberOfFieldsReturned...
  127.      d                        61     64B 0
  128.      d  ReturnedData...
  129.      d                        65   1064
  130.       *
  131.      dLJOB200KEY       ds                           qualified
  132.      d  KeyNumber01...
  133.      d                         1      4B 0
  134.      d  NumberOfKeys...
  135.      d                         5      8B 0
  136.       *
  137.      dLJOBKEYINFO      ds                           qualified
  138.      d  LengthOfInformation...
  139.      d                         1      4B 0
  140.      d  KeyField...
  141.      d                         5      8B 0
  142.      d  TypeOfData...
  143.      d                         9      9
  144.      d  Reserved01...
  145.      d                        10     12
  146.      d  LengthOfData...
  147.      d                        13     16B 0
  148.      d  KeyData...
  149.      d                        17   1016
  150.       *
  151.       *  APIErrDef     Standard API error handling structure.                  *
  152.       *
  153.      dQUSEC            DS
  154.      d  ErrorBytesProvided...
  155.      d                         1      4B 0
  156.      d  ErrorBytesAvailble...
  157.      d                         5      8B 0
  158.      d  ErrorExceptionId...
  159.      d                         9     15
  160.      d  ErrorReserved...
  161.      d                        16     16
  162.       *
  163.      dAPIError         DS
  164.      d APIErrorProvied...
  165.      d                                     LIKE( ErrorBytesProvided )
  166.      d                                     INZ( %LEN( APIError ) )
  167.      d APIErrorAvailble...
  168.      d                                     LIKE( ErrorBytesAvailble )
  169.      d APIErrorMessageID...
  170.      d                                     LIKE( ErrorExceptionId )
  171.      d APIErrorReserved...
  172.      d                                     LIKE( ErrorReserved )
  173.      d APIErrorInformation...
  174.      d                              240A
  175.       *-----------------------------------------------------------------
  176.       * program status dataarea
  177.       *-----------------------------------------------------------------
  178.      d PgmSts         SDS
  179.      d   P1User              254    263
  180.      d   W1Program       *PROC
  181.       *--------------------------------------------------------------*
  182.       * work fields                                                  *
  183.       *--------------------------------------------------------------*
  184.      d Variables       ds
  185.      d   Snipp                        1    inz( '''' )
  186.      d   Count                       15  0 inz(  0   )
  187.      d   KeyCount                    15  0 inz(  0   )
  188.      d   EndPos                      15  0 inz(  0   )
  189.      d   JobbStatus                   4    inz( ' '  )
  190.      d   Subsystem                   20    inz( ' '  )
  191.      d   ReturnCode                   1    inz( ' '  )
  192.      d   FormatName                   8    inz( ' ' )
  193.      d   QualifedJobName...
  194.      d                               26    inz( ' ' )
  195.      d   JobStatus                   10    inz( ' ' )
  196.      d   JobType                      1    inz( ' ' )
  197.      d   NbrOfFldRtn                  8B 0 inz(  0  )
  198.      d   KeyFldRtn                    8B 0 inz(  0  ) dim( 100 )
  199.      d   StartingPosition...
  200.      d                                8B 0 inz(  0  )
  201.      d   LengthOfData...
  202.      d                                8B 0 inz(  0  )
  203.      d   KeyStartingPosition...
  204.      d                                8B 0 inz(  0  )
  205.      d   KeyLengthOfData...
  206.      d                                8B 0 inz(  0  )
  207.      d   ReceiverVariable...
  208.      d                            32048
  209.      d   OS400_Cmd                 2000    inz( ' '  )
  210.      d   CmdLength                   15P 5 inz( %size( OS400_Cmd ) )
  211.      d   True                         1    inz( *on  )
  212.      d   False                        1    inz( *off )
  213.       *
  214.       /free

  215.        //
  216.        // Create a user space
  217.        //
  218.           size = 10000;

  219.          // Create a user space
  220.          QUSCRTUS(UsrSpcName: 'USRSPC': size: x'00': '*ALL':
  221.           'Temp User Space for  QUSLJOB API':  '*YES': APIError);


  222.        exsr CheckStatusOfJob;

  223.        *inlr = *on;
  224.        // *************************************************************
  225.        // check status of an job
  226.        // -------------------------------------------------------------
  227.        begsr CheckStatusOfJob;

  228.        // run API to fill user space with information about all iSeries job

  229.        FormatName = 'JOBL0200';
  230.        QualifedJobName = '*ALL      ' + '*ALL      ' + '*ALL  ';
  231.        JobStatus = '*ACTIVE';
  232.        JobType = '*';
  233.        NbrOfFldRtn = 2;
  234.        KeyFldRtn( 1 ) = 0101;
  235.        KeyFldRtn( 2 ) = 1906;
  236.        callp QUSLJOB( UsrSpcName : FormatName  : QualifedJobName :
  237.                       JobStatus  : APIError    :
  238.                       JobType    : NbrOfFldRtn : KeyFldRtn         );

  239.         // if error message from the retrieve job API then dump program

  240.        if APIErrorMessageID <> ' ';
  241.          dump;
  242.          ReturnCode = True;
  243.          leavesr;
  244.        endif;

  245.        // run API to get user space attribute

  246.        StartingPosition = 125;
  247.        LengthOfData = 16;
  248.        callp QUSRTVUS( UsrSpcName   : StartingPosition  :
  249.                        LengthOfData : ReceiverVariable  :
  250.                        APIError                           );
  251.        QUSA0100 = ReceiverVariable;

  252.         // if error message from the retrieve user space API then dump program

  253.        if APIErrorMessageID <> ' ';
  254.          dump;
  255.          ReturnCode = True;
  256.          leavesr;
  257.        endif;

  258.        // preperation to read from user space

  259.        StartingPosition = QUsrSpcOffset + 1;
  260.        LengthOfData = QUsrSpcEntrieSize;

  261.        // read from user space

  262.        for count = 1 to QUsrSpcEntries;
  263.          callp QUSRTVUS( UsrSpcName   : StartingPosition  :
  264.                          LengthOfData : ReceiverVariable  :
  265.                          APIError                           );
  266.          LJOB200 = ReceiverVariable;
  267.          if APIErrorMessageID <> ' ';
  268.            dump;
  269.            ReturnCode = True;
  270.            leavesr;
  271.          endif;

  272.          // check status of job
  273.          JobbStatus = ' ';
  274.          Subsystem = ' ';
  275.          LJobKeyInfo = LJob200.ReturnedData;
  276.          KeyStartingPosition = 1;
  277.          KeyLengthOfData = LJobKeyInfo.LengthOfInformation;
  278.          for keycount = 1 to LJob200.NumberOfFieldsReturned;
  279.            LJobKeyInfo = %subst( LJob200.ReturnedData :
  280.                                  KeyStartingPosition :
  281.                                  KeyLengthOfData );
  282.            KeyLengthOfData = LJobKeyInfo.LengthOfInformation;
  283.            LJobKeyInfo = %subst( LJob200.ReturnedData :
  284.                                  KeyStartingPosition :
  285.                                  KeyLengthOfData );
  286.            Endpos = LJobKeyInfo.LengthOfData;
  287.            if     LJobKeyInfo.KeyField = 0101;
  288.               JobbStatus = %subst( LJobKeyInfo.KeyData : 1 :  Endpos );
  289.            elseif LJobKeyInfo.KeyField = 1906;
  290.               Subsystem = %subst( LJobKeyInfo.KeyData : 1 : Endpos );
  291.            endif;
  292.            KeyStartingPosition = KeyStartingPosition + KeyLengthOfData;
  293.          endfor;

  294.          // if job in message wait then email message to address in
  295.          // variable email address

  296.          if Jobbstatus = 'MSGW';
  297.             Subsystem = %trim( %subst( Subsystem : 11 : 10 ) ) + '/' +
  298.                         %trim( %subst( Subsystem :  1 : 10 ) );
  299.             os400_cmd = 'snddst type(*lmsg) ' +
  300.                         'tointnet((' + snipp + %trim(EmailAddress) +
  301.                         snipp + ')) dstd(' + snipp +
  302.                         'Job  is in  *MSGW' +
  303.                         snipp + ') longmsg(' + snipp +
  304.                         'Job (' +
  305.                         %trim( LJob200.JobName ) + '/' +
  306.                         %trim( LJob200.UserName ) + '/' +
  307.                         %trim( LJob200.JobNumber ) +
  308.                         ') subsystem ' + %trim( Subsystem ) +
  309.                         ' in status *MSGW' +
  310.                         snipp + ')';
  311.              monitor;
  312.                qcmdexc ( os400_cmd : %size ( os400_cmd ) );
  313.                on-error;
  314.                  dump;
  315.             endmon;
  316.          endif;

  317.          StartingPosition = StartingPosition + LengthOfData;

  318.        endfor;

  319.        endsr;

复制代码

[ 本帖最后由 blogliou 于 2006-8-2 11:35 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2006-08-02 19:46 |只看该作者
牛!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP