Este documento establece lineamientos generales para la programación en COBOL en una organización. Incluye consideraciones para la estructuración del código, nomenclatura de programas y copias, y optimizaciones para el rendimiento. El objetivo es promover la calidad del software a través de estándares de programación compartidos que faciliten el mantenimiento y reutilización del código.
Este documento establece lineamientos generales para la programación en COBOL en una organización. Incluye consideraciones para la estructuración del código, nomenclatura de programas y copias, y optimizaciones para el rendimiento. El objetivo es promover la calidad del software a través de estándares de programación compartidos que faciliten el mantenimiento y reutilización del código.
Este documento establece lineamientos generales para la programación en COBOL en una organización. Incluye consideraciones para la estructuración del código, nomenclatura de programas y copias, y optimizaciones para el rendimiento. El objetivo es promover la calidad del software a través de estándares de programación compartidos que faciliten el mantenimiento y reutilización del código.
ESTANDARES DE PROGRAMACION COBOL Lineamientos generales para la o!i"iai#n !e programas en leng$a%e COBOL Me%oramiento Contin$o 1 INDICE GENERAL INDICE GENERAL&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ' 1. INTRODUCCION............................................................................................................................................2 2. OBJETIVOS.....................................................................................................................................................2 3. PRINCIPIOS GENERALES:............................................................................................................................2 Consideraiones !enera"es de #ro!ra$ai%n es&r'&'rada....................................................................................2 Linea$ien&os !enera"es #ara "a ons&r'i%n de #ro!ra$as COBOL..................................................................2 IDENTI(ICATION DIVISION........................................................................................................................2 ENVIRON)ENT DIVISION...........................................................................................................................2 DATA DIVISION..............................................................................................................................................2 PROCEDURE DIVISION................................................................................................................................2 *. Prini#a"es r'&inas de 'so !enera":....................................................................................................................2 +. ('niones dis#oni,"es #ara $ane-o de .e/as:.................................................................................................2 0. Performance 1 Consideraiones ,2sias a" odi.iar #ro!ra$as:.....................................................................2 3. Performance 4 Es&ad5s&ias #or STEP 6E7i& IDSACTRT8................................................................................2 9. Performance 1 Consideraiones ,2sias #ara o,&ener Back-ups:......................................................................2 :. Per.or$ane 4 Consideraiones a" 'sar ar/i;os VSA).................................................................................2 TA)A<O DEL CONTROL INTERVAL.............................................................................................................2 TA)A<O DEL CONTROL AREA.......................................................................................................................2 OPTI)I=ANDO EL ASIGNA)IENTO DE FREE SPACE................................................................................2 OPTI)I=ANDO EL TA)A<O DEL BUFFER.................................................................................................2 Par2$e&ro A)P.................................................................................................................................................2 1>. Per.or$ane 1 S',sis&e$a Batch Local Shared Resource............................................................................2 11. ANE?O A: RELACION DE ABREVIATURAS.......................................................................................2 ATRIBUTOS DE LOS CA)POS........................................................................................................................2 OTRAS ABREVIATURAS CO)UNES PARA ESPECI(ICAR VARIABLES..................................................2 12. ANE?O B: NO)ENCLATURA DE PROGRA)AS.................................................................................2 13. ANE?O C: NO)ENCLATURA DE COP@s..............................................................................................2 2 (& INTROD)CCION Un aspecto fundamental para contar con altos niveles de calidad en el desarrollo de software es el uso de estndares de programacin que sean compartidos y aplicados por todos los desarrolladores de manera intensiva y consistente. Los beneficios son mltiples : cdigo uniforme, entendible por todos los desarrolladores, menores tiempos de mantenimiento, mayores posibilidades de tener cdigo reusable, mayores posibilidades de integrar aplicaciones, etc. En las grandes empresas desarrolladoras de software el uso de estndares de programacin es un factor clave de !ito y la factibilidad de su aplicacin queda confirmada cuando vemos que esas empresas tienen aplicaciones con un alto nmero de programas que al ser revisados parecen "aber sido codificados por una misma persona porque tienen un mismo estilo, un mismo patrn, una misma forma de denominar las variables, una misma forma de estructurar la lgica principal del programa y de los diferentes prrafos que la componen, es decir un con#unto de mtodos y tcnicas de codificacin que obedecen a estndares de programacin predefinidos que una ve$ que son entendidos permiten al desarrollador revisar y entender fcilmente cualquier programa y "acer las modificaciones que sean necesarias sin que el programa pierda su estructura e integridad original. Este primer documento muestra los estndares de programacin bsicos recopilados a la fec"a, que deben irse enriqueciendo y me#orando con los aportes de todos los desarrolladores de nuestra instalacin, de tal forma que en un corto pla$o podamos tener los beneficios comentados l%neas arriba. 3 '& OB*ETIVOS Los principales ob#etivos son: &roporcionar al personal encargado de la construccin de '(, las pautas generales para la elaboracin de los programas )obol. &roporcionar al personal de programacin del rea los estndares necesarios para la codificacin y autodocumentacin de los cambios y modificaciones a los programas en lengua#e )*+*L. &roporcionar al personal de programacin de las principales rutinas de uso general. +rindar las pautas bsicas, que permitan desarrollar programas que al e#ecutarse sean eficientes en el consumo de recursos, obteniendo finalmente tiempos de e#ecucin ra$onables. +& PRINCIPIOS GENERALES, Consi!eraiones generales !e programai#n estr$t$ra!a &ara la elaboracin de los programas en lengua#e )*+*L, se deben tener en cuenta las siguientes recomendaciones: La secuencia del programa debe ser de arriba "acia aba#o 'egmentar el programa en grandes bloques por funcin espec%fica 'ubdividir cada bloque en bloques de menor nivel con mayor detalle de lgica )odificar los bloques de mayor nivel de tal manera que den una visin integral de las funciones y lgica de los bloques de menor nivel. Eliminar el uso de sentencias ,* -* Utili$ar la anidacin de las estructuras de lgica .dentificar claramente el inicio, procesos y fin de cada programa. Usar abreviaciones nemotcnicas para nombres de variables y prrafos )rear prrafos de lgica que puedan ser reusados dentro del mismo programa y eviten codificacin redundante. .ncluir comentarios que ayuden a entender la lgica de las partes claves del programa y faciliten el mantenimiento posterior del mismo. * E-e$#"o: *----------------------------------* PROCEDURE DIVISION USING LINK-PARM. *----------------------------------* PERFORM 1000-ABRIR-ARCHIVOS PERFORM 2000-REALIZAR-PROCESO PERFORM 5000-CERRAR-ARCHIVOS STOP RUN. *---------------------* 2000-REALIZAR-PROCESO. *---------------------* PERFORM 2003-LEER-FECHA-DIA PERFORM 2004-CREA-REGISTRO-CONTROL PERFORM 200-CARGA-TABLA-CANALES PERFORM 2010-LEER-ARCHIVO-MAESTRO UNTIL FIN-DE-ARCHIVO PERFORM 2020-PROCESA-REGISTRO PERFORM 2010-LEER-ARCHIVO-MAESTRO PERFORM 2004-CREA-REGISTRO-CONTROL. + Lineamientos generales para la onstr$i#n !e programas COBOL IDENTI-ICATION DIVISION .dentificacin del programa )onsignar el nombre del programa, el autor y la fec"a en la que se codific el programa, tal como se muestra a continuacin.
000008 ************************* 000009 IDENTIFICATION DIVISION. 000010 ************************* 000011 000012 PROGRAM-ID. BCNSAP02. 000013 AUTHOR. CARLOS SANCHEZ. 000014 INSTALLATION. BANCO DE CREDITO. 00001 DATE-!RITTEN. OCTUBRE" 1988. 00001# Las reglas a observar para asignar nombres a los programas se puede ver en el /ne!o +. &ropiedad del software / continuacin de la clasula 0/-E1(2--E3 debe insertarse las l%neas que se muestran a continuacin y que se encuentran en la librer%a de )*&4s del ambiente de &roduccin como '-0+)&.0. . 000001 ***************************************************************** 000002 * PROPIEDAD DEL PROGRAMA * 000003 * * 000004 * ESTE PROGRAMA $ SUS ELEMENTOS ASOCIADOS SON DE PROPIEDAD * 00000 * DEL BANCO DE CREDITO DEL PERU $ NO PUEDE SER REPRODUCIDO" * 00000# * DIVULGADO O UTILIZADO SIN UNA LICENCIA O AUTORIZACION * 00000% * ESCRITA OTORGADA POR EL BANCO DE CREDITO DEL PERU. * 000008 * * 000009 *****************************************************************. 0atos generales del programa / continuacin se debe insertar un recuadro que contenga los datos generales del programa como : 'istema al que pertenece, 5dulo o 'ubsistema al que pertenece, ob#etivos del programa, principales funciones que reali$a, y la relacin de arc"ivos que utili$a indicando el nombre e!terno de los mismos y si son de .nput o *utput, segn e#emplo mostrado a continuacin. 0 000001 ****************************************************************** 000002 * SISTEMA & NUEVO SISTEMA DE ADMINISTRACION DE TAR'ETAS (NSAT) * 000003 * * 000004 * MODULO & CONTROL DEL SISTEMA * 00000 * * 00000# * OB'ETIVOS & CARGA DE PARAMETROS A REGISTROS DE CONTROL * 00000% * * 000008 * FUNCIONES & VALIDA TIPOS DE REGISTROS A INGRESARSE * 000009 * VALIDA RELACION ENTRE TIPOS DE REGISTROS * 000010 * RECIBE PARAMETROS DESDE FILE SECUENCIAL * 000013 * ARCHIVOS & * 000014 * * 00001 * INPUT FECHAS$S - FECHA PARA $2* * 00001# * INPUT INSPARAM - PARAMETROS DE INPUT * 00001% * I-O UNS$R0%A - FILE DE CONTROL DEL SISTEMA * 000018 * * 000020 ****************************************************************** 0escripcin de los cambios reali$ados
0escripcin del mantenimiento a reali$ar. 6ec"a de inicio de modificacin del programa. .nstitucin para la que fue modificada 7+)&, +)+, 6)&8. 3ombre del programador que efecta el mantenimiento. 3mero del tic9et con el que pasar el programa a produccin. -odo cambio en el cdigo de programa debe tener registrado en las seis ltimas posiciones 7:;1:<8 el nmero del tic9et con el que se reali$ la modificacin. Las l%neas de cdigo que ya no sean necesarias no son borradas, solo se comentan y se coloca el nmero del tic9et con el que se est reali$ando la modificacin. El recuadro que se muestra, se adicionar a continuacin de los datos generales del programa o a continuacin de los ya e!istentes. *-------------------------------------------------------------* * MODIFICACION ! INCLUSI"N DE COD. DE TRANSACCION EN MN * * FECHA ! 31#12#2000 * * AFECTA A ! BCB * * MODIFICADO POR! AUTOR DE LA MODIFICACION * * NRO.TICKET ! 009988 * *-------------------------------------------------------------*
&osicin 7columnas del :; a :<8 en la cual se indica el nmero de tic9et que motiv la modificacin de programa. *----------------------------------* PROCEDURE DIVISION USING LINK-PARM. *----------------------------------* PERFORM 1000-ABRIR-ARCHIVOS 009988 PERFORM 2000-REALIZAR-PROCESO PERFORM 5000-CERRAR-ARCHIVOS 009988 STOP RUN. 3 ENVIRONMENT DIVISION 3ombre interno de los arc"ivos El nombre interno que va despus del 'ELE)-, debe constar de abreviaturas separadas por guiones que permitan identificar el tipo de arc"ivo. En ningn caso debe usarse el nombre e!terno como nombre interno de un arc"ivo. 0000$5 SELECT MOVI-GIROS 0000$% SELECT MOVI-CH&GER 0000$ SELECT TARIFAS-SUC 0000$$ SELECT COND-ESPEC 0000$' SELECT PARAM-GENE 0000'0 SELECT FECHA-FILE 0000'1 SELECT LOG-BATCH 0000'2 SELECT OPER-ELIMIN 0000'3 SELECT REPORT-FILE 0000'4 SELECT MOVI-(KFILE 0000'5 SELECT SORT-(KFILE 3ombre e!terno de arc"ivos La primera posicin del nombre e!terno de los arc"ivos debe permitir identificar si estos son de input, output, input1output, tablas o reportes, de la siguiente manera : I 1 .nput O 1 *utput ) 1 .nput1*utput R 1 2eporte T 1 -abla 0e la posicin = a la : se debe registrar las > ltimas posiciones del nombre del )*&4, de#ando la posicin < para una secuencia alfabtica en caso el )*&4 sea usado para mas de un arc"ivo dentro de un mismo programa. / continuacin algunos e#emplos: INS)R01A, arc"ivo de .nput cuyo )*&4 es BCNS)R01 usado para un primer arc"ivo. INS)R01B, arc"ivo de .nput cuyo )*&4 es BCNS)R01 usado para un segundo arc"ivo. UNS)R0'A, arc"ivo .nput1*utput cuyo )*&4 es BCNS)R0'. &ara el caso de arc"ivos identificados como 2 72eporte8 no es obligatorio la e!istencia o uso de un )*&4. 9 DATA DIVISION 0efinicin de arc"ivos /ntes del 6ile 0efinition 7608 de cada arc"ivo debe anteponerse un recuadro que describa el arc"ivo que se esta definiendo. )uando solo se incluye el nombre del )*&4 del arc"ivo, no es posible identificar de que arc"ivo se trata. -odos los arc"ivos que se usan en un programa deben tener un )*&4. En ningn caso se debe leer ni grabar un arc"ivo sin el )*&4 correspondiente, si no lo tiene debe crersele uno. Las reglas a observar para asignar nombres a los )*&4 se pueden ver en el /ne!o ). 0000' **************** 0000'$ DATA DIVISION. 0000'' **************** 000101 FILE SECTION. 000103 ********************************************************* 000104 * MAESTRO DE GIROS* TRANSF. ) CHE&UES * 000105 ********************************************************* 00010% FD MAE-GIRTRANS LABEL RECORD STANDARD BLOCK 0. 00010 COP) BCGI)R01. 00010$ 000145 ********************************************************* 00014% * MOVIMIENTO DE CHE&UES DE GERENCIA * 00014 ********************************************************* 00014$ FD MOVI-CH&GER LABEL RECORD OMITTED BLOCK 0. 00014' COP) BCGI)R02. 0escripcin en los )*&4s -odos los )*&4s deben tener al inicio un recuadro conteniendo la descripcin del arc"ivo, el tipo de organi$acin, longitud del registro y longitud de la clave si es inde!ado. 000002 ********************************************************* 000003 * COP) BCGI)R01. * 000004 * * 000005 * ARCHIVO MAESTRO DEL SISTEMA GIROS* TRANSF * 00000% * ) CHE&UES DE GERENCIA * 00000 * * 00000$ * ORGANIZACION VSAM KSDS * 00000' * * 000011 * CLAVE DE ACCESO GT-MAE-COD-CLAVE-PRI - 15 B)TES * 000012 * GT-MAE-COD-CLAVE-SEC - 40 B)TES * 000013 * * 000014 * LONGITUD DE REGISTRO 4$0 B)TES * 000015 ********************************************************* : 0escripcin de campos en los )*&4s / nivel de cada campo, agregar comentarios que indiquen los posibles valores y significado de los campos principales. 000045 *-------------------------------------------------------* 00004% * CLAVE DE ACCESO PARA GIROS * 00004 *-------------------------------------------------------* 00004$ 0% GT-MAE-COD-CLAVE-PRI REDEFINES GT-MAE-CLAVE. 00004' 0' GT-MAE-COD-SERV PIC '. 000050 * 0 - REGISTRO DE CONTROL 000051 * 1 - REGISTRO DE GIROS POSTALES 000052 * 2 - REGISTRO DE CHEQUES DE GERENCIA 0000%1 0' GT-MAE-COD-SUCUR PIC '+3,. 0000%2 0' GT-MAE-NRO-GIRO PIC '+,. 0000%3 0' GT-MAE-FECH-DIA-ING PIC -+$,. 0000%4 0' GT-MAE-FECH-MES-ING PIC '+13,V''. 0000%5 *-------------------------------------------------------* 0000%% * CLAVE DE ACCESO PARA TRANSFERENCIAS * 0000% *-------------------------------------------------------* 0000%$ 0% GT-MAE-COD-CLAVE-SEC REDEFINES GT-MAE-CLAVE. 0000%' 0' FILLER PIC -+4,. 00000 0' GT-MAE-COD-CLAVE-NOM PIC -+%,. .dentificacin de )*&4s en (or9ing 'torage. Los )*&4s incluidos en la (or9ing 'torage tambin deben tener un recuadro que especifique de que )*&4 se trata y los prefi#os que tienen los campos contenidos en l. 'i esta descripcin no e!iste, no es posible ubicar fcilmente dentro del programa el )*&4 de un arc"ivo en particular ni identificar a que )*&4 pertenecen los campos que usa el programa. 000145 ********************************************************* 00014% * MOVIMIENTO DE CHE&UES DE GERENCIA * 00014 * * 00014$ * PREFI.O USADO / GT-MOV * 00014' ********************************************************* 000150 COP) BCGI)R02. 000151 3ombre de campos definidos en el programa Los nombres de campo que son de uso interno del programa deben estar antecedidos de un prefi#o que identifique la 'ection del programa en la que estn definidos, segn el siguiente detalle: (or9ing 'torage 'ection, prefi#o (' Lin9age 'ection , prefi#o L? )ommon /rea a enviar, prefi#o ('1)/ )ommon /rea a recibir, prefi#o )/ )ommon (or9 /rea, prefi#o )( -ransaction (or9 /rea, prefi#o -( -emporary 'torage, prefi#o -' -ransient 0ata, prefi#o -0 1> )ommon /rea a enviar : 000051 01 (S-COMMON-AREA. 000052 02 (S-CA-PROG-TO PIC -+$, VALUE 0BCBTTP050. 000053 02 (S-CA-PROG-FROM PIC -+$,. 000054 02 (S-CA-FUNCION PIC -+4, VALUE 0ENVI0. 000055 02 (S-CA-MAP PIC -+, VALUE 0BCBT05A0. 00005% 02 (S-CA-VAR-AREA PIC -+53,. 00005 02 FILLER REDEFINES (S-CA-VAR-AREA. 00005$ 04 (S-CA-CTACTE PIC -+15,. 00005' 04 (S-CA-CTACTE-R REDEFINES (S-CA-CTACTE. 0000%0 10 (S-CTA-12 PIC -+12,. 0000%1 10 (S-BLANCOS PIC -+3,. 0000%2 04 (S-CA-ACRON PIC -+0$,. 0000%3 04 (S-CA-TIP-OPER PIC -+01,. 0000%4 04 (S-CA-MENSA.E PIC -+2$,. 0000%5 04 (S-CA-TELECRED PIC -+01,. )ommon /rea a recibir 00052 00520 01 DFHCOMMAREA. 000530 005300 02 CA-RETURN-TO-MENU. 000531 005310 05 CA-PARMS-FROM-MENU PIC -+005,. 000532 005320 05 FILLER PIC -+041,. 000534 005340 02 CA-FIRST-TIME PIC '. 000535 005350 02 CA-TRNSFR-IND PIC '. 00053 00530 02 CA-FLAT-FEE-IND PIC -. 000541 005410 02 CA-BASE-CURR-IND1 PIC -. 000542 005420 02 CA-TRN-CURR-IND1 PIC -. 000543 005430 02 CA-CURRENT-SCREEN PIC S'. 000544 005440 02 CA-HIGHEST-SCREEN PIC S'. 00054% 0054%0 02 CA-SCREEN-&UEUE-NAME PIC -+00$,. 00054 00540 02 CA-LC-RECORD-T)PE0 PIC -+1200,. 00054' 0054'0* 02 CA-E-PIR)-DATE PIC '+%,. 000550 005500 02 CA-E-PIR)-DATE PIC '+,. 000551 005510 02 CA-BASE-CURR-CODE PIC ---. 3ombre de campos definidos en )*&4s Los nombres de campo definidos en un )*&4 deben tener un prefi#o que identifique la aplicacin 7'/-, /L', -ar#eta de )rdito, etc.8 y el tipo de arc"ivo al que pertenecen 7arc"ivo maestro, arc"ivo de movimiento, Log, 2eporte, etc.8. / continuacin algunos e#emplos: 3'15/E1 '-/-1-/2@, campo 'tatus del maestro de tar#etas del 3uevo '/-. 3'15/E1'-/-1)-/', campo status del maestro de )uentas del 3uevo '/-. 3'15*A16E)B1/&E21-/2@, campo fec"a de apertura del arc"ivo de movimiento. 3'1L*,16E)B1/&E21-/2@, campo fec"a de apertura que se graba en Log Bistrico. 3'12&-16E)B1/&E21-/2@, campo fec"a de apertura que se graba en un arc"ivo a partir del cual se imprimen los reportes. 11 Uso de abreviaturas para nombrar campos Los nombres de campo en general, ya sea que estn definidos dentro del programa o en )*&4s deben estar conformados por abreviaturas mnemotcnicas que permitan un fcil reconocimiento de la naturale$a del campo 7atributo8 y del uso que ste tiene dentro del programa. / continuacin algunos e#emplos: 3'15/E1.5&1-*-12E-10./ campo del arc"ivo maestro del 3uevo '/- que registra el importe total de retiros diarios. ('16E)B1UL-1-2/315*3, campo definido en (or9ing 'torage en el cual se guarda la fec"a de la ltima transaccin monetaria reali$ada. L?1)*01)-/12EL, campo definido en la Lin9age 'ection para recibir el cdigo de la )uenta 2elacionada. ('12&-13*5+1L.310E-, campo definido en la (or9ing 'torage usado para mostrar el nombre del cliente en un reporte. En el /ne!o /, se presenta una relacin de abreviaturas comunes que deben usarse al crear una variable, tanto para el atributo como para complementar la descripcin. Uso de variables lgicas Los campos que se usan para condicionar la lgica del programa deben tener asociados variables lgicas a nivel << con un nombre mnemotcnico, debindose en todos los casos dentro de la lgica del programa "acer la pregunta correspondiente por la variable lgica y no por el valor que tenga el campo en ese momento. / continuacin un e#emplo : 01 (S-VAR-LOGICAS. 02 (S-COD-FIN-NS-MOV PIC -. $$ (S-STAT-FIN-NS-MOV VALUE 1'2. 02 (S-COD-FIN-NS-MAE PIC -. $$ (S-STAT-FIN-NS-MAE VALUE 1'2. PROCEDURE DIVISION. MOVE SPACES TO (S-VAR-LOGICAS READ NS-MOV-REG AT END MOVE 1'2 TO (S-COD-FIN-NS-MOV. IF (S-STAT-FIN-NS-MOV +34556374, IF (S-COD-FIN-NS-MOV E&UAL 1'2 +8934556374, PERFORM 3020-TOTALES-DE-PROCESO PERFORM 4030-TERMINO-PROGRAMA END-IF 12 *tras consideraciones
.niciali$ar e!pl%citamente las variables. /grupar en nivel CD todos los posibles contadores que utilice el programa. Especificar el signo E'E para campos )*5&1;. E#. Aar &.) 'F7<8 )*5&1;. )omentar el uso de cada uno de los flags, as% como cuando son prendidos o apagados y el por qu. PROCED)RE DIVISION 'egmentar la lgica total del programa en prrafos 7bloques8 que a su ve$ se subdividan en prrafos de menor nivel. -odos los nombres de prrafo deben estar antecedido por un nmero de G d%gitos que determinar el orden en el que deben estar ubicados dentro del programa. La numeracin de los prrafos debe comen$ar con el nmero DCCC. Los prrafos de primer nivel deben tener dos ceros como m%nimo al final del nmero. E#emplo: PROCEDURE DIVISION. *------------------- PERFORM 1000-INICIAR-PROCESO. PERFORM 2000-PROCESAR. PERFORM 3000-TERMINAR-PROCESO. STOP RUN. *------------------------------------------- FIN DE PROCEDURE DIVISION )uando la comple#idad lo amerite los prrafos de un programa deben terminar con una l%nea de comentario que indique el fin de prrafo como se muestra en el e#emplo anterior. Es recomendable que la numeracin de los prrafos de menor nivel 7subordinados8 deben tener los primeros d%gitos del prrafo de mayor nivel al cual pertenecen. E#emplo : 2100-CALCULAR-INTERESES* prrafo subordinado a 2000-PROCESAR 2110-OBTENER-TASA-INTERES, subordinado a 2100-CALCULAR-INTERESES &ara definir el nombre de los diferentes prrafos del programa, considerar el siguiente orden: 3U5E2*1*+@E-*15E-*0* &or e#emplo, para cerrar el arc"ivo ,L5 poner: <=<C1,L51)L*'E. &ara escribir en el arc"ivo 2E&*2-E pongo <;GC12E&*2-E1(2.-E. &ara mostrar el mapa 5/&/D pongo HCCC15/&/D10.'&L/4, etc. 13 Luego del nombre del prrafo incluir comentarios que e!pliquen el ob#etivo del mismo, por e#emplo: 1000-ABRIR-ARCHIVOS. ******************** *----------------------------------------------------------------* * ABRIR LOS ARCHIVOS NECESARIOS ) CONTROLA SU ESTADO * * LUEGO DE LA APERTURA* ADEMAS ABRE LA RUTINA DE BINES ESTANDAR * *----------------------------------------------------------------*
'e debe codificar en cada l%nea una sola instruccin. .ncorrecto IF (S-NUM-LIN GREATER %0 PERFORM 3530-IMPRIME-TITULOS. )orrecto IF (S-NUM-LIN GREATER %0 PERFORM 3530-IMPRIME-TITULOS END-IF Las l%neas de cdigo subordinadas deben estar identadas en columnas mltiplos de G a fin de facilitar la lectura del cdigo. Aer el siguiente e#emplo : AWS() SCRL FULL COLS 00001 00072 A<ROS1> <... +....1....+....2....+....3....+....4....+....5....+....6....+....7.. 001358 IF TIPO-MOV-GIRO 001359 IF WS-CTL-OPCION-LOAD 001360 PERFORM 3520-CARGAR-VALORADOS 001361 PERFORM 3610-GRABAR-LOG-BATCH 001362 PERFORM 4330-LEER-MOVI-WKFILE 001363 ELSE 001364 PERFORM 4500-GRABAR-GIRO-EN-MAESTRO 001365 PERFORM 3610-GRABAR-LOG-BATCH 001366 PERFORM 4330-LEER-MOVI-WKFILE 001367 END-IF 001368 ELSE 001369 IF TIPO-MOV-CHQGER 001370 PERFORM 3520-CARGAR-VALORADOS 001371 PERFORM 3610-GRABAR-LOG-BATCH 001372 PERFORM 4330-LEER-MOVI-WKFILE 001373 ELSE 001375 PERFORM 3560-DESCARGAR-VALORADO-DE-MAESTRO 001376 END-IF )odificar las instrucciones de iniciali$acin de las reas de datos, cerca de las instrucciones que usan esas reas de datos para que al momento de revisar la lgica se vea con claridad en que momento se "ace la iniciali$acin. .niciali$ar las tablas con la clusula A/LUE a nivel CD o por cada ocurrencia, en la (or9ing1'torage. Aer e#emplos siguientes:
E#emplo de iniciali$acin a nivel CDI 01 (S-TABLA-DIAS-SEM VALUE :LMM.VSD;. 5 (S-COD-DIAS OCCURS TIMES PIC -. 1*
E#emplo de iniciali$acin por ocurrenciasI <<<< 03 (S-TABLA-TOT OCCURS 12 TIMES. 05 (S-CANT-OPER PIC '+, VALUE ZEROS. 05 (S-IMP-TOT-ANUAL PIC S'+13,V'' COMP-3 VALUE ZEROS. 05 (S-STA-OFI PIC -+1, VALUE 112.
&ara minimi$ar las paginaciones al momento de e#ecucin, codificar de manera contigua dentro del programa los prrafos de mayor frecuencia de uso. 3o usar el punto como fin de una estructura, emplear en su lugar E301&E26*25, E301.6, E301EA/LU/-E, E3012E/0, E-). segn sea el caso 7facilita la visuali$acin para la revisin del programa8. .ncluir comentarios que ayuden a entender la lgica en aquellos prrafos que realicen un proceso especiali$ado yJo comple#o. Evitar los anidamientos de bucles o condiciones muy grandes 7ms de cinco niveles de anidacin8. &ara clculos de formulas que contengan operaciones aritmticas usar )*5&U-E. -oda operacin de .J* debe ser codificada en un prrafo separado. Esto facilitar su posible reempla$o en caso de cambio de mane#ador de arc"ivos. 'iempre despus de cada operacin con arc"ivos se debe verificar el estado del 6ile'tatus y llamar a la rutina de cancelacin de ser necesario. E#emplo: * VERIFICAR ESTADO PARA DESCUBRIR ERRORES IF (S-STAT-FS E&UAL 0000 THEN CONTINUE ELSE MOVE 000050 TO (S-BCP-AB-CODE CALL 0BCSA)P020 USING (S-BCP-ABEND-PARM MOVE 10 TO (S-OB.ECT-ERROR END-IF
1+ .& Prinipales r$tinas !e $so general, +)'/4+G/1 +)'/4+H/, encabe$amiento de reporte estndar. +)'/4+C= , 6in de reporte estndar +)'/42CH, /rea para parmetros de /bend. +)'/4&C= , 2eceptor de abends programados desde cobol. +)'/4&DC, "acerlo v%a )/LL, convierte D +4-E a < +4-E' analgicos a cada uno de los +.-' de la mscara. +)'/4&DD, reali$a la funcin inversa de la anterior. +)'/4&=C, convierte fec"a @uliana a ,regoriana y viceversa. /en programas n$e0os $sar las "$niones !esritas en 1&2 +)'/4&HC, calcula fec"a final, a partir de una fec"a inicial y un nmero de d%as. /en programas n$e0os $sar las "$niones !esritas en 1&2 +)'/4&HD, calcula diferencia de d%as entre = fec"as. /en programas n$e0os $sar las "$niones !esritas en 1&2 +)'/4&H=, consistencia de fec"a. 63'/42CD, conversin de nmeros a letras 1& -$niones !isponi3les para mane%o !e "e4as, 0/-E1*61.3-E,E2 )onvierte un entero 7&.) sF7F88 a formato 44445500 7,regoriano8 0/41*61.3-E,E2 )onvierte un entero 7&.) sF7F88 a formato 4444000 7@uliano8 .3-E,E21*610/-E )onvierte una fec"a en formato 44445500 a un entero &.) sF7F8. .3-E,E21*610/4 )onvierte una fec"a en formato 4444000 a un entero &.) sF7F8. E#emplo, clculo de nueva fec"a a FC d%as: 01 (S-))))MMDD PIC '+$,. 01 (S-INTEGER-FORM PIC S'+',. . . . MOVE FUNCTION CURRENT-DATE+1!$, TO (S-))))MMDD COMPUTE (S-INTEGER-FORM / FUNCTION INTEGER-OF-DATE+(S-))))MMDD, ADD '0 TO (S-INTEGER-FORM COMPUTE (S-))))MMDD / FUNCTION DATE-OF-INTEGER+(S-INTEGER-FORM, DISPLA) 1NUEVA FECHA! 1 (S-))))MMDD . . . 10 5& Performance 6 Consi!eraiones 37sias al o!i"iar programas, 6inalmente, "abindose logrado codificar programas que sean simples y fciles de entender, la evaluacin de la eficiencia del programa es un proceso sencillo. /sumimos que el diseKo del /plicativo contempla el proceso optimo de los arc"ivos, buscando un m%nimo de acceso a los arc"ivos. &ara lograr esta eficiencia en la e#ecucin, proponemos estas pautas, de manera que se redu$ca a lo m%nimo necesario la utili$acin de los recursos que requieren mas consumo de )&U o accesos a los arc"ivos. /l momento de reali$ar las pruebas o seguimiento de las e#ecuciones de los programas, revisar las estad%sticas por '-E& que se generan automticamente en el '4'*U-. Estas estad%sticas permiten identificar si los accesos a los arc"ivos son e!cesivos. El detalle y la informacin que muestra este reporte se e!plica en el siguiente cap%tulo. /l leer arc"ivos A'/5 ?'0' de manera random, verificar si la clave que se va a leer es diferente a la le%da previamente. 0e esta manera evitamos el acceso innecesario al disco, logrando una e#ecucin rpida del programa. &ara procesos +atc", utili$ar en lo posible tablas en (or9ing1'torage, cuando se requiere acceso a arc"ivos A'/5 ?'0' que contienen parmetros o tablas de cdigos 7arc"ivos con apro!. ;CC registros o menos8. /l inicio del programa se lee secuencialmente el arc"ivo y se carga en la tabla, la cual ser e!aminada en memoria cada ve$ que se requiera una clave particular. Utili$ar el mtodo de bsqueda en tablas, de acuerdo a: 'i la cantidad de filas a buscar es pequeKa o e!isten valores que se presentan con mayor frecuencia, utilice el mtodo de bsqueda secuencial 7'E/2)B8. 'i e!isten gran cantidad de filas o la probabilidad de eleccin es la misma, utilice la bsqueda binaria 7'E/2)B /LL8. *rganice la data a cargar en la tabla de acuerdo al mtodo de bsqueda a utili$ar. 'i la bsqueda es secuencial 7'E/2)B8 coloque los valores usados con ms frecuencia al inicio de la tabla. 'i la tabla ser e!aminada con el algoritmo de bsqueda binaria 7'E/2)B /LL8, coloque los valores en la tabla ordenados alfabticamente de acuerdo a la clave de bsqueda. )uando se requiera utili$ar variables como contadores o %ndices, codifique las variables como U'/,E +.3/24. Las instrucciones para manipular este tipo de datos son ms rpidas que las U'/,E 0.'&L/4. &ara variables que son mayores de < d%gitos y se usan en operaciones aritmticas, use variables con U'/,E &/)?E010E).5/L en lugar de U'/,E 0.'&L/4. Estas son tan rpidas como las U'/,E +.3/24. 13 En operaciones con operandos de diferente tipo, uno de los operandos es convertido al tipo del otro, lo cual requiere de instrucciones adicionales previa a la suma, resta o comparacin. Es recomendable que los operandos tengan el mismo tipo y adicionalmente la misma cantidad de decimales. 19 8& Performance 9 Esta!:stias por STEP /E;it IDSACTRT2 )on la finalidad de facilitar la optimi$acin de los programas que se e#ecutan diariamente en nuestra instalacin, .0' incluy en los listados estndares de e#ecucin de @*+s, un resumen de las operaciones de .J* que se "an reali$ado en cada uno de los arc"ivos, as% como los tiempos de e#ecucin. / continuacin se muestra un e#emploI En este reporte, se muestra la identificacin del '-E&, el nombre del programa, la fec"a y "ora de inicio y termino. /dicionalmente a los datos generales, se muestra el consumo de recurso global del )omputador ba#o la glosa L'ervice UnitsMI as% mismo se muestra los tiempos )&U 7Task Control Block8 y )&U 7Service Request Block8, los cuales sumados nos indican el tiempo real de uso del )&U. En la parte inferior se muestra, la cantidad de acceso f%sicos 7EN)&8 a las unidades mostradas en el margen i$quierdo 7Unit8. Estos contadores, nos indican la cantidad de acceso que se reali$aron a cada arc"ivo que usa el programa. Esta cantidad de accesos debe ser siempre menor o igual que la cantidad de registros en el arc"ivo, si la cantidad es mayor es un indicio que un registro se est leyendo mas de una ve$, lo cual deber ser revisado y optimi$ado. En la ltima l%nea se muestra el total de EN)&s que se reali$aron a los discos 70/'08 y a las cintas o cartuc"os 7-ape8. 1: S 7 6 = E 9 > S 7 ? 7 8 @ 7 8 3 @
U987-- DDN?A6-- E-CP C4B97-- BEG@8I6 U987-- DDN?A6-- E-CP C4B97-- BEG@8I6 3312 D .OBLIB 1*11' 32*%0 310C D .OBLIB 2 32*%0 312A D IMBCRMI 3 0 301A D IMACTMI 1$*001 2*''$ <& Performance 6 Consi!eraiones 37sias para o3tener Back-ups, E!iste actualmente un programa producto que reali$a las funciones de +ac9upJ2estore rpidamente y de manera optima. Este programa es el /020''U, el cual es utili$ado en los /plicativos de '4'-E5/-.)s para reali$ar estas funciones. Este programa al momento de sacar los +ac9ups los guarda en un formato propietario, no siendo posible leer los arc"ivos con otro programa que no sea el mismo /02''U. &or este motivo si se desea utili$ar el +ac9up de algn arc"ivo es necesario reali$ar el 2estore previamente. /dicionalmente a la eficiencia, facilita codificar los @)Ls necesarios para reali$ar +ac9upJ2estore de grupos de arc"ivos, utili$ando para esto comodines o wildcards , reali$ando en un solo '-E& el +ac9upJ2estore de un grupo de arc"ivos. / continuacin se muestra un e#emplo sencillo de su uso, para obtener +ac9ups de todos los arc"ivos +atc" de un /plicativo, en un solo '-E&. &ara utli$ar este programa /020''U se debe invocar el &2*) ,3&0/020 de la siguiente manera: ##N-P''''0 E-EC PROC/GNPDADRD* CREATES ONSITE END OF DA) BACKUP+'''', ## PARMLB1/JPARMLB1* ## MEMBER1/NX0099BK ##TAPEOUT DD DSN/DSP1.N-.N-.TBC0.DISKOU.DN-''''+K1,* ## DISP/+NE(*CATLG*DELETE,* ## UNIT/JDISK* ## SPACE/+C)L*+1*1,*RLSE,* ## LIKE/JMODEL ##* El &2*) genrico ,3&0/020 contiene las siguientes instrucciones: ##GNPDADRD PROC PARMLB1/* ## MEMBER1/* ## DOUT/0P0* ## SOUT/0P0 ##* ##******************************************************************** ##* PROC DESCRIPTION! * ##* GNPDADRD IS A GENERIC ADRDDSU FOR BACKUPS AND DELETES ##******************************************************************** ##* ##GNPDADRD E-EC PGM/ADRDSSU*COND/+$*LE, ##* ##DUMM) DD DUMM) ##* ##S)SIN DD DSN/JPARMLB1+JMEMBER1,*DISP/SHR ## DD DSN/JPARMLB1+SETMA-CC,*DISP/SHR ##* ## INCLUDE MEMBER/GNPSOUT La )-L N=>>??B@ contiene las siguientes instrucciones de control: DUMP DATASET+INCLUDE+DVB1.N-.N-.TBC0.**,, - OUTDDNAME+TAPEOUT1*TAPEOUT2, - OPT+4, - TOLERATE+EN&F, - SHR SPHERE
2> ?& Per"ormane 9 Consi!eraiones al $sar ar4i0os VSAM / continuacin se describir algunos de los factores que influyen o determinan un me#or rendimiento al usar arc"ivos A'/5. Los tpicos principales incluyen los tamaKos de los intervalos y reas de control, espacio libre, y mane#o de buffers. 5uc"as de estas opciones son especificadas en el comando 0E6.3E 7.0)/5'8 cuando se crea el arc"ivo. /lgunas opciones pueden ser modificadas a travs de @)Ls. TAMAAO DEL CONTROL INTERVAL 'e puede me#orar el rendimiento de arc"ivos A'/5 especificando un tamaKo en el comando 0E6.3E, acorde a los requerimientos de acceso y almacenamiento del arc"ivo. El tamaKo del Control Interval 7).8 afecta la velocidad de procesamiento y requerimientos de memoria de la siguiente manera: Buffer space. /rc"ivos con tamaKos de ). grandes requieren mas buffers en memoria virtual. Operaiones !e IBO. /rc"ivos con tamaKos de ). grandes requieren menos operaciones .J* para traer una cantidad de registros a memoria virtual, lo cual "ace que menos menos registros de %ndices sean le%dos. Es me#or usar tamaKos de ). grandes para arc"ivos con acceso secuencial. 'in embargo, grandes ). no son beneficiosos para procesamiento de arc"ivos ?'0' o 220' de longitud variable. Free space. El espacio libre se utili$a con mayor eficiencia 7pocos splits de ). y menos espacio desperdiciado8 cuando el tamaKo del ). aumenta con respecto al tamaKo del registro. 'i no se especifica el tamaKo del )*3-2*L.3-E2A/L'.OE, el sistema calcula un valor default que optimi$a el espacio para el tamaKo promedio del registro. Los tamaKos vlidos del ). para los componentes de datos son a partir HD= a <DF= bytes en incrementos de HD= bytes. 3ormalmente un tamaKo de ). de GCF> bytes es ra$onablemente bueno. 'in embargo e!isten algunas consideraciones especiales que podr%an afectar esta eleccin. 'i se tiene ). muy grandes, muc"as pginas son requeridas durante las operaciones de .J*. Esto podr%a afectar de manera adversa la operacin del sistema. &equeKos registros en un ). pueden dar lugar a una gran cantidad de informacin de control. El espacio libre a menudo no puede ser utili$ado. El tipo de procesamiento puede afectar la eleccin del tamaKo de ).. &rocesamiento directo. )uando este tipo de procesamiento es predominante, es preferible un tamaKo de ). pequeKo, por que se est recuperando un registro a la ve$. &rocesamiento secuencial. )uando este es el procesamiento predominante, tamaKos de ). grandes son la me#or eleccin. &rocesamiento mi!to. En este caso un pequeKo ). con mltiples buffers para el procesamiento secuencial es la me#or eleccin. El tamaKo de ). para los componentes del %ndice en A'/5 son HD=, DC=G, =CG< y GCF> bytes. 'i no se especifica A'/5 asume HD= bytes. &ara saber que valores estn actualmente asignados en un arc"ivo de!istente, use el comando L.'-)/-.
21
TAMAAO DEL CONTROL AREA 3o "ay una manera e!pl%cita de especificar el tamaKo del Control Area (CA). Usualmente la cantidad de espacio primario o secundario asignado al crear el arc"ivo determina el tamaKo del Control Area. 'i alguno de los espacios primario o secundario es menor que un cilindro, el menor valor es usado como tamaKo de control rea. 'i se especifica el parmetro 2E)*20', el tamaKo del control rea es redondeado a trac9s completos. 'i ambos espacios 7primario y secundario8 son iguales o mayores a un cilindro, el tamaKo del Control Area es un cilindro, el cual es el m!imo tamaKo para un Control Area. / continuacin se muestra como el tamaKo del Control Area es determinado por los parmetros de creacin. Par7metro en DE-INE TamaCo !e Control Area res$ltante )4L.30E2'7H,DC8 D )ilindro 2E)*20'7=CCC,H8 D trac9 7se asume que DC registros caben en un trac98 -2/)?'7DCC,;8 ; trac9s -2/)?'7;,DCC8 ; trac9s Las venta#as de un )/ de un cilindro son: Bay una menor probabilidad de splits 7divisiones8 de Control Area. &ara un acceso secuencial, un Control Area grande disminuye el nmero de lecturas de registros de %ndices. 'i se coloca suficientes buffers, un Control Area grande permite leer mas buffers en memoria a la ve$. Un )ontrol /rea grande es sumamente til s% se accesar los registros secuencialmente. Las desventa#as de un )ontrol /rea de un cilindro son: 'i "ay un split de un Control Area, muc"a data es movida. 0urante .J* secuenciales, un )ontrol /rea grande PamarraQ ms memoria real y buffers. OPTIMIZANDO EL ASIGNAMIENTO DE FREE SPACE )on el comando 0E6.3E, se puede especificar el porcenta#e del espacio libre en cada C!"#$ I!"%#&A$ (CI) y el porcenta#e libre por C!"#$ A#%A(CA) o especificar la data class y utili$ar el atributo de 62EE'&/)E asignada con las rutinas de /)' establecidas por .0'. El espacio libre me#ora el rendimiento, reduciendo la probabilidad de los splits 7divisiones8 del ). y del )/. Esto, a su ve$, reduce la probabilidad que A'/5 mueva un grupo de registros a un cilindro diferente, le#os de otros registros en la secuencia de clave. A'/5 inserta los registros en el espacio libre disponible cuando "ay una insercin directa o una masiva secuencial y no se genera un split,. La cantidad de espacio libre que se necesita depende del nmero y ubicacin de los registros que se insertarn o eliminaran. 0emasiado espacio libre puede resultar en: 5ayor nmero de niveles de %ndices, lo cual afecta el tiempo de e#ecucin en el procesamiento directo. 2equerimiento de mas memoria de acceso directo, para contener los arc"ivos. 5as operaciones de .J* necesarios para procesar secuencialmente el mismo numero de registros. 22 &oco espacio libre puede dar lugar a un nmero e!cesivo de splits de ). y de )/. Estos splits consumen tiempo, y tienen los siguientes efectos: 'e requiere ms tiempo para el procesamiento secuencial porque el arc"ivo no est en secuencia f%sica. 'e requiere ms tiempo de bsqueda durante el proceso debido a los splits de )/.. Use la funcin L.')/- para conocer los valores asignados a los espacios libres y la cantidad de splits reali$ados. OPTIMIZANDO EL TAMAAO DEL BUFFER Los buffers de .J* son utili$ados por A'/5 para leer y escribir ). del disco a la memoria virtual. &ara un arc"ivo ?'0' o 220' de longitud variable, A'/5 requiere un m%nimo de tres buffers, dos para los ). de datos y uno para un ). del %ndice. El default de A'/5 es suficiente espacio para estos tres buffers. 'in embargo para me#orar la performance "ay parmetros que modifican los valores prefi#ados por A'/5. Bay tres lugares en donde estos parmetros pueden ser especificados: &armetro +U66E2'&/)E, especificado en el comando 0E6.3E 7.0)/5'8. &armetros +U6'&, +U63. y +U630, especificados en la macro /)+ del A'/5. Rsta es la cantidad m!ima de almacena#e que se utili$ar para los buffers de .J*. 'i el valor especificado en la macro /)+ es mayor que el valor especificado en el 0E6.3E, el valor de /)+ reempla$a el valor del 0E6.3E. &armetros +U6'&, +U63. y +U630, especificados en el parmetro /5& 7@)L 008. Rsta es la cantidad m!ima de almacena#e que se utili$ar para los buffers de .J*. Un valor especificado en el @)L reempla$a los valores especificados en el 0E6.3E y /)+ si este es mayor que el valor especificado en el 0E6.3E. 'i estamos codificando la )-L para reali$ar el 0E6.3E del arc"ivo, se debe observar las siguientes recomendaciones para elegir el tamaKo del buffer. 'in embargo, muc"as veces debemos traba#ar con arc"ivos ya definidos, en estos casos podemos alterar el tamaKo de buffers ya definido mediante el parmetro /5& en la operacin 00 del @)L. Par7metro AMP Los buffers de .J* son usados por A'/5 para leer o escribir C!"#$ I!"%#&A$s del disco a memoria virtual.
6ormato: /5&S7EsubparametroT,subparametroU...E8 '-23*Snmero .ndica el nmero de requerimientos concurrentes que tendr el arc"ivo. +U630Snmero Especifica la cantidad de buffers de .J* que A'/5 usar para los registros de datos. El m%nimo es D V el valor de '-23*. 'i se omite '-23*, +U630 debe ser al menos =. 'i se omite +U630, A'/5 asume como valor el de '-23* V D. +U63.Snmero Especifica el nmero de buffers de .J* que A'/5 usar para los registros de %ndices. 'i se omite A'/5 usar el valor de '-23*. 'i 23 se omite ambos +U63. y '-23*, A'/5 asumir D. +U6'&Snmero Especifica el nmero m!imo de bytes para los buffers de %ndices y datos. 'i +U6'& especifica una cantidad de bytes menor a la definida en el parmetro +U66E2'&/)E del comando 0E6.3E, A'/5 asume el valor definido en el parmetro +U66E2'&/)E. E#emplo
##VSAMDS1 DD DSNAME/DSM.CLASS*DISP/SHR*AMP/+0BUFSP/200*BUFND/20* ## 0BUFNI/3*STRNO/40, Canti!a! !e 3$""ers para aeso !ireto& 'e puede incrementar la performance en el procesamiento de un arc"ivo ?'0' o un 220' de longitud variable, aumentando el nmero de buffers para los %ndices. El acceso directo requiere siempre una bsqueda de arriba "acia aba#o en los %ndices. Buffers !e !atos /B)-ND2. )omo A'/5 no lee a un registro PadelantadoQ para el proceso directo, slo un m%nimo de buffers de datos es necesario. 5uc"os buffers de datos no incrementan el rendimiento, porque solamente un buffer de datos se utili$a para cada acceso. 2egla prctica: /signe un valor de '-23* V D. Buffers !e :n!ies /B)-NI2. 'i el nmero de buffers de .J* proporcionados para los registros de %ndice es mayor que el nmero de requerimientos concurrentes 7'-23*8, un buffer se utili$a para el registro de %ndice del ms alto nivel. )ualquier buffer adicional se utili$a, segn se requiera, para los registros de %ndices. Los buffers de %ndice no usados no degradan el rendimiento, as% que se debe especificar siempre un nmero adecuado. &ara grandes arc"ivos, especifique el nmero de buffers de %ndices iguales al nmero de los niveles de %ndices. 2egla prctica: /signe un valor mayor al especificado como '-23*, incrementando en cada prueba "asta que 3* se redu$ca notoriamente los EN)&s en el reporte estad%stico de la corrida.
Canti!a! !e 3$""ers para aeso se$enial& 'e puede aumentar la performance incrementando el nmero de buffers para los datos. )uando "ay mltiples buffers para datos, A'/5 utili$a una funcin de Plectura adelantadaQ para leer los siguientes ). en los buffers antes que sean necesarios. -ener pocos buffers para los %ndices no disminuye la performance. Buffers !e !atos /B)-ND2. 5s buffers de datos permiten que se realice el proceso de Plectura adelantadaQ. 'in embargo, un nmero e!cesivo de buffers, puede causar problemas de funcionamiento, debido a la paginacin e!cesiva. 2ealice pruebas previas para determinar el optimo nmero de buffers. 2egla prctica: /signe como m%nimo ; V '-23*. 0e igual manera que en el proceso directo, utilice el reporte estad%stico de la corrida, para determinar cual es el nmero optimo. Buffers !e :n!ies /B)-NI2. Los buffers adicionales para los %ndices tienen poco efecto durante el proceso secuencial. 2egla prctica: /signe el valor del '-23*. 2* (>& Per"ormane 6 S$3sistema Batch Local Shared Resource El subsistema +atc" L'2 me#ora la performance permitiendo que los programas que usan A'/5 !on'()ared #esources 73'28 puedan cambiar a usar A'/5 $ocal ()ared #esource 7L'28 sin modificar el cdigo fuente de la aplicacin o lin91editar la aplicacin nuevamente. 'lo se requiere modificar el @)L.
Los arc"ivos A'/5 soportados son: /rc"ivos inde!ados 7?'0'8 /rc"ivos relativos 7220'8, incluyendo de longitud variables. /rc"ivos secuanciales 7E'0'8 Usando el subsistema *atc) $ocal ()ared #esource 7L'28 se obtiene las siguientes venta#as al procesar arc"ivos A'/5. 5e#ora la performance cuando el mismo ). 7Control Interval8 es referenciado mas de una ve$ en el procesamiento. Es capa$ de usar un con#unto de buffers de un tamaKo particular para mltiples componentes de cluster, teniendo el mismo o ms pequeKo ).. Es capa$ de for$ar que los buffers de A'/5 y bloques de control, sean ubicados encima de los D> 5egabytes sin tener que usar )iperspace. Los @obs que se podr%an beneficiar del +atc" L'2 son aquellos con ciertas ciertas caracter%sticas de uso 7tales como patrones de referencia a datos8, y caracter%sticas de los datos 7tales como la relacin entre la longitud de registro y el tamaKo del Interval Control8. Los me#ores candidatos son: @obs con procesamiento directo, de larga duracin @obs con alta cantidad de EN)&s 7E!ecute )"annel &rogram8 3o se deber%a considerar '-E&s que son totalmente secuenciales, por que el tiempo de e#ecucin podr%a incrementarse considerablemente usando +atc" L'2. &ara convertir un procesamiento A'/5 3'2 a L'2 se utili$a el parmetro 'U+'4' en el @)L. / continuacin se muestra un e#emplo de adecuacin. 0ado el arc"ivo con 003/5E '/&CDN, elegido a ser procesado como L'2, ##SAP01X DD DSN/JHI&VO..SA.SA.JP.JSTK0..SAP01.V* ## DISP/SHR 'e cambia el 003/5E a otro, por e#emplo '/&CD, adicionandole los parmetros que se e!plicaran a continuacin.
)uando la aplicacin realice el *&E3 del '/&CDN, el subsistema +atc" L'2 completa la conversin al modo de procesamiento A'/5 L'2.
Los siguientes parmetros no son permitidos con el parmetro 'U+'4'I /5&, +U2'-, )B/2', )*&.E', 0/-/, 003/5E, 043/5, 6L/'B, 5*0.64, W3/5E, '&/)E, '4'*U-. 'e debe eliminar estos parmetros, si son especificados en la 003/5E que vamos modificar el tipo de procesamiento a L'2. 2+ Los parmetros del 'U+'4' son: 003/5E El nombre de la sentencia @)L que indica el arc"ivo A'/5 a modificar el tipo de proceso. +U630 El nmero de buffers virtuales a crearse para el pool de buffers de datos. 'i no se especifica, su default es: 1 3mero de buffers que caben en H 5b si los buffers se adquieren sobre los D>5b. 1 3mero de buffers que caben en =HC ?b si los buffers son adquiridos deba#o de los D>5b. El rango de valores es de DC a ;=CCC.
&ara ambos +U630 y +U63., la decision de adquirir buffers encima o deba#o de los D>5b esta basado en el valor especificado en el parmetro 25*0E;D +U63. El nmero de buffers virtuales a crearse para el pool de buffers de %ndices. 'i no se especifica, su default es: 1 3mero de buffers que caben en H 5b si los buffers se adquieren sobre los D>5b. 1 3mero de buffers que caben en =HC ?b si los buffers son adquiridos deba#o de los D>5b. El rango de valores es de DC a ;=CCC. B+U630 El nmero de buffers en el )iperspace a crearse para el pool de buffers de datos. 'i no se especifica no se crea buffers en el )iperspace. Los valores pueden variar desde H "asta ;=CCC. B+U63. El nmero de buffers en el )iperspace a crearse para el pool de buffers de %ndices. 'i no se especifica no se crea buffers en el )iperspace. Los valores pueden variar desde H "asta ;=CCC. 25*0E;D Especifica si los bloques de control yJo buffers asociados con el pool del L'2 sern ubicados encima de los D>5b. Los valores permitidos son: /LL *uffers y bloques de control sern ubicados encima de los D> megabytes. +U66 *uffers pero no bloques de control sern ubicados encima de los D> megabytes. )+ +loques de control pero no *uffers sern ubicados encima de los D> megabytes. 3*3E *uffers y bloques de control seran ubicados deba#o de los D>5b. '-23* .ndica el nmero de string concurrentes a ser usados, cuando se establece el pool L'2. Los valores permitidos son desde D "asta =HH. El valor default es D>. .+5 recomienda que se use el valor default. E!isten otros parmetros comoI 0E6E2(, +U6'0 y +U6'. para los cuales el valor default que asume el sistema es suficiente para lograr una me#ora en la performace. +atc" L'2 podr%a degradar el rendimiento cuando:
El programa tiene principalmente un proceso secuencial y puede beneficiarse de usar buffers para Electura1adelantadaE. L'2 me#ora el rendimiento cuando el proceso es sobre todo con acceso random 7no secuencial8. &ara el proceso secuencial, 3'2 es la opcin me#or. El programa tiene pocos accesos a un ). de manera repetida. L'2 traba#a me#or cuando el mismo ). es accesado repetidamente y el usuario puede proporcionar suficientes buffers para 20 mantener los ). accesados en memoria central. &ara programas que tienen pocos accesos al mismo )., !on ()ared #esource es la me#or opcin. &ara elegir los valores de los parmetros optimos, primero e#ecute la aplicacion de la manera usual sin el parmetro 'U+'4'. Luego, e#ecute nuevamente la aplicacin con los valores default del parmetro 'U+'4'. / continuacin compare las cantidades de EN)&s del reporte estad%stico generado automticamente. La reduccin de EN)&s se debe al uso del modo de proceso +atc" L'2. 'i la reduccin es significativa, pruebe con otros valores para los parmetros "asta obtener una reduccion m%nima. 23 ((& ANE=O A, RELACION DE ABREVIAT)RAS ATRIB)TOS DE LOS CAMPOS / continuacin se muestra las abreviaturas de atributos usados frecuentemente para identificar la naturale$a de su usoI )/3- )antidad )*0 )digo 0E') 0escripcin 6E)B 6ec"a B*2/ Bora .0E3 .dentificador .5& .mporte 3*5+ 3ombre 32* 3mero '-/- 'tatus -/' -asa &*2) &orcenta#e OTRAS ABREVIAT)RAS COM)NES PARA ESPECI-ICAR VARIABLES Las siguientes abreviaturas se usaran para describir una variableI E#emplos
/,E /gencia ,-15/E1)*01/,E, )digo de agencia en el maestro de ,iros. /B* /"orro /&2- /pertura ('16E)B1/&2-1)2E, 6ec"a de apertura del crdito, variable definida en la (or9ing1'torage. ).E2 )ierre )L. )liente ,-15/E1)*01)L., )digo de cliente en el maestro de ,iros. )*5 )omisin )2E )rdito )-/ )uenta 3'15/E132*1)-/1)-E, 3mero de cuenta corriente en el maestro de 3uevo '/- )-E )orriente 0E+ 0bito 0E- 0etalle 0*L 0lares E'& Especial .3- .nteres 3'15*A1-/'1.3-1E'&, -asa de interes especial L.3 L%nea 3*25 3ormal *6. *ficina *&E2 *peracin '*L 'oles 'U) 'ucursal -/2@ -ar#eta 3'15/E132*1-/2@10E+, 3mero de tar#eta de dbito. -*- -otal ,-15/E1.5&1-*-1)*5, .mporte total de comisiones. -23 -ransaccin UL- Ultimo7a8 29 ('& ANE=O B, NOMENCLAT)RA DE PROGRAMAS Los nombres de programas deben observar la siguiente regla de formacin: EESSTCnn 0onde: EE )digo de la .nstitucin, e#em. +) +anco de )rdito, ++ +anco de )rdito +olivia SS )digo de /plicativo, e#em. .5 .mpacs /5 /dvance Loan 'ystem ,- ,iros y -ransferencias T 6uncin del programa / /ctuali$ador E )onsistenciador 6 -ransformacin L Load 2 2eporteador - *n1line N E!traccin 4 Uso general O Uso general C -ipo de programa & &rincipal 75ain8 ' 'ub rutina nn 'ecuencia, combinacin de d%gitos 7C1F8 y caracteres 7/1O8 3ro. de posibilidades D,=F>. E#emplosI +).54&<F &rograma )*+*L desarrollado para la .nstitucin +)& 7+)8, perteneciente al aplicativo .mpacs 7.58, con funcin Uso general 748 y -ipo de programa principal 7&8. +)?*-&/D &rograma )*+*L desarrollado para la .nstitucin +)& 7+)8, 6uncin *n1line 7-8, tipo programa principal 7&8. 2: (+& ANE=O C, NOMENCLAT)RA DE COPDs Los nombres de los )*&4 deben observar la siguiente regla de formacin: EESSDRnn 0onde: EE )digo de la .nstitucin, e#em. +) +anco de )rdito, ++ +anco de )rdito +olivia SS )digo de /plicativo, e#em. .5 .mpacs /5 /dvance Loan 'ystem ,- ,iros y -ransferencias D )onstante P4Q R )onstante P2Q nn 'ecuencia, combinacin de d%gitos 7C1F8 y caracteres 7/1O8 3ro. de posibilidades D,=F>. E#emplo: +).542DH )*&4 )*+*L 7428 desarrollado para la .nstitucin +)& 7+)8, perteneciente al aplicativo .mpacs 7.58. 3>