4 Unidad General para utilizar con los programas que utilicen el archivo de comandos
\r
5 Tambien incluye algunas funciones y procedimientos utiles para la manipulacion de datos.
\r
11 GRAL, DOS, CRT, TABLA, ABO_AB, ABO_UTIL, PILA_C;
\r
14 T_COMANDO_TABLA = record
\r
18 Movimiento: string[1];
\r
19 DNI_hasta: string[8];
\r
21 T_COMANDO_ABO = record
\r
26 ID_COMANDO = ( INS, IO, ORDEN, BC, BR, LS, LC, BO, MO, LI, DESC );
\r
28 T_ARCHIVO_COMANDOS_TABLA = file of T_COMANDO_TABLA;
\r
30 T_ARCHIVO_COMANDOS_ABO = file of T_COMANDO_ABO;
\r
32 {----------------------------------------------------------------------------}
\r
33 {- Procedimiento: Muestra un mensaje de bienvenida al programa
\r
34 {----------------------------------------------------------------------------}
\r
35 procedure mensajeDeEntrada( descripcion: String );
\r
37 {----------------------------------------------------------------------------}
\r
38 {- Funcion: verifica si existe un archivo.
\r
39 {----------------------------------------------------------------------------}
\r
40 function existeArchivo( nombre: String ): boolean;
\r
42 {----------------------------------------------------------------------------}
\r
43 {- Procedimiento: Procesa los parametros de la ejecucion del programa
\r
44 {----------------------------------------------------------------------------}
\r
45 procedure procesarParametros( var archivoEntradaTabla: T_ARCHIVO_COMANDOS_TABLA;
\r
46 var archivoEntradaABO: T_ARCHIVO_COMANDOS_ABO;
\r
47 var archivoSalida: text; var error: boolean );
\r
49 {----------------------------------------------------------------------------}
\r
50 {- Procedimiento: Muestra un mensaje de error y la sintaxis del programa.
\r
51 {----------------------------------------------------------------------------}
\r
52 procedure errorParametros;
\r
54 {----------------------------------------------------------------------------}
\r
55 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
56 {----------------------------------------------------------------------------}
\r
57 procedure intro( var f: text );
\r
59 {----------------------------------------------------------------------------}
\r
60 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
61 {----------------------------------------------------------------------------}
\r
62 procedure introTabla( var f: text );
\r
64 {----------------------------------------------------------------------------}
\r
65 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
66 {----------------------------------------------------------------------------}
\r
67 procedure introABO( var f: text );
\r
69 {----------------------------------------------------------------------------}
\r
70 {- Funcion: Convierte un dato del tipo T_MOVIM en un string
\r
71 {----------------------------------------------------------------------------}
\r
72 function movimToStr( m: T_MOVIM): string;
\r
74 {----------------------------------------------------------------------------}
\r
75 {- Funcion: Convierte un dato del tipo ID_COMANDO en un string
\r
76 {----------------------------------------------------------------------------}
\r
77 function comandoToStr( c: ID_COMANDO ): string;
\r
79 {----------------------------------------------------------------------------}
\r
80 {- Funcion: Convierte un string en un dato del tipo ID_COMANDO
\r
81 {----------------------------------------------------------------------------}
\r
82 function strToComando( s: string ): ID_COMANDO;
\r
84 {----------------------------------------------------------------------------}
\r
85 {- Funcion: Convierte un string en un dato del tipo T_MOVIM
\r
86 {----------------------------------------------------------------------------}
\r
87 function strToMovim( s: string; var error: boolean ): T_MOVIM;
\r
89 {----------------------------------------------------------------------------}
\r
90 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
91 {----------------------------------------------------------------------------}
\r
92 procedure agregaComandoTBL( var f: text; c: T_COMANDO_TABLA );
\r
94 {----------------------------------------------------------------------------}
\r
95 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
96 {----------------------------------------------------------------------------}
\r
97 procedure agregaComandoABO( var f: text; c: T_COMANDO_ABO );
\r
99 {----------------------------------------------------------------------------}
\r
100 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
101 {----------------------------------------------------------------------------}
\r
102 procedure agregaError( var f: text; cmd, msg: string );
\r
104 {----------------------------------------------------------------------------}
\r
105 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
106 {----------------------------------------------------------------------------}
\r
107 procedure agregaRegistro( var f: text; cmd: string; r: T_REGISTRO );
\r
109 {----------------------------------------------------------------------------}
\r
110 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
111 {----------------------------------------------------------------------------}
\r
112 procedure mostrarPila( var f: text; var p: T_PILAC );
\r
117 {----------------------------------------------------------------------------}
\r
118 {- Procedimiento: Muestra un mensaje de bienvenida al programa
\r
119 {----------------------------------------------------------------------------}
\r
120 procedure mensajeDeEntrada( descripcion: String );
\r
124 writeln( 'ALGORITMOS Y PROGRAMACION II - Trabajo Practico n. 2' );
\r
125 writeln( 'GRUPO 22 - Primer Cuatrimestre 2000' );
\r
127 writeln( descripcion );
\r
131 {-- Fin del Procedimiento --}
\r
133 {----------------------------------------------------------------------------}
\r
134 {- Funcion: verifica si existe un archivo.
\r
135 {----------------------------------------------------------------------------}
\r
137 function existeArchivo( nombre: String ): boolean;
\r
139 { funcion extrida de la ayuda del Turbo Pascal 7 }
\r
146 Assign( arch, nombre );
\r
147 FileMode := 0; { Solo lectura }
\r
151 ExisteArchivo := (IOResult = 0) and (nombre <> '');
\r
154 {-- Fin de la Funcion ExisteArchivo --}
\r
156 {----------------------------------------------------------------------------}
\r
157 {- Procedimiento: Procesa los parametros de la ejecucion del programa
\r
158 {----------------------------------------------------------------------------}
\r
160 procedure procesarParametros( var archivoEntradaTabla: T_ARCHIVO_COMANDOS_TABLA;
\r
161 var archivoEntradaABO: T_ARCHIVO_COMANDOS_ABO;
\r
162 var archivoSalida: text; var error: boolean );
\r
165 if ( paramcount = 3 ) then begin
\r
166 if ( existeArchivo( paramstr( 1 ) ) and existeArchivo( paramstr( 2 ) ) ) then begin
\r
167 assign( archivoEntradaTabla, paramstr( 1 ) );
\r
168 reset( archivoEntradaTabla );
\r
169 assign( archivoEntradaABO, paramstr( 2 ) );
\r
170 reset( archivoEntradaABO );
\r
171 assign( archivoSalida, paramstr( 3 ) );
\r
172 rewrite( archivoSalida );
\r
182 {-- Fin del Procedimiento procesarParametros --}
\r
184 {----------------------------------------------------------------------------}
\r
185 {- Procedimiento: Muestra un mensaje de error y la sintaxis del programa.
\r
186 {----------------------------------------------------------------------------}
\r
188 procedure errorParametros;
\r
196 fsplit( paramstr( 0 ), dir, fname, ext );
\r
199 writeln( 'ERROR: No se pudieron abrir los archivos o numero de parametros incorrectos.' );
\r
200 writeln( ' Verifique que el archivo de comandos exista y que el archivo de salida no.' );
\r
201 writeln( ' Ademas asegurese de que tenga permiso de escritura en la unidad que desee' );
\r
202 writeln( ' guardar el archivo de salida.' );
\r
204 writeln( 'Modo de uso:' );
\r
205 writeln( ' ', fname, ' archivo_comandos_tabla archivo_comandos_abo archivo_salida' );
\r
209 {-- Fin del Procedimiento errorParametros --}
\r
211 {----------------------------------------------------------------------------}
\r
212 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
213 {----------------------------------------------------------------------------}
\r
215 procedure intro( var f: text );
\r
220 writeln( f, 'Archivo de Comandos de Tabla: ', ParamStr( 1 ) );
\r
221 writeln( f, 'Archivo de Comandos de ABO : ', ParamStr( 2 ) );
\r
222 writeln( f, 'Archivo de Informacion : ', ParamStr( 3 ) );
\r
226 {-- Fin del Procedimiento --}
\r
228 {----------------------------------------------------------------------------}
\r
229 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
230 {----------------------------------------------------------------------------}
\r
232 procedure introTabla( var f: text );
\r
237 writeln( f, 'PROCESO DE ARCHIVO DE COMANDOS DE TABLA' );
\r
238 writeln( f, '======= == ======= == ======== == =====' );
\r
243 {-- Fin del Procedimiento --}
\r
245 {----------------------------------------------------------------------------}
\r
246 {- Procedimiento: Muestra mensaje introductorio en archivo de salida
\r
247 {----------------------------------------------------------------------------}
\r
249 procedure introABO( var f: text );
\r
254 writeln( f, 'PROCESO DE ARCHIVO DE COMANDOS DEL ABO' );
\r
255 writeln( f, '======= == ======= == ======== === ===' );
\r
260 {-- Fin del Procedimiento --}
\r
262 {----------------------------------------------------------------------------}
\r
263 {- Funcion: Convierte un dato del tipo T_MOVIM en un string
\r
264 {----------------------------------------------------------------------------}
\r
266 function movimToStr( m: T_MOVIM): string;
\r
281 {-- Fin del Procedimiento --}
\r
283 {----------------------------------------------------------------------------}
\r
284 {- Funcion: Convierte un dato del tipo ID_COMANDO en un string
\r
285 {----------------------------------------------------------------------------}
\r
287 function comandoToStr( c: ID_COMANDO ): string;
\r
292 comandoToStr := 'IN';
\r
294 comandoToStr := 'IO';
\r
296 comandoToStr := 'OR';
\r
298 comandoToStr := 'BC';
\r
300 comandoToStr := 'BR';
\r
302 comandoToStr := 'LS';
\r
304 comandoToStr := 'LC';
\r
306 comandoToStr := 'BO';
\r
308 comandoToStr := 'MO';
\r
310 comandoToStr := 'LI';
\r
312 comandoToStr := 'DE';
\r
316 {-- Fin del Procedimiento --}
\r
318 {----------------------------------------------------------------------------}
\r
319 {- Funcion: Convierte un string en un dato del tipo ID_COMANDO
\r
320 {----------------------------------------------------------------------------}
\r
322 function strToComando( s: string ): ID_COMANDO;
\r
325 if ( ( s = 'IN' ) or ( s = 'in' ) or ( s = 'In' ) or ( s = 'iN' ) ) then
\r
326 strToComando := INS
\r
327 else if ( ( s = 'IO' ) or ( s = 'io' ) or ( s = 'Io' ) or ( s = 'iO' ) ) then
\r
329 else if ( ( s = 'OR' ) or ( s = 'or' ) or ( s = 'Or' ) or ( s = 'oR' ) ) then
\r
330 strToComando := ORDEN
\r
331 else if ( ( s = 'BC' ) or ( s = 'bc' ) or ( s = 'Bc' ) or ( s = 'bC' ) ) then
\r
333 else if ( ( s = 'BR' ) or ( s = 'br' ) or ( s = 'Br' ) or ( s = 'bR' ) ) then
\r
335 else if ( ( s = 'LS' ) or ( s = 'ls' ) or ( s = 'Ls' ) or ( s = 'lS' ) ) then
\r
337 else if ( ( s = 'LC' ) or ( s = 'lc' ) or ( s = 'Lc' ) or ( s = 'lC' ) ) then
\r
339 else if ( ( s = 'BO' ) or ( s = 'bo' ) or ( s = 'bO' ) or ( s = 'Bo' ) ) then
\r
341 else if ( ( s = 'MO' ) or ( s = 'mo' ) or ( s = 'mO' ) or ( s = 'Mo' ) ) then
\r
343 else if ( ( s = 'LI' ) or ( s = 'li' ) or ( s = 'Li' ) or ( s = 'lI' ) ) then
\r
346 strToComando := DESC;
\r
349 {-- Fin del Procedimiento --}
\r
351 {----------------------------------------------------------------------------}
\r
352 {- Funcion: Convierte un string en un dato del tipo ID_COMANDO
\r
353 {----------------------------------------------------------------------------}
\r
355 {----------------------------------------------------------------------------}
\r
356 {- Funcion: Convierte un string en un dato del tipo T_MOVIM
\r
357 {----------------------------------------------------------------------------}
\r
359 function strToMovim( s: string; var error: boolean ): T_MOVIM;
\r
363 if ( ( s = 'P' ) or ( s = 'p' ) ) then
\r
364 strToMovim := T_MOVIM_primero
\r
365 else if ( ( s = 'U' ) or ( s = 'u' ) ) then
\r
366 strToMovim := T_MOVIM_ultimo
\r
367 else if ( ( s = 'A' ) or ( s = 'a' ) ) then
\r
368 strToMovim := T_MOVIM_anterior
\r
369 else if ( ( s = 'S' ) or ( s = 's' ) ) then
\r
370 strToMovim := T_MOVIM_siguiente
\r
372 strToMovim := T_MOVIM_primero;
\r
377 {-- Fin del Procedimiento --}
\r
379 {----------------------------------------------------------------------------}
\r
380 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
381 {----------------------------------------------------------------------------}
\r
383 procedure agregaComandoTBL( var f: text; c: T_COMANDO_TABLA );
\r
391 write( f, '>>> ', comandoToStr( strToComando( c.comando ) ) ); { Para que aparezca en mayusculas }
\r
392 write( f, ' ; ', c.dni );
\r
393 write( f, ' ; ', c.nombre );
\r
394 m := movimToStr( strToMovim( c.Movimiento, err ) );
\r
395 if ( err ) then begin
\r
396 if ( c.movimiento = '*' ) then
\r
401 write( f, ' ; ', m ); { Para que aparezca en mayusculas }
\r
402 write( f, ' ; ', c.dni_hasta );
\r
406 {-- Fin del Procedimiento --}
\r
408 {----------------------------------------------------------------------------}
\r
409 {- Procedimiento: Agrega el texto de un comando a ejecutar en el archivo de salida
\r
410 {----------------------------------------------------------------------------}
\r
412 procedure agregaComandoABO( var f: text; c: T_COMANDO_ABO );
\r
420 write( f, '>>> ', comandoToStr( strToComando( c.comando ) ) ); { Para que aparezca en mayusculas }
\r
421 write( f, ' ; ', c.dni );
\r
422 write( f, ' ; ', c.nombre );
\r
426 {-- Fin del Procedimiento --}
\r
429 {----------------------------------------------------------------------------}
\r
430 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
431 {----------------------------------------------------------------------------}
\r
433 procedure agregaError( var f: text; cmd, msg: string );
\r
436 writeln( f, ' * ' + cmd + ' ERROR: ' + msg );
\r
439 {-- Fin del Procedimiento --}
\r
442 {----------------------------------------------------------------------------}
\r
443 {- Procedimiento: Agrega mensaje de error en el archivo de salida
\r
444 {----------------------------------------------------------------------------}
\r
446 procedure agregaRegistro( var f: text; cmd: string; r: T_REGISTRO );
\r
452 s1 := ' @ ' + cmd + '> REGISTRO: Clave = ';
\r
453 s2 := ' | Nombre = ' + r.nombre;
\r
454 writeln( f, s1, r.dni, s2 );
\r
457 {-- Fin del Procedimiento --}
\r
460 {----------------------------------------------------------------------------}
\r
461 {- Procedimiento: Muestra el contenido de una pila (vaciandola)
\r
462 {----------------------------------------------------------------------------}
\r
463 procedure mostrarPila( var f: text; var p: T_PILAC );
\r
469 while ( not PILAC_vacio( p ) ) do begin
\r
470 PILAC_sacar( p, r );
\r
471 agregaRegistro( f, 'PILAC', r );
\r