• No se han encontrado resultados

EC'T%NDO %NTES O DES*'ES

In document Manual de programacion Cobol (página 52-66)

Instrucción *erform

E- EC'T%NDO %NTES O DES*'ES

n primer lu#ar, por defecto el contenido del @R<)RM se ejecuta después de hacer la comprobación de la condición $ue precede a UNGIL , pero podemos hacer $ue ésta se realice antes

*E!FO!& IT) TEST %FTE! $ (EFO!E / ,%!5IN# variable F!O& n&mero$ variable(5

n&mero$ valor 'NTIL condición sentencias

END$*E!FO!&

"on la opción G&G <)R, $ue es la opción por defecto se comprueba primero la condición y si se cumple se ejcuta el resto, con lo cual es posible $ue las sentencias no se ejecuten nin#una +e5, si al comen5ar ya est* rota la condición

"on la opción G&G !<GR, se ejecutan las sentencias antes de comprobar la condición, con lo cual las sentencias se +an a ejecutar al menos en una ocasión, incluso aun$ue entremos en el @R<)RM con la condición rota

%'&ENT%NDO L%S CONDICIONES

fecti+amente adem*s de la primera condición podemos incrementar el n>mero de condiciones para $ue se cumplan los re$uisitos y as% ejecutar las sentencias sto lo conse#uimos incluyendo mas cl*usulas precedidas de !<GR

*E!FO!& IT) TEST %FTE! $ (EFO!E / ,%!5IN# variableF!O& n&mero$ variable (5n&mero$ valor 'NTIL condición

%FTE! variableF!O& n&mero$ variable(5 n&mero$ valor 'NTILcondición sentencias

%FTE! ... END$*E!FO!&

!l aplicar este formato cuando se cumpla la primera condición pasar* el control al !<GR y

comprobar* de nue+o la condición $ue precede al si#uiente UNGIL se#>n los +alores especificados en la l%nea $ue contiene !<GR !dem*s podemos ir incrementando el n>mero de condiciones a nuestro antojo, consi#uiendo de éste modo hacer unos anidamientos y un desarrollo mas completo de la sentencia, obteniendo por consi#uiente unos ni+eles de perfeccionamiento muy altos

!ES'&IENDO

Una mayor utili5ación de @R<)RM sin duda traer* un uso menor de la declaración E) y con ello conse#uimos una pro#ramación estructurada Las +entajas de la pro#ramación estructurada las $uiero e:plicar en un apartado dentro de ésta misma sección de Manuales, una +e5 e:pli$ue las sentenicas E) e I<, $ue ser*n la si#uiente aportación al manual

n esa nue+a sección se +er* un caso mas pr*ctico y real de utili5ación de @R<)RM con uso de lecturas de ficheros y dem*s e:periencias cotidianas en el mundo de la pro#ramación en el *mbito de la #estión

Códios de Error

12.72 palabras totales en este te:to3 167=2 Lecturas3

&on muchos los errores $ue se pueden producir en tiempo de ejecución cuando trabajamos con archi+os, a continuación daré una e:plicación de los mas comunes Godos éstos errores los podemos obtener si definimos <IL &G!GU& en la <IL'")NGR)L, y actuar consecuentemente, por ejemplo yo siempre cuando abro los ficheros al principio de cada pro#rama compruebo $ue el error sea , es decir $ue todo est* bien para continuar, sino automaticamente saco una +entanita con el error $ue se ha producido y el nombre del fichero para $ue mis usuarios me lo comuni$uen y poder solucionarlo, pero no dejo $ue se si#a ejecutando el pro#rama, con lo $ue se e+itar*n problemas posteriores $ue podr%an resultar peores (e todas formas una +e5 $ue est* el pro#rama +erificado y comprobado, y $ue todos los archi+os se corresponden con su descripción en la <(, los errores $ue nos puede dar son los relati+os a cla+es duplicadas o ine:istentes, o a errores del sistema

Los errores se representan como 6 di#itos para el error $ue pueden ir se#uidos de una coma y otros 6 d%#itos para indicar la naturale5a del error

