/* ========================================================================= */ /* Nombre Del Programa: QWCLSCDE */ /* Tipo De Programa: */ /* Nombre Del Autor..: LEONARDO VILLALOBOS */ /* E-mail: */ /* Fecha De Creacion..: */ /* */ /* Proposito............: Recupera Entradas del Scheduler */ /* Para AS/400 */ /* */ /* Sumario Del Programa */ /* ------------------------------------------------------------------------*/ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* Revision Del Sumario */ /* ------------------------------------------------------------------------*/ /* */ /* */ /* */ /* */ /* ==========================================================================*/ PGM /* Variables para Manejo de Errores */ DCL &msgid *CHAR 7 DCL &msgf *CHAR 10 DCL &msgflib *CHAR 10 DCL &msgdta *CHAR 100 /* Variables de Trabajo */ DCL &BytesAv *DEC 5 DCL &Handle *CHAR 16 DCL &Err *CHAR 24 DCL &Err1 *CHAR 24 DCL &Usrspc *CHAR 20 + Value('SCHE QTEMP ') DCL &GenHd *CHAR 140 DCL &Offsetb *CHAR 4 DCL &StrPosb *CHAR 4 DCL &Hdroffb *CHAR 4 DCL &Hdrlenb *CHAR 4 DCL &Hdrinfo *CHAR 26 DCL &Lststs *CHAR 1 DCL &Infosts *CHAR 1 DCL &Jobnam *CHAR 10 DCL &Usrnm *CHAR 10 DCL &Entry *CHAR 6 DCL &Loop *DEC 8 DCL &Elenb *CHAR 4 DCL &Ljobe *CHAR 1156 /* ========================================================================= */ /* Ejecuta Rutina de Manejo de Error */ /* ========================================================================= */ MONMSG Cpf0000 EXEC(GOTO Error) /* ========================================================================= */ /* Elimina El Espacio de Usuario, Si existe */ /* ========================================================================= */ CALL Qusdltus Parm(&Usrspc &Err1) MONMSG Cpf0000 /* ========================================================================= */ /* Crea El Espacio de Usuario */ /* ========================================================================= */ CALL Quscrtus Parm(&Usrspc 'Listscde' + X'00000100' ' ' '*ALL ' 'Sched. Job + List Temp User Space ') /* ========================================================================= */ /* Ejecuta la Api para Las Entradas del Planificador de Trabajos */ /* ========================================================================= */ Partlist: CALL Qwclscde PARM(&Usrspc 'SCDL0200' + '*ALL ' &handle &Err) /* ========================================================================= */ /* Valida si existe un Error en la Ejecuci¢n de la API */ /* ========================================================================= */ CHGVAR &BytesAv (%Bin(&Err 5 4)) IF (&BytesAv > 0) DO CHGVAR &Msgid (%Sst(&Err 9 7)) CHGVAR &Msgdta (%Sst(&Err 17 8)) SNDPGMMSG MSGID(&msgid) + MSGF(Qsys/Qcpfmsg) + MSGDTA(&msgdta) + MSGTYPE(*Escape) + TOPGMQ(*PRV) RETURN ENDDO /* ========================================================================= */ /* Ejecuta la Api para Recuperar las Entradas */ /* ========================================================================= */ CALL Qusrtvus PARM(&Usrspc X'00000001' + X'0000008C' &Genhd) /* ========================================================================= */ /* Recupera Informaci¢n de "Status" */ /* ========================================================================= */ CHGVAR (&Lststs) (%Sst(&Genhd 104 1)) IF (&Lststs = 'I') (DO) SNDPGMMSG MSGID(CPF9897) + MSGF(QSYS/QCPFMSG) + MSGDTA('Lista Incompleta en el "User Space",' + |>'Visualice las Anotaciones......' + ) + TOPGMQ(*PRV) + MSGTYPE(*ESCAPE) GOTO Alldone ENDDO /* ========================================================================= */ /* Recupera # de Ent. desde "Header" */ /* ========================================================================= */ CHGVAR &Loop (%Bin(&Genhd 133 4)) /* ========================================================================= */ /* Comprueba Si existen Entradas en el Scheduler */ /* ========================================================================= */ IF (&Loop = 0) (DO) SNDPGMMSG MSGID(CPF9897) + MSGF(QSYS/QCPFMSG) + MSGDTA('No Existen Entradas el "Scheduler"') + TOPGMQ(*PRV) + MSGTYPE(*ESCAPE) CALL Qusdltus Parm(&Usrspc &Err1) MONMSG Cpf0000 ENDDO /* ========================================================================= */ /* Recupera Longitud de la Entrada y el "Offset", Estos Valores se utilizan */ /* para configurar la Posici¢n Inicial */ /* ========================================================================= */ CHGVAR &Elenb (%Sst(&Genhd 137 4)) CHGVAR &Offsetb (%Sst(&Genhd 125 4)) CHGVAR (%Bin(&StrPosb)) (%Bin(&Offsetb) + 1) /* ========================================================================= */ /* Recuperan "Entradas" del "Scheduler", si Existen */ /* ========================================================================= */ Startloop: IF (&Loop = 0) (GOTO PARTCHK) CALL Qusrtvus (&Usrspc &StrPosb &Elenb &Ljobe) CHGVAR (&Infosts) (%Sst(&Ljobe 1 1)) CHGVAR (&jobnam) (%Sst(&Ljobe 2 10)) CHGVAR (&Entry) (%Sst(&Ljobe 12 10)) CHGVAR (&Usrnm) (%Sst(&Ljobe 547 10)) IF (&Infosts *EQ ' ') (DO) CHGVAR (%Bin(&Strposb)) (%Bin(&Strposb) + %Bin(&Elenb)) CHGVAR &Loop (&Loop -1) GOTO Startloop ENDDO RETURN /* ========================================================================= */ /* No Existen Entradas en el "Scheduler OS/400" */ /* ========================================================================= */ Partchk: IF (&Lststs = 'C') (DO) GOTO Alldone ENDDO CHGVAR &Hdroffb (%Sst(&Genhd 121 4)) CHGVAR &Hdrlenb (%Sst(&Genhd 117 4)) CALL Qusrtvus (&Usrspc &Hdroffb &Hdrlenb &Hdrinfo) CHGVAR &Handle (%Sst(&Hdrinfo 11 16)) GOTO Partlist /* ========================================================================= */ /* Rutina de Error */ /* ========================================================================= */ Error: RCVMSG MSGTYPE(*Last) + MSGDTA(&msgdta) + MSGID(&msgid) + MSGF(&msgf) + SNDMSGFLIB(&msgflib) /* ========================================================================= */ /* Evita un Ciclo */ /* ========================================================================= */ MONMSG CPF0000 SNDPGMMSG MSGID(&msgid) + MSGF(&msgflib/&msgf) + MSGDTA(&msgdta) + MSGTYPE(*Escape) /* ========================================================================= */ /* Evita un Ciclo */ /* ========================================================================= */ MONMSG CPF0000 /* ==========================================================================*/ /* Elimina El Espacio de Usuario Temporal que fue Creado */ /* ==========================================================================*/ Alldone: CALL Qusdltus PARM(&usrspc &Err) MONMSG Cpf0000 ENDPGM