Vai al contenuto

COGQ50 - Simulazione Lancio di Produzione

Panoramica

Programma interattivo character-mode (maschera disegnata con box grafici inline, non da Screens) per la simulazione del lancio di un lotto di produzione su ciclo di lavorazione. Raccoglie i parametri (magazzino, articolo/disegno, quantita', tipo elaborazione, priorita', prima fase, date inizio/fine), valida i dati e delega la simulazione vera e propria a COGQ60. Non gestisce griglia paginata; tutta l'elaborazione avviene nel sottoprogramma chiamato.

Tipo: Programma interattivo character-mode (maschera hardcoded in working-storage).

Posizione nel menu

Menu Percorso
Magazzino Produzione > Cicli di Lavorazione > Operativo > Simulazione Lancio di Produzione

Struttura del programma

File e tabelle utilizzati

File/Tabella Tipo Descrizione
FEURTAB (cogfiles) Input Tabella parametri generali
COGMERCI Input Anagrafica merci (verifica esistenza articolo)
COGMAGA2 (cogmagaz) Input Anagrafica magazzini (verifica magazzino)
CLCTABEL Input Tabella cicli lavorazione (legge data consuntivo: tipo=0, cod=0)
CLCLAVOR Input Lavorazioni del ciclo (decodifica fase per visualizzazione)
CLCDISEG Input Disegni/cicli (ricerca per articolo e per disegno)

Copybook principali

Copybook Descrizione
feurtab.fd SELECT FEURTAB
cogmerci.fd SELECT COGMERCI
cogmaga2.fd SELECT COGMAGA2
clctabel.fd SELECT CLCTABEL
clclavor.fd SELECT CLCLAVOR
clcdiseg.fd SELECT CLCDISEG
cogfiles.cpy Record FEURTAB
cogmerci.cpy Record COGMERCI
cogmaga2.cpy Record COGMAGA2
clctabel.cpy Record CLCTABEL
clclavor.cpy Record CLCLAVOR
clcdiseg.cpy Record CLCDISEG
wstato.cpy Stato operazioni
wopenf.cpy Apertura file
wgrave.cpy Errori gravi
wnscr.cpy Gestione schermata
cogazien.cpy Dati azienda
utils22.cpy Utility ricerca merce S22 (COGS22)
utils52.cpy Utility date (COGS52)
utils60.cpy Utility selezione opzioni (COGS60)
utilq24.cpy Utility ricerca disegno (COGQ24)
utilq60.cpy Utility interfaccia COGQ60 (simulazione)
utilqs1.cpy Utility calendario macchine (COGQS1)
utilw36.cpy Utility ricerca magazzino (W36)
wcont.cpy / wcont1.cpy Area comunicazione chiamante

Variabili principali della maschera (tab-maschera)

Campo Tipo Descrizione
tm-mag X(01) Codice magazzino (spazio = tutti)
tm-merce X(09) Codice articolo (gru+sot+cod)
tm-mer-des X(30) Descrizione articolo (display)
tm-disegno X(10) Codice disegno
tm-qta 9(07) Quantita' da produrre
tm-prima-fase 9(04) Prima fase del ciclo da eseguire
tm-tip-ela X(01) Tipo elaborazione: "A"=Automatica, "M"=Manuale
tm-priorita X(01) Priorita': "!"=Altissima, "A"=Alta, "M"=Media, "B"=Bassa
tm-data-ini 9(08) Data inizio pianificazione
tm-data-fin 9(08) Data consegna richiesta
tm-data-cns 9(08) Data ultimo aggiornamento consuntivo (da CLCTABEL tipo=0)

Tabelle opzioni (per COGS60)

Tabella Opzioni
tab-opt-tip-ela "A01Automatica", "M01Manuale"
tab-opt-priorita "!02Altissima", "A01Alta", "M01Media", "B01Bassa"

Struttura name-files e name-files-q

