| Dfsort 11.0 |
| Autora: Tania Volkmann Hass |
|
INTRODUÇÃO - pré-selecionar registros (INCLUDE/OMIT) - editar e reformatar registros(INREC/OUTREC) - somar campos numéricos (SUM), exceto para função COPY - overridar defaults da instalação O DFSORT aceita como INPUT arquivos QSAM e VSAM, registros de tamanho fixo ou variável. INCLUDE/OMIT São utilizados para selecionar registros antes de enviar para o SORT/MERGE/COPY. Exemplo: selecionar de um arquivo todos os registros que possuem na posição
10, com 8 bytes, a seqüência de caracteres “ROS3PROD”. OMIT COND = (10,08,CH,NE,C'ROS3PROD') INREC/OUTREC Utilizamos o INREC para reformatar o registro de INPUT, normalmente para eliminar campos desnecessários, aumentando a performance do SORT. O OUTREC é usado para reformatar o registro através do processo de SORT/MERGE ou COPY. Inserção e brancos e constantes, devem ser feitas preferencialmente no OUTREC. Exemplo: 1 a 3 – conteúdo da posição 10 com tamanho
3 SUM Esta declaração de controle permite: - somar campos de registros com chaves iguais. Exemplo: Neste exemplo, ocorrem duas somas: Outros Parâmetros: FILSZ1000 – DFSORT espera 1000 registros exatamente. FILSZE10000 – aproximadamente 10000 registros SIZE – especifica a quantidade total de memória disponível para o DSORT. Exemplos: SIZE = MAX – deve ser especificado para SORT, MERGE ou COPY de grandesvolumes de dados. SIZE = 256 K – pode ser especificado para COPY (pequenos volumes). SIZE = 512 – pode ser especificado para SORT ou MERGE de pequenos volumes de dados. SKIPREC = M – salta número de registros antes de iniciar um SORT ou COPY do INPUT. Exemplo: SKIPREC = 920 STOPAFT = N – ENCERRA O PROCESSO DE LEITURA (SORT ou COPY), quando for atingido o número especificado. Exemplo: STOPAFT = 1000 SUGESTÕES PARA AUMENTAR A PERFORMANCE Tamanho do bloco Blocos muito pequenos podem degradar a performance do DFSORT. Procure utilizar blocos adequados para o INPUT e OUTPUT de seu SORT. Tamanho do Registro Quanto menor o registro, mais rápido o DFSORT. Procure utilizar as declarações INREC para reduzir o tamanho do registro, permanecendo apenas com os campos essenciais. Nota: INREC para a função COPY é possível no entanto pode degradar a performance, ao contrário do que ocorre para as funções SORT e MERGE. Quantidade de Registros Utilize sempre que possível as declarações INCLUDE/OMIT para reduzir a quantidade de registros. Caso a quantidade de registros seja conhecida, especifique via opção FILSZ . esta opção é especialmente importante se for trabalhar com arquivo de entrada residente em fita (alocação de espaço). Memória: Em geral uma quantidade generosa de memória aumenta a performance do DFSORT. Especifique adequadamente o parâmetro SIZE, que é utilizado para alocar memória para o DFSORT. Agrupamento de campos de controle. Na existência de vários campos referenciados por uma operação de SORT/MERGE, que sejam subseqüentes e tenham o mesmo formato, é recomendável que sejam codificados como sendo um único campo. Implementação do ICEGENER Usando a facilidade do DFSORTCOPY para copiar arquivos, haverá uma redução significativa de tempo de processador. Os números a seguir refletem uma estimativa feita com base nos seguintes fatos: a) Codificação da ICEIEXIT para adequar a quantidade de memória aos DFSORT'S de nossa instalação. Ganho esperado: cerca de 10% do tempo de processador, especialmente para grandes volumes de registros. b) Substituição do IEBGENER, que não utiliza cartões de controle, pelo ICEGENER. Ganho esperado: acima de 70% do tempo do processador. c)Substituição do UTGETPUT, sem PARM, pelo ICEGENER. Ganho esperado: acima de 45% do tempo de processador. ---------------------------------------------------- PROGR..................... CPU GASTA ....................CPU ESPERA Sort Externo.............. 1:30h ................ ..........1:15h IEBGENER................ 16:00h ..........................4:00h UTGETPUT................. 1:50H ..........................1:00h CPU GASTA foi o tempo registrado no SMF para todos os programas executados no mês de março/91. CPU ESPERADA é o tempo de processador esperado com a aplicação dos itens a,b e c acima. O SORT Interno também será beneficiado, embora sua medição não seja possível, já que o CPU TIME fica apropriado para o programa chamador. NOTA: O ICEGENER será implantado de forma transparente ao usuário, que continuará executando o IEBGENER. Exemplo 1: Eliminação de chaves duplas. Este exemplo ilustra a utilização do DFSORT para classificar
um arquivo, eliminando os registros duplos constituídos por cliente
(posição 4 a 12) e órgão responsável
(pos. 13 a 21). OUTPUT = Fixo blocado, LRECL = 40,BLKSIZE = 3200 . SUM FIELDS = NONE – elimina duplos . Reduzir registros é uma boa medida para aumentar a eficiência do DFSORT, e tal recurso foi utilizado através da cláusula INREC, especificando somente os campos necessários na operação. . A inserção de caracteres de edição para formatação do registro de saída, foi feita somente depois da classificação, com a cláusula OUTREC, aumentando assim também a performance do DFSORT. //... JOB Exemplo 2 Comparativo UTGETPUT X IEBGENER X ICEGENER Este exemplo ilustra em comparativo de tempos de execução utilizados pelo UTGETPUT, IEBGENER E ICEGENER, para copiar um arquivo variável blocado com LRECL = 2004, BLKSIZE = 2008, VOLUME = 31 cyl (3380). DFSORT: //DFSORT ........EXEC........PGM = SORT, PARM = 'SIZE = 256K' //SYSPRINT......DD SYSOUT = T //SYSOUS........DD SYSOUT = T //SORTIN........DD DSN = S.ROS.CEL.ROSACT.DISP = SHR //SORTOUT.....DD DSN = &&T4,DISP = ,(PASS), //..................DCB = )BLKSIZE = 2008,L.RECL = 2004,RECFM = VB), //.................SPACE = (CYL,(10,10), UNIT = SYSDA //DFSPARM.. . DD* ...SORT FIELDS = COPY UTGEPUT: //UTGETPUT........EXEC PGM = UTGETPUT //SYSPRINT.... ....DD SYSOUT = T //ENTRADA... ......DD DSN = S.ROS.CEL.ROSACT,DISP = SRH //SAIDA..............DD DSN = &&T1,DISP = (,PASS) .................................................DCB = BLKSIZE = 2008,L.RECL ,// =2004,RECFM = VB), //......................SPACE = (CYL,(10,10),UNIT = SYSDA
IEBGENER //IEBGENER........EXEC PGM = IEBGENER //SYSPRINT........DD SYSOUT = T //SYSUT1...........DD DSN = S.ROS.CEL.ROSACT.DISP = SHR //SYSUT2...........DD DSN = &&T2,DISP = (,PAS), //.....................DCB = (BLKSIZE = 2008,L.RECL = 2004,RECFM = VB), //....................SPACE = (CYL,(10,10), UNIT = SYSDA //SYSUB...........DD DUMMY RESULTADOS ENCONTRADOS CONSUMO UTGET IEBGEN ICEGEN CPU TCB 03.57 04.90 00.78 CPU SRB 01.55 05.71 00.07 TOTAL 05.12 10.61 00.85 Outros exemplos encontram-se à disposição no ROSCOE, na biblioteca EQS IEBGENER (ICEGENER) X UTGETPUT Recomendamos o uso do IEBGENER (ICEGENER) para os seguintes casos: 1.Registros Pequenos (de 1 a 500 bytes) com as características
abaixo: Nota: Evidentemente, com uma blocagem mais adequada, não deverá ser utilizado o IEBGENER(ICEGENER) para registros tão pequenos. 2. Registros médios (de 500 a 1000 bytes) com as características abaixo: . Quantidades não muito pequenas de registros, exceto para blocos
muito pequenos. LRECL=800,BLKSIZE=1600 (acima de 800 registros) . Quantidade não muito pequenas de registros, exceto para blocos
muito pequenos. LRECL=1000,BLKSIZE=11000 (acima DE 1000 registros) |
| Copyright@2003 / Companhia de Informática do Paraná - CELEPAR | links: |
![]() |
![]() |
![]() |