E!!O! E9*LIC%CION

 )peración satisfactoria, todo bien

2 "uando se ha lle#ado al final del fichero y se $uiere se#uir leyendo 66 &e intenta copiar un re#istro con una cla+e ya e:istente

6; "uando se hace un acceso directo a un re#istro ine:istente 6- No hay espacio en disco para reali5ar la operación

; s un error #ra+e de entrada/salida, suele ser ajeno a "obol y mas concreto en cuanto a confi#uración del sistema operati+o sobre el $ue se est* ejecutando, para solucionarlo deberemos prestar atención a los dos d%#itos se#uientes al error

;- I#ual $ue el 6- por falta de espacio en disco ;= l archi+o al $ue hace referencia no e:iste

;? La or#ani5ación del fichero $ue se $uiere abrir no coincide con su or#ani5ación real interna &uele pasar cuando se modifica una <( y el fichero continua siendo el mismo

-2 "uando intentamos abrir un archi+o $ue ya est* abierto -6 &i intentamos cerrar un archi+o $ue no esta abierto

-; "uando se $uiere borrar o reescribir un re#istro en un fichero abierto con acceso secuencial

-7 &e $uiere reali5ar al#una operación $ue no corresponde con el modo de acceder al fichero &i $ueremos hacer un R!( o un &G!RG en un archi+o $ue no ha sido abierto como IN@UG o como I')

-. I#ual $ue el anterior, pero para el caso de $uerer escribir en un fichero $ue no esta abierto o no est* abierto como I'), )UG@UG o XGN(

-? "uando $ueremos borrar o reescribir en un fichero $ue no ha sido abierto como I') o el fichero no est* abierto

? "uando "))L recibe un mensaje irreconocible, suele estar

ocasionado por incompatibilidad entre los accesos a los ficheros, su forma de apertura y su modo de acceso

?2 I#ual $ue el -6

?6 "uando intentamos leer, escribir, borrar, reescribir sobre un archi+o no abierto

?; l archi+o est* en conflicto con otro usuario

?- I#ual $ue el ;?, tiene muchisimas +ertientes dependiendo de los dos di#itos si#uientes $ue acompa8an al error

?. chate a temblar 1perdonad por la e:presión3, #ra+e error interno en la estructura del fichero, #eneralmente se suelen pro+ocar cuando hay un corte electrico o una salida brusca del pro#rama y al#>n fichero inde:ado se ha $uedado abierto, lo $ue suele ocurrir es problema de correspondencia entre cla+es y datos, se recomienda hacerle un reco+ery 1RM/"))L3 o el $ue corresponda a cada compilador para rehacer las cla+es &i después de todo si#ue dando errores V

n al#unos casos, es posible $ue éste error se deba a un problema f%sico del disco, en ese caso también ser* con+eniente copiarlo en otro sitio Of%sicoO

?? !l borrar, leer o reescribir un re#istro $ue est* siendo blo$ueado por otro usuario

! pesar de todos éstos errores con al#unos de ellos podriamos se#uir trabajando, pero siempre es mejor corre#irlos antes de $ue pasen a mayores

@ara e+itar blo$ueos en los re#istros cuando trabajamos con +arios usuarios accediendo a los mismos re#istros, es con+enientoe tener en cuenta los modos de apertura de los ficheros, ya $ue abriéndolos en IN@UG nunca habr* problema de blo$ueo

,entanas

p*#ina1s3 0 2/6

16-;7 palabras totales en este te:to3 16;.= Lecturas3

Fue son y para $ue sir+en las O+entanasO en cobol V

ste nombre del $ue estamos tan acostumbrados a oir y $ue parece $ue es propiedad de Microsoft, tiene otras y muy di+ersas utilidades Una +entana es en realidad una porción +irtual de la pantalla, la cual podremos definir con unas caracter%sticas propias de tama8o, color, etc 

Dasta $ue éstas aparecieron, cada +e5 $ue $ueriamos sobreponer una información a la $ue ten%amos en pantalla, la construiamos encima y después, debiamos de +ol+er a pintar la $ue estu+iera debajo "on el uso de las +entanas ésto ya no es necesario )s pondré un ejemplo0