Due strutture per passare i nomi dei file a COGQ60: - name-files (k-num-files=2): file con estensione 002 e 004 - name-files-q (k-num-files-q=3): file con estensioni 001, 002, 006

Chiamate a sottoprogrammi (CALL)

Programma Scopo
COGS22 Ricerca merce (campo articolo)
COGQ24 Ricerca disegno (F8 sul campo disegno)
COGS60 Selezione opzioni da lista (tipo elaborazione, priorita')
COGS52 Input data con calendario (date inizio e consegna)
COGQS1 Verifica calendario lavorativo macchine per la data inserita
COGQ60 Motore di simulazione lancio produzione (elaborazione principale)

Flusso di elaborazione

1. Inizializzazione (screen-0)

  • ctr-abil per abilitazione
  • open-files + open-files-cl (apertura separata file cicli)
  • rd-azi
  • Caricamento maschera hardcoded (mm-1 -> main-mask, dimensioni 11x77, posizione 7,2)

2. Input parametri (a4 -> a-05 -> a-10 -> a-15 -> a-20 -> a-30 -> a-40 -> a-50 -> a-55)

  • a4: reinizializza tab-maschera; imposta default (data da datasis, magazzino az-main-mag, qs1-opn='!')
  • Legge CLCTABEL tipo=0, cod=0 per tm-data-cns
  • a-05 (magazzino): accept tm-mag; F8 -> send-w36; se spazio -> "Tutti i magazzini"; altrimenti legge COGMAGA2
  • a-10 (articolo): chiama COGS22; se vuoto va ad a-15; altrimenti legge COGMERCI
  • a-15 (disegno): accept tm-disegno; F8 -> send-q24; se vuoto -> errore; cerca in CLCDISEG per disegno (chia2); se trovato -> legge COGMERCI per merce base
  • a-15-disp: cerca CLCDISEG per merce (chia primaria) -> carica tm-disegno
  • a-20 (quantita'): accept tm-qta; F5 -> a1-prima-fase; valida > 0
  • a-30 (tipo elaborazione): COGS60 con 2 opzioni (Automatica/Manuale)
  • a-40 (priorita'): COGS60 con 4 opzioni
  • a-50 (data inizio): COGS52; verifica tm-data-ini > tm-data-cns (altrimenti errore); chiama COGQS1 per verifica giorno lavorativo; se ore = 0 -> "giorno non lavorativo"; copia tm-data-ini in tm-data-fin
  • a-55 (data consegna): COGS52; verifica tm-data-ini <= tm-data-fin

3. Conferma e simulazione (a-90 -> COGQ60)

  • acc-conf per conferma finale
  • Inizializza util-q60, popola tutti i campi, chiama COGQ60
  • cancel 'COGQ60'
  • Va a fine

4. Selezione prima fase (a1-prima-fase)

  • Popup schermata screen-1 (6x55, posizione 13,10)
  • Accept del numero di fase
  • Valida esistenza in CLCDISEG tramite rd-clcdiseg-chia2 (disegno + numero + fase=0 + mac=spaces)
  • Se trovata: legge CLCLAVOR per descrizione; mostra fase e descrizione
  • Su F3: salva in tm-prima-fase; chiude popup

5. Chiusura (fine)

  • close-files
  • z-99-exit-program

Note tecniche

  • La maschera e' hardcoded in working-storage (01 mm-1) con box grafici DOS, non usa Screens/screen section.
  • COGQS1 e' richiamato con qs1-opn='!' la prima volta (inizializzazione calendario); le chiamate successive usano 'A' o 'B' a seconda dello stato qs1-opn.
  • Il file CLCDISEG ha due accessi: per merce base (chiave primaria: base+num+fase+mac) e per disegno (chiave secondaria chia2: disegno+num+fase+mac).
  • La costante k-program-id = "COGQ50" e' usata per prog-err e w-nome-hlp.
  • Tutto il calcolo di simulazione (occupazione macchine, date fase per fase) e' eseguito in COGQ60; COGQ50 e' solo un front-end di raccolta parametri.