Algorítmica - Grupos alternativos de datos
Preámbulo
El método expuesto en el capítulo Algorítmica - Presentación del método se aplica a casos concretos en este capítulo y los siguientes (Algorítmico - Datos de fase, saltos de página; Algorítmica - Las tablas; Algorítmica - Alternativas complejas). Cada uno de estos casos presenta la resolución de una situación nueva. De esta manera se tratan la mayor parte de los problemas encontrados en las aplicaciones «batch». En este capítulo, vamos a:
-
Programar una aplicación con conjuntos de datos presentes 0 o n veces.
-
Programar una aplicación con varios archivos de entrada.
Actualización del archivo «stock»
1. Tema
El programa que se va a realizar consiste en crear un archivo «nuevoStock» a partir de dos archivos «anteriorStock» y «movimientos».

Archivo anteriorStock
Cada registro del archivo anteriorStock contiene tres campos.
-
Un número de identificación del producto
-
Una etiqueta que da el nombre del producto
-
Una cantidad en stock

El archivo anteriorStock se ordena por el número de producto, en orden creciente. Solo hay un registro por producto. No está vacío.
Estructura correspondiente:
typedef struct
{
char numero[3];
char etiqueta[21];
int cantidad;
} PRODUCTO;
Archivo movimientos
Un movimiento se corresponde con una entrada o una salida en el stock. Una entrada añade una cantidad de producto en el stock. Una salida reduce una cantidad de producto del stock.
Cada registro del archivo movimientos contiene tres campos:
-
Un número de identificación del producto.
-
Una cantidad para añadir (entrada) o para sustraer (salida) del stock del producto.
-
Un código que indica si se trata de una entrada (E) o de una salida (S).

El archivo se ordena por el número de producto, en orden creciente. Puede haber 0 o n registros por producto.
Estructura correspondiente:
typedef struct
{
char numeroProducto[3];
int cantidad;
char codigo;
} MOVIMIENTO;
Archivo nuevoStock: los registros del archivo nuevoStock tienen la misma estructura que los del archivo anteriorStock. Hay tantos productos en el archivo nuevoStock como en el archivo anteriorStock. Solo se actualiza la cantidad de cada producto, en función de los movimientos eventuales que le afectan.
Ejemplo
anteriorStock movimientos
01 TORNILLOS 100 01 50 E
01 70 S ...