COGQ26 - Gestione Giornate Lavorative¶
Scopo¶
Aggiornamento massivo delle ore lavorative giornaliere in un calendario di magazzino (CLCCALEN) o di macchina (CLCCALMA), su un intervallo di date e suddivise per giorno della settimana. Se l'aggiornamento e' fatto sul magazzino, viene proposto in opzione di propagare le nuove ore anche su tutti i calendari macchina (CLCCALMA) del periodo.
Menu¶
Magazzino > Produzione > Cicli di Lavorazione > Archivi > Giornate Lavorative
File e tabelle¶
| File | Tipo | Descrizione |
|---|---|---|
| FEURTAB | Parametri | File parametri di ambiente |
| CLCCALEN | Indicizzato | Calendario lavorativo per magazzino/reparto |
| CLCCALMA | Indicizzato | Calendario lavorativo per macchina |
| COGMAGAZ | Indicizzato | Anagrafica magazzini (lettura/decodifica) |
| CLCANAMA | Indicizzato | Anagrafica macchine (lettura/decodifica) |
Copybook¶
File e select¶
feurtab.fd,cogfiles.cpy— File parametricogq26.select,cogq26.fd,cogq26.wrk— Generati dal Screen Designercogq26-01.scr— Screen della mascheracogq26.decla— Declarativescogq26.prc— Procedure I/O sui file
Working-storage standard¶
wgrave.cpy,wnscr.cpy,wopenf.cpy,wstato.cpy,cogazien.cpy
Utilita'¶
utilq07.cpy,utilq08.cpy— Strutture per i pop-up di ricerca magazzini/macchineutilw36.cpy— Aiuto magazziniutils52.cpy— Aiuto data (calendario popup)utilu20.cpy— Edit campo numerico (ore)
Linkage¶
wcont.cpy,wcont1.cpy— Stringhe di comunicazione
Procedure¶
grave.cpy,mmmask.cpy,opengen.cpy,stato.cpy,stato1.cpy,winmsg.cpysendq07.cpy,sendq08.cpy,sendw36.cpy— Chiamate ai pop-up di aiuto
CALL¶
Il programma non effettua CALL esplicite a sottoprogrammi: la presentazione e' interamente sulla screen cogq26-01. Le funzioni di aiuto sono richiamate via PERFORM send-w36/send-q08 definite nei copybook sendw36/sendq08.
Logica di elaborazione¶
- Apertura (
apri): inizializzazione standard, apertura file, definizione tasti funzione (F3 conferma, F8 aiuto, F8 calendario). - Ciclo principale (
a4): pulisce i campi e prepara la maschera. - Accept sequenziali:
a-tm-data-da/a-tm-data-a— date inizio/fine (con popup calendario viautils52)a-tm-mag— magazzino (popup ricerca viasendw36)a-tm-mac— macchina (popup ricerca viasendq08)- Conferma testata (
a-richiesta-conferma): valida che almeno uno fra magazzino e macchina sia presente, richiamax-imposta-confermache invoca i singolix-controlla-*. - Accept ore giornaliere (
a-tm-day-ore1..a-tm-day-ore7): per ciascun giorno della settimana, accept con edit numericoutilu20. Controllo singolo: ore <= 24. - Conferma finale (
a-fine-dati): chiamax-controlla-dati, poiacc-conf. - Aggiornamento:
- Se
tm-mac = spaces: aggiorna calendario di magazzino (agg-t-mag) e propone propagazione su tutte le macchine (agg-tutte-mac). - Altrimenti: aggiorna solo il calendario della singola macchina (
agg-s-mac). - Torna ad
a4per un nuovo intervallo o ESC per uscire.
Aggiornamento calendario magazzino (agg-t-mag)¶
- Verifica esistenza calendario via
rd-clccalencon chiave (cal-mag, cal-data). - START su CLCCALEN con chiave (mag, data inizio), READ NEXT fino a data fine.
- Per ogni record con
cal-tip not = "F"(non festivo): in base acal-day(1..7), aggiornacal-orecon il valore corrispondente del giorno della settimana. - REWRITE record.
Propagazione su tutte le macchine (agg-tutte-mac)¶
- Conferma utente con
acc-conf-custom. - Loop con
st-clccalma-notmin-chia1+rdnxt-clccalmasu tutto il file CLCCALMA, filtrando per data nell'intervallo e tipo non festivo.
Aggiornamento singola macchina (agg-s-mac)¶
- Stesso schema di
agg-t-magma sulla tabella CLCCALMA con chiave (cml-mac, cml-data).
Struttura dati in memoria¶
tab-maschera:
tm-data-da (PIC 9(08)) — data inizio (aaaa-mm-gg)
tm-data-a (PIC 9(08)) — data fine
tm-mag (PIC X(01)) — codice magazzino
tm-mag-des (PIC X(40)) — descrizione magazzino
tm-mac (PIC X(05)) — codice macchina
tm-des-mac (PIC X(35)) — descrizione macchina
tm-week:
tm-day-ore1..tm-day-ore7 (PIC 9(02)V99) — ore per ciascun giorno
Note tecniche¶
- Il programma usa lo stile GUI con accept campo per campo (non a griglia).
- Usa intensivamente
GO TOper la navigazione fra accept (codice legacy pre-convenzioni). - L'aggiornamento del calendario interpreta
cal-day/cml-daycome indice del giorno della settimana (1=lunedi', 7=domenica). - I record con
cal-tip = "F"(festivo) sono saltati: l'orario standard non sovrascrive i giorni festivi configurati. - L'aggiornamento massivo non crea il calendario se mancante: lo segnala soltanto.