COGM32 - Aggiornamento Analisi ABC¶
Funzione¶
Calcola e aggiorna la classificazione ABC di ciascuna merce basandosi sugli indici di rotazione (COGROTAZ) del periodo selezionato. Scorre l'archivio COGROTAZ a ritroso in ordine di incidenza percentuale sul valore di magazzino (rtz-per-cpv), accumula la percentuale progressiva e assegna la classe A, B o C in base alle soglie definite dall'operatore. Il risultato e' scritto sul campo mer-analisi di ogni merce in COGMERCI.
Menu¶
- Magazzino > Controllo Magazzino > Indici di Rotazione > Agg. Analisi ABC
Tabelle e file principali¶
| Tabella | Descrizione | Accesso |
|---|---|---|
| FEURTAB | Tabella file/directory | R |
| COGROTAZ | Indici di rotazione merci per periodo | R - da cogm32.select e cogm32.fd (chiave chia2 e chia3) |
| COGMERCI | Anagrafica merci | R/W - da cogm32.select |
| COGMAGAZ | Anagrafica magazzini | R - da cogm32.select |
| COGTABEL | Tabella parametri (tipo 57, codice 1: data consolidamento) | R - da cogm32.select |
Chiavi di accesso COGROTAZ¶
- Chiave primaria (chia3):
rtz-mag3+rtz-anno3+rtz-per-ini3+rtz-per-fin3+rtz-cpv(campo valore, per scorrimento a ritroso) - Chiave alternativa chia2:
rtz-mag2+rtz-anno2+rtz-per-ini2+rtz-per-fin2+ altri campi (usata per verifica esistenza periodo) - Entrambe le chiavi sono incluse tramite
copy "cogrotaz.k02"a fine procedura.
Logica principale¶
Flusso di elaborazione¶
-
Inizializzazione:
z-99-init-program,ctr-abil, apertura file. Lettura data sistema, lettura data consolidamento da COGTABEL (tipo 57, codice 1): i campieuta-dc-aa-acceeuta-dc-mm-accdeterminano il periodo massimo interrogabile. -
Raccolta parametri (maschera
cogm32-01.scr): a-tm-anno: anno di riferimento. Validazioni: anno >= 1988, anno <= anno consolidato.a-tm-da: mese di inizio (1-12). Se anno = anno consolidato, mese <= mese consolidato. F8 apre WIN040 (selezione periodo grafico).a-tm-a: mese di fine (1-12). Validazioni come sopra piu' coerenza (da <= a). Prima di proseguire, verifica l'esistenza del periodo in COGROTAZ (chiave chia2).a-tm-mag: magazzino (F8 tramitesend-w36). Se vuoto, elabora tutti i magazzini.a-tm-soglia-a-a: soglia percentuale massima classe A (0-100). Calcola automaticamentetm-soglia-b-da = tm-soglia-a-a + 1.-
a-tm-soglia-b-a: soglia percentuale massima classe B (deve essere > soglia A, max 100). Calcola automaticamentetm-soglia-c-daetm-soglia-c-a = 100. -
Elaborazione (dopo conferma F3 da
a-fine-dati): - Mostra messaggio "Elaborazione in corso".
- Posiziona COGROTAZ con
START key NOT > rtz-chia3per lo specifico magazzino/anno/da-mese/a-mese, conrtz-cpv = 99999999999(massimo valore, per partire dalla fine dell'intervallo). - Loop
read-ritroso(READ cogrotaz PREVIOUS): per ogni record che appartiene al periodo/magazzino selezionato:- Salta le righe con
rtz-sot1 = spaces AND rtz-cod1 = zeroes AND rtz-gru1 = spaces(totali/subtotali). - Chiama
agg-mer: - Accumula
som-abc += rtz-per-cpv - Se
som-abc <= tm-soglia-a-a: classe A - Altrimenti se
som-abc <= tm-soglia-b-a: classe B - Altrimenti: classe C
- Legge COGMERCI per il codice merce (
rd-mer/rd-cogmerci) - Se la merce non esiste (descrizione
"****"): sottraertz-cpvdasom-abce salta - Aggiorna
mer-analisi = wclasconREWRITEsu COGMERCI (rw-mer/rwr-cogmerci) - Mostra in progress bar il codice merce e la classe assegnata
- Salta le righe con
- Al termine mostra "Elaborazione Terminata".
Algoritmo ABC¶
Lo scorrimento a ritroso di COGROTAZ ordina le merci dalla maggiore alla minore incidenza sul valore di magazzino (rtz-per-cpv). La sommatoria progressiva (som-abc) determina il punto di appartenenza alla classe:
- som-abc in [0, soglia_A]: classe A
- som-abc in (soglia_A, soglia_B]: classe B
- som-abc > soglia_B (fino a 100): classe C
Le soglie sono percentuali (0-100) e rappresentano la quota cumulativa del valore totale di magazzino.
Prerequisiti¶
Il periodo richiesto deve esistere in COGROTAZ (verificato su chiave chia2) e deve essere un periodo gia' consolidato. Il consolidamento e' verificato leggendo COGTABEL tipo 57 codice 1.
Chiamate principali¶
| Programma | Scopo |
|---|---|
| WIN040 | Selezione visuale del periodo estratto (F8 sui campi mese) |
Copybook working-storage significativi¶
wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utils52.cpy (util-s52, calendario), utilu10.cpy, utilw36.cpy (send-w36, selezione magazzino), k-u10.cpy.
Linkage¶
wcont.cpy, wcont1.cpy: area di comunicazione standard. mmmask.cpy (programma standalone).
Note tecniche¶
- Il file
cogm32.cbldichiara due volte la variabilei pic 9(03) comp-4(riga 38 e 39): la prima senza prefisso, la seconda con; e' una peculiarita' storica del sorgente. - La copia
"cogrotaz.k02"(chiave alternativa) viene inclusa a fine procedura, dopommmask.cpy, non nella file section: e' necessaria per laperform rd-cogrotaz-chia2usata nel controllo periodo. - La visualizzazione in progress durante l'elaborazione usa
perform view-clkcon il messaggio inwb-msg. - La variabile
w-iviene settata a 1 sertz-sot1 = "SI"ortz-cod1 = 43ma non viene altrove utilizzata nella logica: si tratta probabilmente di un residuo di debug. - Il campo
n-eviene usato ina60-ctrper verificare se sono stati trovati record: sen-e = zeroal termine delSTART, significa che non esiste alcun record per il periodo. - Source/object-computer:
rmcobol(versione originale, non convertita ad acu-cobol come la maggior parte dei programmi).