ℂ
Cobol
. Html
. Debug
. Note
. Db2
. Oracle
. PostgreSql
. Video
. Job S. & M.
Javascript
. Calendar
.. overview
.. function
Vue
. overview
AngularJS
. overview
React
. overview
. Contact us
|
Future is here
"All your dream projects can become reality"
|
Perché non guardare i costi ed aumentare l’efficienza
| |
|
| |
|
(Il Business Services e Web Service realizzati in Cobol)
| |
Tutti i prodotti realizzati con Cobol e Html sono
utilizzabili su qualsiasi elettrodomestico dotato di brouser, da
decenni funzionano su smartphone, sulla tv, sul frigorifero, senza nessun "driver",
senza gli aggiornamenti quotidiani.
I programmi ed il profilo utente controllano ogni elemento della pagina
nel senso di visibilità, modificabilità, focus eccetera. Invece
i colori i fonts la mobilità tra le pagine, sono completamente liberi.
La grafica è separata della gestione,
le pagine html sono separate dai programmi, sono a se stanti,
possono essere completamente variate, punto fondamentale da rimarcare,
le pagine sono pilotate, tutto è deciso nei programmi,
la pagina chiede, il programma dispone. Le pagine sono la proiezione e non
vincolano la navigazione. Mediamente nei progetti gestionali l’interfaccia
utente (UI, User Interface) non arriva alle due cifre e non deve vincolare a
tortuosi artifici di mobilità e gestione dei dati.
Avete in interfaccia a caratteri (3270)?,
per trasformarla in Html, basta un click, più
di un quarto di secolo di esperienza, tempi di riposta, manutenzione
nell’ordine di frazione nel confronto con altri linguaggi.
Confronto con altri linguaggi,
Oggi i linguaggi di moda sono OOP, vecchi di tre decenni pensati per CPU, in
arretrato di tre generazioni, nel frattempo siamo passati alle GPU ed utilizziamo
le NPU, dove riempiono le lavagne ed hanno delle significative caratteristiche,
non riducono:
(1) i tempi di sviluppo
(2) i tempi di calcolo
(3) i tempi di manutenzione
(4) i tempo di ingegneria del software.
La programmazione OOP è perfetta per tematiche semplici, scolastiche, il
punto due riassume, ma, Voi avete mai visto un giocoliere o un lanciatore di
coltelli che si trova variati i suoi oggetti. Un esempio di OOP: se non hai la
versione 17 non parte il Developer, ne segue il punto:
(5) si è diventati "versione dipendenti".
(6) Costretti ad utilizzare svariati prodotti di gestione delle caches, razzolare
nell'analisi dei log, debug off-line, decine e decine di librerie che nessuno
conosce il contenuto, ... eccetera.
Riflessioni,
Sicuramente è bello avere oggetti a fisarmonica con decine di attributi ed
usarne solo alcuni, ordinati a piacere ma non è senza controindicazioni. Cosa
cambia tra una Copy ed una Classe ... tra una Call ed un Package? Sicuramente
cambia alla chiusura della Call ed aspettare il ritorno di un messaggio, il
return-code di ogni istruzione e la gestione delle eccezioni, le pagine html gestite
dal grafico e la matassa inguardabile ed ingestibile negli altri casi.
|
|
Debug essenziale
(il cobol controlla il cobol) e Debug Z/Os |
< |
|
>
| |
Il valore aggiunto che vi offriamo senza ulteriore
tools o aggravi:
Debug essenziale, realizzato con solo Cobol - "free".
Per le funzioni web http bisogna attivare online il punto di partenza,
(cambiando url da .../COBWEB.cgi?1?.. a .../COBWEB.cgi?3?..) da un
terminale remoto si può innescare il debug, come nelle immagini sopra
riportate. Il dizionario dati, utilizzato per vedere o modificare il contenuto dei
dati è realizzato in rexx, analizzando i sorgenti le copy e le include.
In alternativa per ambiente Cics-TS si può utilizzare il debug Ibm, prodotto
completo e sofisticato, intercetta le transazioni web in debug, dando la massima
operatività ed in qualsiasi momento rilascia il controllo all’utente.
La qualità del prodotto è direttamente proporzionale alla qualità
del debug, alla modalità e tempestività d'intervento.
Comandi Attivi:
BOTTOM ⇒ si posizione in coda al listato del programma
CLEAR ⇒ cancella la "variabile + valore" messo in evidenza con MONITOR
FIND/F + "valore" ⇒ ricerca nel programma la scritta
HELP ⇒ riassume i comandi e funzioni attive
MONITOR ⇒ tiene in evidenza il contenuto della "variabile + valore",
nel caso di una struttura mostra le enne righe dei singoli campi
MOVE "valore"/variabile1 TO variabile2 ⇒ imposta il contenuto ("valore") della variabile2
TOP ⇒ si posiziona all'inizio del listato del programma
Funzioni Attive:
f1 ⇒ elenca le funzioni attive
f2 ⇒ avanza di uno step
f3 ⇒ chiude il debug
f4 + il cursore sul campo ⇒ visualizza il contenuto
f5 + scritta in "command line" ⇒ ricerca nel listing
f6 + cursore in "prefix line" ⇒ attiva il breakpoint o lo toglie se ripremuto
f7 ⇒ si sposta di una pagina all'indietro
f8 ⇒ si sposta in avanza di una pagina
f9 ⇒ avanza fino allo "stop run" o al prossimo breakpoint
f11 + il cursore sul campo ⇒ visualizza il contenuto del livello 01
f12 ⇒ retrieve dei comandi eseguiti
|
|
Note e Struttura
All'inizio degli anni 70 J.D. Warnier pubblicava: definito l'input
e l'output il programma è automaticamente definito. Negli anno 90 una seconda
ondata statunitense definì la "The Mythical Man-Month", metrica con i fattori
per linguaggio e metodologie. Il nulla ha preso consistenza, se non hai, se non
usi il framework, se non usi un accrocchio per scrivere un html, se non produci un
software su librerie fluttuanti sei antiquato (Mhmm, un palazzo senza fondamenta).
Il Cobol ripensato e riorganizzato come qualsiasi progetto hardware,
non pensate alla fantasia di un romanziere o alla ragnatele di un D.B. relazionale,
dobbiamo vedere il software come un chip fluido, multistrato e multi aree comunicanti,
semplificando come enne scacchiere, dove gli elementi sono solo due, (1) le Routine
(oggetti) ed (2) i Programmi. I Programmi hanno una sola struttura principale
chiusa, chi assembla riempie ogni singola area con le funzioni di quell'area, per
esempio:
- richiamo routine lettura pagina
- ricezione dati dalla pagina e riempio area D.B.
- richiamo routines di calcolo
- componi stringa variabili per la pagina
- compone permessi dei singoli campi
- pagina successiva
- primo accesso
- accesso al D.B. per lettura singola
- ecc. ecc.
Le aree non richieste rimangono vuote, gli interventi di variazione e manutenzione
sono di immediata individuazione. Le Routines svolgono una funzione specifica per
esempio: la routine "merge parser", della stringa variabili alle pagine.
La filosofia gestionale è nata in ambiente
Z/Os, pensata per essere trasportata e scalata fino ad un portatile.
Il lato utente necessita del solo browser, per i nostalgici neanderthaliani (o
per giusta causa) di una stampante.
Come ambiente di sviluppo, presentiamo la versione Linux, dove si hanno meno
vincoli e di maggiore interesse. Si consideri che in tutti i casi
l’interfaccia utente non è sviluppata in ambiente Mainframe per
motivi di semplicità e facilità dei test.
Due oggetti fondamentali per il dialogo tra la pagina ed i programmi sono: (A)
il parser dei campi variabili con la pagina ed invio pagina al browser (le
pagine html sono dei file distinti dai programmi),
(B) la ricezione della pagina al programma (passaggio dalla stringa alle singole
variabili) equivalente per tutti gli ambienti.
Due semplici programmi in Cobol Linux e due funzioni del Cics-TS nel caso di Mainframe.
Json e Xml
Dovete creare file Xml o Json, semplicissimo, configurate per esempio con il GnuCobol
le librerie, nel nostro caso bastano le ultime tre:
sudo apt install curl libgmp-dev db-util db5.3-util libdb5.3++-dev libdb5.3-dev gawk
clang libdb5.3++ ncurser libcob4-dev libcob4t64 libgmp-dev libgmpxx4ldbl
libncurses-dev libxml2 libjson-c-dev libjson-5c
tutte richieste durante la configurazione del Cobol, nel folder del software
procedere con:
./configure --with-xml2 --with-json
make
sudo make install
Nel programmi potete usare le due istruzioni: JSON GENERATE e XML GENERATE che
trasformano la copy in struttura.
Cobol o "C"
Abbiamo sempre parlato di Cobol ma usando GnuCobol dovremmo parlare di
"C" (Gcc) vista la conversione automatica prima della compila.
Cobol e Java
Ovviamente i due linguaggi non sono mutuamente esclusivi, la soluzione dove il Cobol
utilizza Java è la condizione ottimale, si sfruttano al meglio la
potenzialità di entrambi, versione di Cobol tipo isCobol o Micro Focus danno
una ricca documentazione.
Riflessione; ma neanche Oracle riesce a tenere il passo con le versioni di Java,
(esempio SqlDeveloper) forse nella vostra immensa saggezza non vi sentite nel
cinodromo.
Cosa dobbiamo installare:
- un Cobol (GnuCobol o ...)
- un framework (Komodo, Ibm.Openeditor, Opencobolide, VSCodium, V.S.C. Aibber.base, ecc.)
- per il substrato base (Aibber.base per compile, gestione folder, ecc.) di
gestione servono: Regina (rexx), The (Hessling editor con xclip (X11) e
wl-clipboard (Wayland)), Perl
- un web serser http (Apache2 o ...)
- un database (Db2, Oracle, PostgreSql e ...) ovviamente se il gestionale lo richiede
| |
Post Scriptum:
Convertire un unload di tabella da Mvs (ebcdic) in (ascii);
La tabella contiene campi Binary e Comp-3, come si procede? La versione di cobol (GnuCobol 3.2)
non contempla "RECORD IS VARYING IN SIZE ..", bisogna intervenire sulla "PIC " del file di
input, il programma generalizzato di conversione diventa specifico con:
(1) correggere la "SELECT .." e "FD .." senza parametri
(2) "PIC " lunghezza + 1 del tracciato da MVS
(3) sezionamento file da MVS con "aibbercopy.pl"
(4) "INSERT" in tabella direttamente nel programma di conversione >
( Unica soluzione ammessa )
Unload-file (ebcdic):
./bin/aibbercopy.pl 113 ./tabelle comu2.binary comu2.113
Utility (NTEBCDIC):
....
SELECT ARCHIN ASSIGN TO EXT-I-FILES
FILE STATUS IS FILE-STAT.
....
FD ARCHIN.
01 REC-ARCHIN PIC X(114).
....
Structure of the table:
regina ./bin/ll_db21.rexx 2 ./source/include/RSCO2DCL.sqb ./str/comu2.str
Input parameters (NTEBCDIC.src):
....
-157- file
CODE=E037-UTF8
LRECL=113
FILE-INPUT=/home/luc/d/cobol/tabelle/comu2.113
FILE-OUTPUT=/home/luc/d/cobol/tabelle/comu2.ascii
FILE-STRUCTURE=(A),00,00,/home/luc/d/cobol/str/comu2.str
....
Run:
./loadlib/NTEBCDIC A ./bin/NTEBCDIC.src
Utility (aibbercopy.pl):
#!/usr/bin/perl -w
# ----------------------------------------------------- #
# - Split file (Aibber) - #
# ----------------------------------------------------- #
# - - - -
# example:
# perl ./aibbercopy.pl 143 ./temp cl040.txt cl040.sql
# parms: length folder file-binary "file-binary + \n"
# - - - -
# $Args = $#ARGV + 1;
$lrecl =$ARGV[0];
$dirmain=$ARGV[1];
$filein =$ARGV[2];
$fileout=$ARGV[3];
my($buf)="";
# - - Open
$filename = "$dirmain/$filein";
open(FILEIN, "<$filename")
or die goto FINE_MAIN_ERROR;
open(FILEOUT, ">$dirmain/$fileout")
or die "can't redirect FILEOUT";
select(FILEOUT); $| = 1; # make unbuffered
#
#-----Loop (1) Lettura per Split--------------#
#
$loop = 1;
$linee = 0;
while ($loop > 0) {
$bytes = read( FILEIN, $buf, $lrecl);
if ( $bytes < 1) {
$loop -= 1;
} else {
#---scrive il file di output---------------#
print FILEOUT "$buf\n";
$linee += 1;
} #--- end else
}; #--- end while (loop)
# - - Loop (1) Fine
# - - Close files
close(FILEIN);
close(FILEOUT);
$word = sprintf "%d", $linee;
$line_out = "Ok file::$filename Linee=$word";
goto FINE_MAIN;
FINE_MAIN_ERROR:
$line_out = "Ko file::$filename -- $! -- $0 (Errore +100)";
FINE_MAIN:
# print { $OK ? STDOUT : STDERR } "$line_out\n";
print STDOUT "$line_out\n";
# undef @riga;
exit 0;
# ---------------------------------------------------------- #
# http://www.tutorialspoint.com/perl/perl_read.htm
# http://perldoc.perl.org/index-overview.html
# ---------------------------------------------------------- #
|
|
|
Install Db2-10.1 express-c su Client Linux (Ubuntu ram 32G)
Usato in modalità integrato nei programmi ( embedded database ),
il setup del database e delle tre user è abbastanza intuitivo, all’inizio il
problema della "share memery" mi ha fatto pensare di cestinare questo D.B., ma come sovente
succede è una banalità. Il D.B. si riscatta con una messaggistica
eccellente, nelle anomalie fatte durante lo sviluppo dai programmi Cobol. Dal Manzoni
"L’uom che nacque e visse senza pecca", il Bind dei programmi è un ostacolo
gratis, inutili e senza senso durante l’esecuzione dei programmi, con
errore -805 e/o -818, costringendo a tortuose manovre per i debugs.
Attenzione: i formati binary non funzionano, da Cobol a Database.
Librerie richieste:
sudo apt-get install libpam0g:i386 libaio1
sudo apt-get install ksh
sudo apt-get install lib32stdc++6
sudo apt-get install libpam0g:i386
sudo apt-get install libstdc++6
--sudo apt-get install libaio-dev
--sudo apt-get install gcc-4.9
controlla e abilita il link, per esempio:
sudo find / -name "libpam.so*"
sudo ln -s /usr/lib/i386-linux-gnu/libpam.so.0 /lib/libpam.so
./db2prereqcheck
se tutto okay, con utenza di root:
(selezionare solo lingua inglese altrimenti serve il cd)
./db2setup -l /tmp/db2setup.log -t /tmp/db2setup.trc
aggiornare .profile della user di lavoro:
# set PATH db2 bin if it exists
if [ -d "/home/db2inst1/sqllib/bin" ] ; then
PATH="$PATH:/home/db2inst1/sqllib/bin"
fi
if [ -d "/opt/ibm/db2/V10.1/bin" ] ; then
PATH="$PATH:/opt/ibm/db2/V10.1/bin"
fi
LD_LIBRARY_PATH=/home/db2inst1/sqllib/lib64
export LD_LIBRARY_PATH
aggiornare /etc/profile:
DB2DIR=/opt/ibm/db2/V10.1
export DB2DIR
LD_LIBRARY_PATH="/home/db2inst1/sqllib/lib64"
export LD_LIBRARY_PATH
DB2INCLUDE=/home/luc/d/cobol/source/include
export DB2INCLUDE
aggiornare /etc/passwd per le tre user con la bash,
per errore di share memory:
sudo /opt/ibm/db2/V10.1/instance/db2idrop db2inst1
sudo /opt/ibm/db2/V10.1/instance/db2icrt -u db2fenc1 db2inst1
accedere e create il vostro dbpreferito:
su - db2inst1
db2start
db2 create database dbpreferito automatic storage yes
db2 get db cfg for dbpreferito
db2 update dbm cfg using SVCENAME 50000
db2set db2comm=tcpip
db2
connect to dbpreferito
GRANT DBADM ON DATABASE TO user your_user
GRANT ACCESSCTRL, BINDADD, CONNECT, CREATETAB, CREATE_
EXTERNAL_ROUTINE, CREATE_NOT_FENCED_ROUTINE, DATAACCESS,
DATAACCESS, EXPLAIN, IMPLICIT_SCHEMA, LOAD, QUIESCE_CONNECT,
SECADM, SQLADM, WLMADM ON DATABASE TO user your_user
QUIT
La configurazione base è completata, controlliamo:
su - db2inst1
db2level
db2ls
db2licm -l
db2set -all
Command line: clpplus
Suggerimento per il debug:
cmp -b -l (program).bnd (program-debug).bnd ⇒ (Δ2) (Δ1)
se (Δ1) unica presenza in (program-debug).so lanciare:
perl -i -pe 's{Δ1}{Δ2}g' (program-debug).so
|
|
|
Install Oracle-xe-21c su Client Linux (Ubuntu ran 32G)
Usato in modalità integrato nei programmi ( embedded database ),
non avete un IP statico? ma dinamico, lanciare il comando "ip a"
prendere
il valore di inet: nella sezione della scheda di rete (per esempio 192.168.1.108).
Correggere in: impostazioni di rete, modalità ipv4, con manuale, indirizzo
uguale 192.168.1.108 e gateway 192.168.1.1, aggiungere al dns il valore del gateway,
con utente di root correggere i valori in "/etc/netplan/"
il più recente ...yaml come:
network:
version: 2
ethernets:
NM-dfghjk9-8927-6754-22d3-0g78907q6613:
renderer: NetworkManager
match:
name: "enp2s0"
dhcp4: true
# addresses:
# - "192.168.1.108/24"
nameservers:
addresses:
- 1.1.1.1
- 1.0.0.1
- 192.168.1.1
dhcp6: true
(eccetera ...)
Attenzione: i caratteri (#) contano, sono la chiave di volta, permettono a
Oracle-xe-21c di vedere IP statico ed il sistema operativo di funzionare in Dhcp,
fare un riavvio (del servizio) e voilà.
da rpm a deb: sudo alien -c -d --fixperms oracle-database-xe-21c.rpm
installare: sudo dpkg -i ./oracle-database-xe-21c.beb
completare la user oracle: cambiare il terminale in "/etc/passwd"
in bash, creare il folder di default "/home/oracle" cambiare
"chown -R oracle:dba /home/oracle" copiare da un altro utente
".profile" e completarla con:
if [ -d "/opt/oracle/product/21c/dbhomeXE" ] ; then
PATH="$PATH:/opt/oracle/product/21c/dbhomeXE"
export PATH
fi
if [ -d "/opt/oracle/product/21c/dbhomeXE/bin" ] ; then
PATH="$PATH:/opt/oracle/product/21c/dbhomeXE/bin"
export PATH
fi
export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE
export ORACLE_BASE=/opt/oracle/product/21c/dbhomeXE
ORACLE_SID="XE"
export ORACLE_SID
accedere e completare ".bashrc" con:
cd
if [ -d "/opt/oracle/product/21c/dbhomeXE/bin" ] ; then
PATH="$PATH:/opt/oracle/product/21c/dbhomeXE/bin"
export PATH
fi
. oraenv1
dove oraenv1 clone di oraenv con eliminata la selezione del SID, imposto fisso
"XE", controlliamo i gruppi della user con:
"cat /etc/passwd |grep /home |grep -v false |cut -d: -f1 |xargs groups
|grep oracle" otteniamo la lista (oinstall dba oper backupdba dgdba kmdba
racdba) se tutto sistemato e provato possiamo installare il DB.
configurazione: da root,
edit: "/etc/hosts" e cambiare l'ip host in 192.168.1.108
run: "/etc/init.d/oracle-xe-21c configure"
controlli finali: eseguire da brouser "https://localhost:5500/em/"
con user: system e (pw) quella impostata durante il passo di install, provare:
"sudo -S /etc/init.d/oracle-xe-21c start"
"sudo -S /etc/init.d/oracle-xe-21c stop "
"sudo -S /etc/init.d/oracle-xe-21c status"
da una procedura per esempio in rexx:
"push (pw)"
"sudo -S -i -u oracle lsnrctl status"
ed il listener/sql da utente oracle:
"lsnrctl stop"
"lsnrctl start"
"lsnrctl status"
"sqlplus / as sysdba"
"show pdbs;"
"select * from v$version;"
"select instance_name, status, database_status from v$instance;"
da un gestore per esempio DBeaver impostando i dati (host: 192.168.1.108 port: 1539
db: XE, SID, "Oracle Database Native", user: sys, pw: (pw), role: sysdba).
Con il comando:
sudo xhost +si:localuser:oracle
sistemiamo il display, vedi dbca, xclock, xeyes, ultimo neo da sistemare il
clipboard manager, ..
Se pensate di utilizzare il SQL*Loader con file csv state sbagliando, e' solo
per tabelle semplici senza campi numerici e campi date.
Attenzione:
la data del timestamp sarà nel formato: 'DD-MON-RR' per le interrogazioni al
di fuori del perimetro, per esempio con RexxSql.
|
|
|
Install PostgreSql su Client Linux (Ubuntu ram 32G)
Usato in modalità integrato nei programmi ( embedded database ),
spettacolare la semplicità di primo approdo, tutto si svolve con fluidità
e semplicità. Parlando di un prodotto che supporta più database il
primo ostacolo è dovuta alla normalizzazione delle include sql, le built-in
fanno il loro lavoro, peccato per i cursori, la declare deve essere spostata vicino
alla open, comporta un supplemento di controlli.
Le operazioni sql risentono dei linguaggi nativi risultano notevolmente più
criptiche rispetto all'approccio dei precedenti database.
Un ulteriore difficoltà è la completa incomprensione della messaggistica,
le anomalie del precompilatore sono "mitiche" non esistono riferimenti ne al
Database ne al sorgente, stessa sorte per il compilatore. Sicuramente il suo utilizzo
è orientato verso linguaggi che non sanno gestire le chiavi tradizionali e si
appoggiano alle chiavi surrogate, con la tecnica (JUnit): se raddoppi semplifichi!? O meglio
non capisco ma ho scritto.
Il database è orientato verso un utilizzo esclusivo come Open Database Connectivity
(ODBC).
|
|
|
Esempi di Cobol con Apache2 e Db2/Oracle
( un click sulla descrizione per attivare il Link al Video )
Debug realizzato con il solo Cobol
Db2: alcune pagine, le più vintage (qualche ritocco alla fine
dello scorso secolo):
Oracle: personalizzazione dell'aspetto (con più di 15 aree):
Debug versione 2008 con interfaccia The-editor (Hessling):
|
|
|
Job Scheduler & Monitor - Royalty-free
Semplice e completo, per ulteriore semplificazione esponiamo la versione a caratteri
per Linux / Unix. Il prodotto consente la gestione automatica dei processi elaborativi.
Si possono controllare e governare tutti i processi. Il prodotto è composto
da tre sottosistemi, uno per la schedulazione (scheduler), uno per il controllo
(controller) dei processi e uno per monitorate (monitor). La realizzazione con
il linguaggio PERL ne permette la trasportabilità su tutti i sistemi operativi.
Unico limite è la fantasia.
A) Lo schedulatore (Scheduler) Esegue la sottomissione delle reti nel
momento stabilito, con i campi "giorno della settimana" ed "ora". Il giorno della
settimana assume i valori da "1" a "7" per indicare i giorni da "lunedì" a
"domenica" o il valore "X" per tutti i giorni. Le reti sono innescate se "flag status"
è attivo (A=Attivo, S=Sospeso). Tutti i processi con cadenza maggiore della
settimana sono regolati dal "flag festivo" che identifica in modo univoco le condizioni
di esecuzione nell'arco dell'anno, della settimana, ecc. ..
"flag festivo"
Per completare la visione si ricorda: 1) la tabella della frequenza dei
controlli, variabile a 1 secondo a 86400, 2) la tabella dei giorni festivi dell'anno.
B) La Rete (controller)
Il processo sottomette e controlla l'esecuzione dei Job della "Rete".
Per meglio comprendere quanto segue bisogna vedere la compilazione di una rete:
Il Successivo=0 per i blocchi (Sequenza=) 4 e 6 crea una piramide rovesciata di uscita,
nell'esempio, come si allarga la base in egual modo si può restringerla.
Il Job per essere eseguito deve soddisfare le condizioni iniziali (controllo),
si conclude quando soddisfa la condizione finale (controllo di uscita), bisogna
vedere il Job composto da tre step. Anche qui abbiamo i flag "status" e "festivo"
come nella sezione precedente, se lo Status "S=Sospeso" sono cancellati anche tutti
i suoi derivati. Il flag "controllo" permette l'esecuzione in funzione dello status
finale dei chiamanti e partire se conclusi in "OK" o "KO".
I controlli di inizio e fine sono procedure che leggono o calcolano o analizzano
situazioni o controllano lo status di uscita, sono libere di essere ampliate a
piacere al di fuori del set base.
C) Lo stato dei processi (monitor)
Con il comando è possibile: a) vedere lo stato delle reti b) vedere lo stato
della singola rete c) chiudere l'esecuzione della rete d) congelare l'esecuzione
della rete e) scongelare l'esecuzione della rete. Nei casi a,b mettendo il numero
di giorni negativi si vedono le esecuzioni nei giorni -1,-2, ... per esempio con
"j2mgr" si vedono le esecuzioni delle reti del giorno, con "j2mgr -1" le esecuzioni
del giorno precedente ecc. Mettendo il nome della rete, esempio "j2mgr 0 ReteEsempio",
mostra il/i dettaglio/i dell'esecuzione della rete nel giorno corrente, ecc.
Le reti in esecuzione possono essere congelate con il comando:
"j2mgr.pl WAIT ReteEsempio"
e riattivate con:
"j2mgr.pl GO ReteEsempio"
Per terminare il controllo e le successive esecuzione
dei Job della rete eseguire il comando
"j2mgr.pl STOP ReteEsempio"
si ricorda che le lettere maiuscole e minuscole
hanno valore diverso, ReteA è diversa da reteA ecc.
Q) qualche esempio
3) Controllo (Lista) reti eseguite sette giorni prima
j2mgr.pl -7
6) Controllo (Lista) rete eseguita sette giorni prima
j2mgr.pl -7 ReteEsempio
17) Rete con shell script senza controllo esito
sendfat6 1 0 A N 0 0 0 E SCRIPT1 . NC j2control.pl /jcl /tmp
18) Rete che attende l'arrivo del file /tmp/bolle
sendfat4 1 0 A N 0 0 2 U PROGRAM1,a,ebmprod fw:/tmp/bolle OK j2control.pl /jcl /tmp
sendfat4 2 1 A N 1 0 0 U PROGRAM2,a,ebmprod . OK j2control.pl /jcl /tmp
sendfat4 2 2 A N 1 0 0 U PROGRAM4,a,ebmprod . OK j2control.pl /jcl /tmp
19) Rete che si interrompe se non esiste il file /tmp/bolle
sendfat4 1 0 A N 0 0 2 U PROGRAM1,a,ebmprod fe:/tmp/bolle OK j2control.pl /jcl /tmp
sendfat4 2 1 A N 1 0 0 U PROGRAM2,a,ebmprod . OK j2control.pl /jcl /tmp
sendfat4 2 2 A N 1 0 0 U PROGRAM4,a,ebmprod . OK j2control.pl /jcl /tmp
25) Schedulazione come caso 24 e per i mesi pari
X 20:00 ReteEsempio A Profilo1 G1.2.3.4.5,!M1.12,M2.4.6.8.10 j2control.pl /jcl /tmp
|
|
|
stop/start images
|
|