Se tiene un archivo maestro de stock de un almacén y otro con las novedades de las compras y ventas de los artículos que se comercializan. Aparear estos archivos a efectos de grabar dicho maestro con el stock actualizado y producir un informe de dicha actualización. Archivo maestro: 1 registro por artículo || NRO. ARTICULO | DESCRIPCIÓN | STOCK ACTUAL || Archivo de novedades: 1, varios o ningún registro por artículo || NRO.ARTICULO | CANTIDAD | COD.MOV. || COD.MOV.: 1-COMPRAS 2-VENTAS DEBERÁ: 1.Actualizar el campo stock actual del maestro, para lo cuál hay que sumar las cantidades de compras y restar las cantidades de ventas de la novedad. 2.Detectar el artículo con mayor stock actual. 3.Imprimir el siguiente informe, colocando un “*” en observaciones para los artículos sin novedad NRO.ARTICULO DESCRIPCIÓN STOCK ACTUAL BSERVACIONES XXX XXXXXXXXXX XXXX XXX XXXXXXXXXX XXXX * XXX XXXXXXXXXX XXXX MAYOR STOCK ACTUAL: XXXX ARTICULO NRO: XXX CANTIDAD DE ARTICULOS SIN MOVIMIENTO: XXXX PROGRAM EJERCICIO_EJEMPLO; USES CRT; TYPE DM = RECORD ART_M: INTEGER; DESC: STRING[20]; EXIST: INTEGER; END; TYPE DN = RECORD ART_N: INTEGER; CANTIDAD: INTEGER; CODMOV: INTEGER; END; VAR MAE:FILE OF DM; R_MAE:DM; NOV:FILE OF DN; R_NOV: DN; MAYOR_STOCK:INTEGER; ART_MAYOR: INTEGER; STOCK_ACT: INTEGER; TOTAL_C, TOTAL_V, TOTAL_G:INTEGER; OBSERVACIONES:CHAR; CANT_ART_SM:INTEGER; PROCEDURE LEER_M; BEGIN IF EOF(MAE) THEN R_MAE.ART_M:=999 ELSE READ(MAE,R_MAE); END; PROCEDURE LEER_N; BEGIN IF EOF(NOV) THEN R_NOV.ART_N:=999 ELSE READ(NOV,R_NOV); END; PROCEDURE PRINCIPIO; BEGIN CLRSCR; ASSIGN (MAE,'ARTICULO.DAT'); RESET(MAE); ASSIGN (NOV,'NOVE.DAT'); RESET(NOV); WRITELN('ARTICULO DESCRIPCION STOCK ACT MAYOR_STOCK:= 0; LEER_M; LEER_N; END; OBSERVACIONES'); PROCEDURE PRINCIPIO_APAREO; BEGIN TOTAL_C:= 0; TOTAL_V:= 0; CMOV:=0; END; PROCEDURE MOVIMIENTO; BEGIN IF R_NOV.CODMOV =1 THEN TOTAL_C:= TOTAL_C + R_NOV.CANTIDAD ELSE TOTAL_V:= TOTAL_V + R_NOV.CANTIDAD; CMOV:= 1; LEER_N; END; PROCEDURE MAYOR; BEGIN IF R_MAE.EXIST > MAYOR_STOCK THEN BEGIN MAYOR_STOCK:=R_MAE.EXIST; ART_MAYOR:=R_MAE.ART_M; END; END; PROCEDURE ACTUALIZAR; BEGIN R_MAE.EXIST:= R_MAE.EXIST + TOTAL_C - TOTAL_V; SEEK(MAE, FILEPOS(MAE)-1); WRITE(MAE,R_MAE); END; PROCEDURE FIN_APAREO; BEGIN IF CMOV:=0 THEN BEGIN OBSERVACIONES:= '*'; CANT_ART_SM:=CANT_ART_SM + 1; END ELSE OBSERVACIONES:= ' '; ACTUALIZAR; MAYOR; WRITELN(R_MAE.ART_M, R_MAE.DESC,R_MAE.EXIST, OBSERVACIONES); LEER_M; END; PROCEDURE APAREO; BEGIN PRINCIPIO_APAREO; WHILE R_MAE.ART_M = R_NOV.ART_N DO MOVIMIENTO; FIN_APAREO; END; PROCEDURE FIN_PROGRAMA; BEGIN WRITELN(' '); WRITE('MAYOR STOCK ACTUAL: '); WRITELN (MAYOR_STOCK); WRITE('ARTICULO NUMERO: '); WRITELN (ART_MAYOR); WRITE('CANTIDAD DE ARTICULOS SIN MOPVIMIENTO '); WRITELN (CANT_ART_SM); CLOSE(MAE); CLOSE(NOV); END BEGIN PRINCIPIO; WHILE (R_MAE.ART_M<>999) DO APAREO; FIN_PROGRAMA; END.