&upon#amos $ue tenemos un mantenimiento de clientes, el cual nos ocupa toda la pantalla, y +amos a introducir la pro+incia &i en éste momento $uisieramos mostrarle una tabla con todas las opciones

posibles, era necesario dibujarla encima y una +e5 seleccionada la pro+incia adecuada, +ol+er a pintar la pantalla de mantenimiento $ue hab%amos dejado debajo @ues bien con el uso de las +entanas, ésto ya no es necesario, por$ue lo $ue hacemos es crear una +entana 1una pantalla +irtual3 de las

dimensiones $ue $ueramos, trabajamos todo lo $ue $ueramos con ella y cuando no nos ha#a falta, la cerramos y lo $ue hab%a debajo en la pantalla OprincipalO $uedar* como estaba spero $ue me hayais entendido, para poder se#uir e:plicando su utili5ación

Ko cono5co el uso en !cucobol y RM/"obol, por lo $ue la e:plicación ir* orientada a éstos dos compiladores, si al#uien conoce la de otros, le animo a $ue me facilite la e:plicación

(ebemos de tener en cuenta $ue aun$ue la sinta:is sea diferente en cada uno de los compiladores, la funcionalidad, el uso y la idea, son las mismas !ntes de pasar a la e:plicación tendremos $ue tener en cuenta0

 @odremos tener tantas +entanas abiertas como $ueramos

 l control siempre estar* sobre la +entana acti+a, no podremos trabajar desde una +entana en otra

 La linea 2 y la columna 2 corresponder*n a la es$uina superior i5$uierda de la +entana y no a la de la pantalla

 Las caracter%sticas de la +entana se dar*n en el momento de su creación y ser*n, t%tulo, posición del t%tulo, borde, color, tama8o, etc 

,ENT%N%S EN !&+CO(OL.

n RM/"obol, todas las caracter%sticas se dan mediante unas +ariables definidas en la B)RHINE, éstas son las si#uientes @or supuesto le puedes poner el nombre $ue $uieras a las +ariables, ya $ue lo $ue al final +amos a conse#uir es darle una +ariable con lon#itud . y una sentencia para $ue la +entana se dibuje

2 B"

; BIN"! @I" ??? IN!RK C!LU  ; BINLIN @I" ??? IN!RK

; BIN")L @I" ??? IN!RK ; BINL)" @I" X C!LU O&O 9 1&'B3

; BIN)R&G @I" X C!LU OKO

9 1K'N3

; BIN)RGI @I" ? C!LU 6 ; BIN)R"D @I" X

  ; BINLL @I" X

9 1K'N3

; BINLL"D @I" X

; BINGIG&I @I" X C!LU OGO

9 1G'3

; BINGIG@) @I" X C!LU O"O 9 1"'L'R3

; BINGIGL) @I" ??? IN!RK ; BINGIG @I" X14-3

:plicación de las +ariables0 1de las importantes3

C(: !$u% se #uardar* toda la información para lue#o dibujar la +entana, podeis ponerle el nombre

$ue $uerais, tanto a ésta como al resto

INLIN0 N>mero de lineas $ue +a a tener la +entana INCOL0 N>mero de columnas $ue +a a tener la +entana IN(O!ST0 1K3& 1N3), si +a a tener o no, borde

INTITSI0 1G3)@ 13UGG)N, posición del t%tulo, arriba o abajo INTIT*O0 1"3NGR 1L3<G 1R3IEDG, justificación del t%tulo INTITLO0 Lon#itud en caracteres del t%tulo

INTIT0 G%tulo de la +entana

La sentencia $ue utili5amos para crearla es (I&@L!K, pero con unos matices distintos como +amos a +er a continuación

@rimero mo+er%amos los +alores adecuados a las +ariables y lue#o la sentencia, +eamos como $uedar%a0

M)C 2 G) BINLIN M)C - G) BIN")L

M)C O @R)!N() CNG!N!& O G) BINGIG M)C 2? G) BINGIGL)

(I&@L!K B" LIN ; ")L ; L)B R!& ")NGR)L OBIN()B'"R!GO

