Como calcular o % de execução de um trabalho em batch

A forma geral de calcular o progresso de qualquer trabalho é a seguinte:
Progresso = ("Trabalho realizado até o momento"/"Trabalho total a realizar")* 100
Como verás, para poder utilizar esta fórmula, é necessário saber o: "Trabalho total a realizar".
Dado que este último depende das complexibilidades inerentes ao programa que se está rodando em Batch, (Não é o mesmo que a realização de uma listagem de um arquivo transitório, que a re-indexação de um arquivo de 10 milhões de registros) e dado que o AS/400 não é adivinho, não é possível que exista tais API, pelo geral me animo a afirmar que não existe ninhum sistema que possua tal API, a não ser que seja num ambiente reduzido e com regras muito claras.
Sem embargo se queres um Progress Bar dos trabalhos que tu criou em Batch, não está perdido de todo, presta atenção:
Suponha que teu processo BATCH tem a seguinte estrutura:

PGM
call program1
call program2
..
call programN
ENDPGM

como tu era o criador sabes que:
program1 emite um listagem sem importância
program2 reordena o arquivo mestre
..
programN emite uma listagem final
Pois bem, baseado em teu conhecimento e avaliação de como se executam as coisas, tu podes criar a seguinte tabela
% %Acumulado
program1 5% 5%
program2 30% 35%
program3 10% 45%
..
programN 1% 100%
-----
Suma 100%
então podes modificar tua CL, assim (Modificações em Maiúscula).

pgm
DCL &PROGBAR *CHAR 10
DCL &JOBNUM *CHAR 6
RTVJOBA JOBNUM(&JOBNUM)
CHGVAR &PROGBAR ('PBAR'||&JOBNUM)
CRTDTAARA QGPL/&PROGBAR *DEC (2, 0)
call program1
CHGDTAARA QGPL/&PROGBAR (1 2) 5
call program2
CHGDTAARA QGPL/&PROGBAR (1 2) 35
call programa2
CHGDTAARA QGPL/&PROGBAR (1 2) 45
..
call programN
CHGDTAARA QGPL/&PROGBAR (1 2) 45
endpgm

assim, em qualquer momento tu podes fazer
dspdtaara qgpl/pbarXXXXXX , onde XXXXX é o número de job e te mostrará o percentual de progresso do mesmo...


Este documento foi elaborado com a resposta de Sanotto a uma mensagem do fórum

31-10-2001

Fonte: www.recursos-as400.com