Vai al contenuto

COGQ30 - Calendario Ditta

Scopo

Gestione del calendario annuale di lavoro per ciascun reparto produttivo (magazzino). Per ogni giorno dell'anno mantiene il tipo (Normale, Prefestivo, Domenicale, Festivo) e le ore lavorative previste. E' la base per la pianificazione dei cicli di lavorazione e per il calcolo dei carichi macchina. Il programma propaga automaticamente le modifiche sui calendari di dettaglio delle singole macchine.

Magazzino > Produzione > Cicli di Lavorazione > Archivi > Calendario Ditta

File e tabelle

File Tipo Descrizione
FEURTAB Parametri File parametri ambiente
CLCCALEN Indicizzato I/O Calendario reparto (chiave: magazzino + aaaammgg)
CLCTABEL Indicizzato Input Orari standard reparto (chiave: tipo + cod), letto con tipo = 01
COGMAGAZ Indicizzato Input Anagrafica magazzini/reparti (filtrato su tipo = "M")
CLCCALMA Indicizzato I/O Calendario specifico delle singole macchine (per propagare festivita' / orario)

Le copybook delle chiavi includono clccalma.k01 come chiave secondaria.

Copybook

File e select

  • feurtab.fd, clccalen.fd, clctabel.fd, cogmagaz.fd, clccalma.fd
  • cogfiles.cpy, clccalen.cpy, clctabel.cpy, cogmagaz.cpy, clccalma.cpy

Working-storage standard

  • wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy

Utility

  • utilw36.cpy — Lookup magazzino tramite COGW36
  • utils52.cpy — Gestione anno tramite COGS52

Linkage

  • wcont.cpy, wcont1.cpy

Procedure

  • clccalma.k01, stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, open1.cpy, openq.cpy, mmmask.cpy, sendw36.cpy

CALL

Programma Descrizione
COGS52 Accept anno
COGW36 Aiuto magazzino (via sendw36.cpy)
DTPRG Conversione data > progressivo giorni
PRGDT Conversione progressivo giorni > data
FESTA Identifica festivita' fisse e Pasqua/Pasquetta (!)

Logica di elaborazione

  1. Selezione (apri, a00-1, a-00):
  2. Accept del codice magazzino (tm-cod) e lettura di cogmagaz con magz-tipo = "M".
  3. Accept dell'anno (tm-anno) tramite COGS52.
  4. Verifica orario standard reparto (find-ore):
  5. Lettura di clctabel con cta-tipo = 1, cta-cod = tm-cod.
  6. Se non esiste o tutte le ore della settimana sono zero, il programma blocca l'operazione e rimanda alla manutenzione Tabelle > Reparti di produzione.
  7. Controllo esistenza anno (a-00-loop, a-00-end):
  8. Start su clccalen con cal-mag = tm-cod, cal-aa = tm-anno, scorrimento finche' chiave matcha.
  9. Se nessun record trovato, chiede conferma e crea l'anno con b1-ins-anno.
  10. Inserimento anno (b1-ins-anno, b1-ins-loop, b11-ins-rec):
  11. Calcola progressivo del 1 gennaio con DTPRG, poi cicla giorno per giorno (PRGDT per ricostruire la data, FESTA per identificare festivita' civili/Pasqua).
  12. Tipi assegnati: F festa, D domenica, P prefestivo (sabato), N normale.
  13. Le ore vengono prese da cta-week (wdp-day) per i giorni P/N, zero per D/F.
  14. b2-pasqua segna come festa il giorno di Pasquetta (lunedi successivo al wdp-fes = '!').
  15. Visualizzazione mese (c-car-mese, disp-tab):
  16. Carica il mese corrente da clccalen in tab-giorni (matrice 6 x 7).
  17. Ogni cella memorizza giorno, tipo, simbolo, colore e ore.
  18. Navigazione (a-25, a-25f):
  19. Frecce per spostamento giornaliero.
  20. Pag su / Pag giu per cambio mese: salva il mese corrente con x1-agg-mese prima del cambio.
  21. F3: ciclo di rotazione del tipo del giorno (F -> P/D/N a seconda della posizione settimana -> F). Innesca agg-cal-mac-fest.
  22. F5: accept di un orario specifico per il giorno. Innesca agg-cal-mac-ore.
  23. Salvataggio (x1-agg-mese):
  24. Per ciascun giorno del mese in memoria con tg-gg <> 0, riposiziona su clccalen (rd-cal-lk) e fa rewrite aggiornando tipo e ore.
  25. Propagazione su macchine (agg-cal-mac-fest, agg-cal-mac-ore):
  26. Scansiona clccalma con start notmin-chia1, filtrando per anno/mese/giorno corrente del calendario master e aggiorna cml-tip o cml-ore. La propagazione dell'orario richiede conferma esplicita F3.

Struttura dati in memoria

tab-giorni:
  tg-sett occurs 6 (settimane del mese)
    tg-gio occurs 7 (giorni della settimana)
      tg-gg   PIC 9(02)  numero giorno
      tg-old  PIC X(01)  tipo originario (per controllo F = irreversibile)
      tg-tip  PIC X(01)  tipo corrente N/P/D/F
      tg-col  PIC 9(04)  colore
      tg-chr  PIC X(01)  simbolo
      tg-ore  PIC 9(02)V99 ore lavorative

Note tecniche

  • Codice legacy basato su carattere a 80 colonne, con GO TO strutturati e PERFORM ... THRU (precedente alle convenzioni attuali, non rifattorizzare in occasione di fix puntuali).
  • I colori (normale/prefestivo/domenicale/festivo) sono calcolati a runtime in base ai colori del tema (CW/CS).
  • Il record clccalen mantiene sia cal-tip (tipo corrente) sia cal-tip-rea (tipo originario): un giorno marcato festa "di fabbrica" resta tale anche se l'utente lo riporta a normale, tramite tg-old.
  • La modifica della festivita' su un giorno con tg-old = 'F' (festa permanente di fabbrica/Pasqua/festivita' civile) e' disabilitata.
  • La modifica del calendario su un giorno propaga sui calendari macchina solo per quel reparto, anno, mese e giorno (non sovrascrive informazioni di altri giorni delle macchine).