Vai al contenuto

AGLANCIO_GIO - Scheduler sincronizzazione (variante con seed ARPSTPRC)

Identificazione

Campo Valore
Sorgente cbl/aglancio_gio.cbl
Program-ID aglancio (stesso ID del programma base)
Righe ~2.512
Tipo Subroutine (mmsubw.cpy), always-on, ciclo continuo
Interfaccia cobol AGLANCIO_GIO istanza_NN (parametro LINKAGE aglancio-linkage, pic x(20))

Funzione

AGLANCIO_GIO e' una variante di AGLANCIO, lo scheduler di sincronizzazione tra il gestionale e il database PostgreSQL KPN di AreaAPP. Il suffisso _gio indica un uso giornaliero: e' pensato come slot specializzato che, prima di avviare il normale ciclo di scheduling, si assicura che ogni processo del catalogo ARPPROC abbia una corrispondente riga di stato in ARPSTPRC.

Salvo la modifica descritta sotto, il programma e' identico ad AGLANCIO: stesso program-id, stessi parametri di avvio e linkage, stessi file/SELECT, stesse tabelle PostgreSQL (ARPAZIEN, ARPPROC, ARPSTPRC, ARPPRCSCHED, ISTANZESYNC, AGLSTORICOISTANZA), stessi copybook, stesse chiamate esterne, stesso ciclo principale, gestione istanze, standby, spegnimento, keepalive e logging. Per la descrizione completa di tutti questi aspetti fare riferimento alla scheda AGLANCIO.


Differenza rispetto ad AGLANCIO: seed di ARPSTPRC

L'unica differenza funzionale e' un blocco aggiunto in testa al paragrafo m-cerca-istanze-attive (righe ~1388-1418), eseguito prima della consueta scansione di ARPPROC per la ricerca delle istanze attive.

INSERT bulk dei processi mancanti (eseguito)

Con log "Inserimento Procedure mancanti...", il programma esegue via SQL diretto (canale arpstprc-sql) un inserimento massivo che crea in public.arpstprc una riga per ogni processo presente in public.arpproc che non ne abbia gia' una:

INSERT INTO public.arpstprc (a_stpr_azi, a_stpr_id)
SELECT $1::character(6), a_proc_id
FROM public.arpproc
ON CONFLICT (a_stpr_azi, a_stpr_id) DO NOTHING;

Il parametro $1 e' il codice azienda (tm-cfg-cod-azienda -> a-stpr-azi). La clausola ON CONFLICT ... DO NOTHING rende l'operazione idempotente: i record gia' esistenti non vengono toccati. In questo modo, quando un nuovo processo viene aggiunto ad ARPPROC, la variante _gio ne allinea automaticamente lo stato in ARPSTPRC senza richiedere un intervento manuale.

Terminato l'INSERT (log "Ricerca istanze attive..."), il flusso prosegue esattamente come in AGLANCIO: initialize a-proc-rec, scansione di ARPPROC, popolamento cache processi e forzatura automatica delle istanze in base all'ID processo.

Nota tecnica non eseguita (placeholder)

Subito dopo l'INSERT, nel sorgente sono presenti (righe ~1420-1472) uno statement SQL PostgreSQL come stringa letterale seguito dal marcatore QUI. Si tratta di una bozza non eseguita (apparente work-in-progress): una CTE WITH NuoveIstanze AS (...) UPDATE public.arpstprc ... che tradurrebbe in un unico UPDATE SQL la logica COBOL di forzatura istanze (processi standard su istanza 80/0 in base al modo di scheduling, 40000-49999 -> 90, 90000-99999 -> 91, 50000-50999 -> 92, 51000-51999 con istanza 0 -> 99 "db frontiera"), applicando l'aggiornamento solo quando l'istanza calcolata differisce da quella attuale. Questo blocco non e' operativo: la forzatura delle istanze continua a essere eseguita dalla logica COBOL di m-cerca-istanze-attive come nel programma base. E' verosimilmente lasciato come nota per una possibile ottimizzazione futura.


Note

  • Programma di servizio (subroutine always-on): non compare in prog.txt, non ha documentazione utente dedicata.
  • Per scheduling, standby, spegnimento, statistiche, file di controllo, configurazioni COGCNF e diagrammi vedere la scheda base AGLANCIO e la panoramica Scheduler KPN.