9 asi creariamos la +entana, los otros +alores de las +ariables se 9 pueden asi#nar con +alues, por$ue normalmente no cambian 9 ! partir de éste momento, todo lo $ue ha#amos, se har* sobre 9 ésta +entana @ara cerrarla utili5ariamos ésta sentencia

(I&@L!K B" ")NGR)L OBIN()B'RM)CO

&i $uisieramos abrir mas +entanas, en +e5 de displayar directamente la +ariable B", ésta la #uardariamos en una tabla por ejemplo0

B)RHINE'&G)R!E &"GI)N 2 CNG!N!&

6 BIN @I" X1.3 )""UR& 2 GIM&   @R)"(UR (ICI&I)N   M)C 2 G) BINLIN M)C - G) BIN")L M)C O @R)!N() CNG!N!& O G) BINGIG M)C 2? G) BINGIGL) M)C B" G) BIN 123

(I&@L!K BIN 123 LIN ; ")L ; L)B R!& ")NGR)L OBIN()B'"R!GO M)C 2 G) BINLIN

M)C ; G) BIN")L

M)C &@!"& G) BINGIG M)C  G) BINGIGL) M)C B" G) BIN 163

(I&@L!K BIN 163 LIN = ")L 2 L)B R!& ")NGR)L OBIN()B'"R!GO

9 "uando usamos mas de una +entana, deberemos de ir 9 cerr*ndolas se#>n la >ltima $ue se abrió

(I&@L!K BIN 163 ")NGR)L OBIN()B'RM)CO (I&@L!K BIN 123 ")NGR)L OBIN()B'RM)CO

,ENT%N%S EN %C'CO(OL.

incluir en la B)RHINE una +ariable de @I" X123, $ue nos ser+ir* principalmente para tener +arias +entanas abiertas y saber sobre cual actuamos sto se consi#ue con una implementación de la sentencia (I&@L!K, $ue +amos a e:plicar a continuación

B)RHINE'&G)R!E &"GI)N 2 CNG!N!&

6 BIN @I" X123 )""UR& 2 GIM& 



@R)"(UR (ICI&I)N 



(I&@L!K BIN()B LIN ; ")L ; L)B R!& &IA - LIN& 2

)X( &D!()B

G)@ "NGR( GIGL O @R)!N() O @)@'U@ !R! BIN 123

9 @ara cerrarla, utili5aremos la si#uiente instrucción "L)& BIN()B BIN 123

!$ui, la #ran diferencia, es $ue al no utili5ar +ariables, los +alores se le dan en la propia sentencia, y la e:plicación de cada uno ser%a0

SI2E0 N>mero de columnas de la +entana LINES0 N>mero de l%neas de la +entana (O9ED0 Indicamos $ue lle+a borde

S)%DO0 Indicamos $ue lle+a efecto de sombra TO*0 @osición del t%tulo 1G)@')GG)M3

CENTE!ED0 Justificación del t%tulo 1"NGR(, L<G, RIEDG3 *O*$'* %!E%0 donde se #uarda la +entana

