You are on page 1of 30

DIVISION DE SISTEMAS y ORGANIZACION

AREA DE DESARROLLO DE SISTEMAS


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 @

S76= N?A6! STEP040 C49> C4>6! 0000 S7?57! 1$-A=5-2003 10!5%!53
PM
S76= NBA! 1 PGM N?A6! BCIMAP4V E9>! 1$-A=5-2003 11!0$!2'
PM
CPU +TCB,! 00!00!2.%1 S745?C6 D6E4F 1%M!
540G
CPU +SRB,! 00!00!0$.20 S745?C6 ?D4H6 1%M!
3*224G
T5?9@ A37! 00!11!35.$5 S65H836 U987@!
454*44
T?=6 M97@! 0 T47?E E-CP@!
%4'*%$

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.

##SAP01 DD SUBSYS/+BLSR*0DDNAME/SAP01X0*0BUFND/500*0BUFNI/500*
## 0HBUFND/500*0RMODE31/ALL0,

)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>

You might also like