La sentencia (I&@L!K BIN()B, en !cucobol, es mucho mas e:tensa, incluyendo sobre todo una muy buena aplicación de los colores, tanto para el fondo como para el primer plano

!ES'&IENDO

Ka +eis, $ue aun$ue cambie un poco la sinta:is, el fin es e:actamente el mismo, disponer de una parte de la pantalla con autonom%a propia

&olo espero $ue después de éstas e:plicaciones seais capaces de apro+echar todas las +entajas $ue nos puede proporcionar el trabajar con +entanas Ko siempre las he utili5ado, eso si, tampoco

deberemos de hacer de un pro#rama cobol, una serie de +entanas, hay $ue utili5arlas cuando realmente las necesitemos Recordad $ue0

l control solo ser* sobre la +entana acti+a

Una +e5 abierta una +entana, ésta tendr* el control, hasta $ue se cierre

@or supuesto, todas la +ariables $ue utilicemos ser*n portables entre +entanas, ya $ue en realidad estaremos en el mismo pro#rama

*ala<ras !eservadas

12-44 palabras totales en este te:to3 16;6? Lecturas3

Las palabras reser+adas del "obol, son a$uellas $ue el propio compilador utili5a y por lo tanto no podemos utili5ar como +ariables en nuestros pro#ramas stas han ido a+an5ando con el paso de los tiempos y cada compilador incluso, incluyendo nue+as !$u% +oy a poner una lista de la cantidad mayor $ue pueda

SELECCION% L% LET!%= *%!% I! DI!ECT%&ENTE O %,%N2% *O! L% *%#IN%

% ( C D E F # ) I - " L & N O * ; !  S T ' ,  2 Otras

 % 

!((R&& !(C!N"INE !<GR

!LL !L@D!G !L@D!GI"

!L@D!GI"'L)BR !L@D!GI"'U@@R !@D!NUMRI"

!L@D!NUMRI"'(IG( !L&) !LGR

!LGRN!G !N( !NK

!@@LK !R !R!

!R!& !&"N(INE !&&IEN

!G !UGD)R !UG)

!UG)'&HI@ !UG)M!GI" !UG)GRMIN!G

 ( 

!"HER)UN( !"HER)UN('")L)R !"HER)UN('DIED

!"HER)UN('L)B !"HB!R( @ <)R LL IN( IN!RK L!NH LINH LINHINE L)"H )L( )GG)M K  C  "!LL "!N"L "( "< "D "D!R!"GR

"D!R!"GR& "L!&& "L)&

"))L ")( ")('&G

")L ")LL!GINE ")LUMN

")MM! ")MMUNI"!GI)N ")M@

")M@'2 ")M@'6 ")M@';

")M@'- ")M@'4 ")M@UG!GI)N!L

")M@UG!GI)N!L'2 ")M@UG!GI)N!L'6 ")M@UG!GI)N!L';

")M@UG!GI)N!L'- ")M@UG ")N<IEUR!GI)N

")N&)L ")NG!IN& ")NGNG ")NGINU ")NGR)L ")NGR)L& ")NCR&I)N ")NCRG ")NCRGINE ")@K ")RR ")RR&@)N(INE ")UNG "RG "URRN"K "UR&)R  D  (!G! (!G (!G'")M@IL( (!G'BRIGGN (!K (!K')<'BH ( (UE (UEEINE

("IM!L'@)ING ("L!R!GIC& (<!ULG

(LG (LIMIG( (LIMIGR

(@N(INE (&"N(INE (&GIN!GI)N

(G!IL (I&!L (I&@L!K

(ICI( (ICI&I)N (R!BN (U@LI"!G& (KN!MI"  E  "D) EI L& MI M@GK'"D"H N!L( N( N('!""@G N('!((

N('"!LL N('")M@UG N('(LG

N('(ICI( N('C!LU!GF N('I<

N('MULGI@LK N(')<'@!E N('@R<)RM

N('R!( N('R"IC N('RGURN

N('RBRIG N('&!R"D N('&G!RG

N('&GRINE N('&UGR!"G N('UN&GRINE

N('BRIG NGR NCIR)NMNG

)L )@ )&

FU!L R!& RR)R

&"!@ &I C!LU!G

CRK X"@GI)N X"LU&IC

XIG XGN( XGRN!L

 F 

<!L& <( <IL

<IL'")NGR)L <IL'I( <IL'@R<IX

<ILLR <IN!L <IR&G

<))GINE <)R <)RER)UN('")L)R

<)RER)UN('")L)UR <R)M <ULL

 # 

ENR!G EICINE EL)!L

E) E)!"H ER!GR

ERI( ER)U@

 ) 

D!(INE DIED DIED'!LU

DIED'C!LU& DIEDLIEDG

 I 

I') I') ")NGR)L I(NGI<I"!GI)N

I< IN IN(X

IN(X( IN(I"!G INIGI!L

INIGI!LIA IN@UG IN@UG')UG@UG

IN&@"G IN&G!LL!GI)N ING)

INC!LI( I&  -  JU&G JU&GI<I(  "  HK  L  L!L L!&G L!(INE L<G L<GLIN LNEGD

LNEGD'"D"H L&& LIMIG

LIMIG& LIN!E LINE!H'")UNGR

LIN& LINH!E L)"H

L)B'C!LU& L)BLIEDG  &  MM)RK MRE M)( M)(UL& M)C MULGI@L MULGI@LK  N  N!GIC NE!GIC NXG N) N)'"D) N)G

NUMR NUMRI" NUMRI"'(IG(

 O  )J"G'")M@UGR )""UR& )< )<< )MIGG( )N )@N )@GI)N!L )R )R(R )RE!NIA!GI)N )GDR )GDR& )UG@UG )CR<L)B )CRLIN  * 

@!"H('("IM!L @!((INE @E

@!E'")UNGR @R<)RM @I"

@I"GUR @LU& @)INGR

@)& @)&IGI)N @)&IGIC

@RCI)U& @RING'")NGR)L @RINGINE

@R)"(UR @R)"(UR& @R)"(

@R)ER!M @R)ER!M'I( @R)M@G

@R)G"G( @URE

 ; 

FUU FU)G FU)G&

 ! 

R!N()M R( R!(

R!(R& R"IC R")R(

R")R(INE R")R(& R(<IN&

RL R<RN" R<RN"&

RL!GIC RL!& RM!IN(R

RM)C!L RN!M& R@L!"

R@L!"INE RFUIR( R@)RG

R@)RGINE R@)RG& RRUN

R&RC RGURN RGUNRNIN

RGURN'")( RGURN'UN&IEN( RCR&

RCR&'CI() RCR&( RBIN(

RBRIG R< RD

RIEDG R)LL!"H RUN

 S 

&!R"D &"GI)N &"UR

&"URIGK &EMNG &EMNG'LIMIG

&L"G &N( &NGN"

&@!R!G &FUN" &FUNGI!L

&G &IEN &IA

&)RG &)RG'MRE &)UR"

&)UR"'")M@UGR &@!" &@!"&

&@"I!L'N!M& &G!N(!R( &G!RG

&G!GU& &G)@ &GRINE

&UGR!"G &U@@R&& &KM)LI" &KN" &K"DR)NIA(

 T 

G! G!LLKNE G!@

GRMIN!L GRMIN!G G&G

GXG GD!N GDN

GDR)UED GDRU GIM

GIM& G) G)@

GR!ILINE GRU

 ' 

UN(RLIN UN(RLIN( UNIG

UNL)"H UN&GRINE UNGIL

U@ U@(!G U@(!G&

U@)N U&!E U&

U&INE

 , 

C!LU C!LU& C!RKINE

  

BDN BIGD B)R(&

B)RHINE'&G)R!E BRIG BRIGR&

 2 

AR) AR)& AR)&

!dem*s de todas éstas palabras, cada compilador ha ido incorporando nue+as a su lista, debido principalmente a la incorporación de aspectos destinados a la pro#ramación #r*fica ntre ellos podemos citar al#unos de los nue+os incorporados por !cucobol0

!GGRIUG !UG)'MINIMIA !UG)'R&IA

)X )X( "")L "LL "LL& "NGR( ")L)R ")L)UR "&IA "K"L (&GR)K ()UL ()BN N"RK@GI)N N('(I&@L!K CNG <XGRN!L'<)RM <IL'@R<IX <L)!G <L)!GINE <)NG ER!@DI"!L D!N(L DIEDG

DL@'I( I")N I(

I(NGI<I( INFUIR LINH

L)BR M!NU!L MNU

M&&!E M)(!L M)(L&&

M)(I<K NULL NULL

)J"G )NLK )CRL!@@(

@!R!ER!@D @)@'U@ @RI)RIGK

@R)@RGK R&IA!L &"R)LL

&D!()B &GKL &K&GM

&K&GM'IN<) G!L GRMIN!L'IN<)

GDR!( GIGL GIGL'!R

G))L'!R GR!N&!"GI)N U@@R

CI&IL B!IG BI(GD

BIN()B BR!@

In document Manual de programacion Cobol (página 52-66)

Documento similar