Add new attachment

Only authorized users are allowed to upload new attachments.

This page (revision-1) was last changed on 25-Aug-2023 15:15 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 1 added 257 lines
%%(display:none)
{{{
WikiUp
}}}
/%
[{TableOfContents }]\\
!!! Introduzione\\
Lo script BCD è un motore di esecuzione di programmi, che condividono le stesse aree di memoria, con possibilità di ripetizione di azioni, esecuzioni condizionate, ecc...\\
Per motivi tecnici, in questo documento le tag di BCD sono precedute dai caratteri '..' In realtà esse vanno precedute da una coppia di due punti.\\
\\
!!! Variabili dello script\\
Sono presenti 20 variabili alfanumeriche (_&_01, _&_02, ... _&_20) e le variabili numeriche di puntamento alle 20 aree dello script:\\
%%quote
£T01 - £T20 : riempimento dell'area
£A01 - £A20 : puntatore dell'area
£I01 - £I20 : numero iniziale area ** definiscono una sezione o una
£E01 - £E20 : numero finale area ** scelta
/%
----
Sono presenti anche 10 flag (gestiti nei programmi come elementi di schiera) ed accessibili dallo script come (/01, /02, .. /10)\\
\\
!!! Istruzioni dello script\\
!! Blocco di azioni ripetute fino ad una uscita esplicita\\
%%quote
..DO
azione
azione
..ENDDO
/%
----
!! Salto incondizionato\\
%%quote
..ITER riparte dal ciclo DO in corso
..LEAVE esce dal ciclo DO in corso
..START va a inizio programma
..EXIT va a fine programma
/%
----
!! Blocco condizionato\\
%%quote
..IF <condizione>
azione
..ELSE
azione
..ENDIF
/%
----
!! Salto condizionato\\
%%quote
..IF <condizione> CM(xx)
dove xx = ITER, LEAVE, START, EXIT
con gli stessi effetti del salto incondizionato
/%
----
!! Condizione\\
%%quote
F1(xx) OP(yy) F2(xx)
dove xx = campo costante (max 15 caratteri) oppure variabile _&_x o £x
oppure variabile d'ambiente:
- %01 = £INZJT
- %02 = Nome dell'elemento BCD
- %03 = Classe dell'elemento BCD
- %04 = Ultimo messaggio di ritorno (fornito da un programma BCD o funizzato)
- %05zzzww = Porzione della stringa parametri dello script:
zzz : partenza (da 001 a 200)
ww : lunghezza (da 01 a 15)
- %06 = Modalità di esecuzione (NB: Viene assunta la prima condizione soddisfatta)
"L" - Loocup (se £INZJT='B' e Forza emulazione di tabella B§G=' ')
"B" - Batch (se £INZJT='B')
"I" - Interattiva (in tutti gli altri casi)
yy : LE, LT, GE, GT, EQ, NE
/%
----
!! Pulizia variabili\\
%%quote
..CLEAR
.* VR(*ALL) pulisce tutte le variabili (alfan. numeriche e flag)
.* VR(*ALF) pulisce le variabili alfanumeriche
.* VR(*FLG) pulisce i flag
.* VR(*NUM) pulisce le variabili numeriche
.* VR(_&_xx) pulisce la variabile alfanumerica xx
.* VR(£yxx) pulisce la variabile numerca xx di tipo y (esempio £T03: pulisce il puntatore al riempimento della DS n.3)
/%
----
\\
!! Azioni su variabili numeriche\\
%%quote
..INCR VR(£yxx) incrementa di 1 la variabile numerica xx di tipo y
..DECR VR(£yxx) decrementa di 1 la variabile numerica xx di tipo y
/%
----
\\
!! Esecuzione programma con struttura BCD\\
%%quote
..BCD PG(Nome) FU(Funzione) ME(Metodo) PA(Parametri 50 bytes)
Nome, funzione e metodo possono essere variabili _&_x di script
Es PG(_&_01) FU(_&_03)
/%
----
\\
!! Esecuzione programma funizzato\\
%%quote
..FUN PG(Nome) FU(Funzione) ME(Metodo)
Nome, funzione e metodo possono essere variabili _&_x di script
Es PG(_&_01) FU(_&_03)
Viene lanciato il programma senza impostazioni di oggetti (la £FUND1 è inizializzata prima del lancio)
/%
----
!! Esecuzione programma senza parametri\\
%%quote
..PGM PG(Nome)
/%
----
Il nome può essere una variabile di script\\
\\
!! Commento interno\\
Qualsiasi riga senza un codice operativo valido viene considerata un commento, e viene esclusa dalla presentazione dello script.\\
Se si vuole escludere temporaneamente una riga valida, si deve impostare in prima posizione un asterisco:\\
Es:\\
..BCD PG(Nome)\\
\\
!! Commento presentato\\
Se si vuole riportare un commento nella presentazione dello script, esso va codificato nel seguente modo:\\
%%quote
..REM Testo libero del commento
..TIT Testo libero del commento con riga bianca precedente
/%
----
\\
!! Esecuzione script con struttura BCD (sv)\\
-----------------------------------\\
..SCP(Nome)\\
Il nome può essere una variabile di script.\\
Gli script condividono tutte le variabili\\
\\
!!! Struttura programma BCD\\
%%quote
Funzione (10 byte)
Metodo (10 byte)
Parametro (50 byte)
DS comune (2000 byte)
DS specifica (2000 byte)
A01 Campi di 1 byte di passaggio indirizzi schiere, ds, ecc...
... ,, ,, ,,
A20 ,, ,, ,,
Messaggio (7 byte)
File (10 byte)
/%
----
!! Struttura DS comune\\
-------------------\\
%%quote
1 - 100 : DS della tabella B§G
101 - 400 : 20 variabili dello script
401 - 500 : puntatori £Txx
501 - 600 : puntatori £Axx
601 - 700 : puntatori £Ixx
701 - 800 : puntatori £Exx
801 - 805 : numero progressivo di schedulazione
806 - 815 : flag della sessione
816 - 1015 : parametri dello script
/%
----
Parametri dello script\\
----------------------\\
La variabile 'parametri dello script' contiene 200 caratteri formattati in funzione di quanto impostato nello script per parametri, che si definisce (in modo facoltativo) nell'elemento B§G.\\
\\
Lo script deve avere la seguente struttura:\\
%%quote
Par Lun Valore_____________* Nota----------------------------------------*
V 001 003 ABC AAAAAAAAAAAAAAA
N BBBBBBBBBBBBBBBBBBBBB
V 004 010 1234567890 AAAAAAAAAAAAAAA
/%
----
In posizione 1 si imposta 'V' se la riga contiene un valore, 'N' se contiene una nota che verrà visualizzata nella presentazione dei parametri (attivabile via F15 dalla presentazione dello script)\\
\\
Se la riga è 'V', contiene le seguenti informazioni:\\
Posizioni 3 - 5 : partenza del valore nella stringa parametri (allineato a destra)\\
Posizioni 7 - 9 : lunghezza della stringa parametri (max 20) (allineato a destra)\\
Posizioni 11 - 30 : valore\\
Posizioni 33 - 92 : nota\\
\\
Se la riga è 'N', contiene le seguenti informazioni:\\
Posizioni 33 - 92 : nota\\
\\
All'inizio dell'esecuzione del motore BCD, la stringa parametri viene riempita con il contenuto dello script, e sarà disponibile ai successivi programmi che ne potranno utilizzare alcune parti, sottostringandola.\\
\\
Nell'esempio dello script precedente, la variabile parametri sarà composta nel seguente modo:\\
%%quote
'ABC1234567890......
1---5----0----5 .....
/%
----
Questa modalità permette di definire un settaggio del motore BCD a livello più basso di quello definibile tramite il settore dei dati di input, presente sempre nella tabella B§G.\\
Quest'ultimo contiene i parametri richiesti all'atto del lancio della BCD, la stringa parametri è invece riservata alle impostazioni definite 'una tantum' all'atto dell'implementazione del motore, che possono comunque essere facilmente variate senza modificare nè i programmi nè lo script che contiene i passi da eseguire.\\
\\
Tabelle\\
-------\\
B§G: Elemento BCD:\\
- pgm innesco\\
- script: nome / src / libreria\\
- settore che descrive l'input (futuro: anche pgm specifico)\\
\\
\\
Programmi generali\\
------------------\\
B£BCD01: Richiesta parametri\\
B£BCD02: Esecuzione motore\\
B£BCD03: Debug: si può inserire come passo BCD dello script (solo in modalità 5250). Presenta un formato video da cui è possibile passare alla presentazione delle variabili del motore\\
(alfanumeriche, puntatori, flag), del contenuto dell'LDA, della stringa di impostazioni, dell'elemento B§G.\\
Da questo formato è possibile inoltre eseguire un programma BCD, impostando funzione, metodo e parametri.\\
Un utilizzo di tale funzione risulta utile condizionato da una variabile d'ambiente, l'elemento BCD o la sua classe.\\
\\
Oggetti specifici (proposta di standardizzazione)\\
-------------------------------------------------\\
%%quote
xxyySC : Script
xxyyDS : /COPY di descrizione delle 20 aree di memoria utilizzate e del loro contenuto
xxyyPLI : /COPY dell'ENTRY PLIST dei pgm di esecuzione (con le 20 aree)
xxyyPLO : /COPY della PLIST dei pgm di esecuzione in richiamo
xxyyIN : Pgm di Innesco
xxyyIN_LO : Pgm di Innesco (x LOOCUP): è obbligatorio che si chiami come il pgm innesco + '_LO'
xxyyES_01 : Pgm di Esecuzione 1
xxyyES_02 : ,, ,, 2
...
dove:
xx = sigla applicazione
yy = sigla dello script
/%
----
\\
Quando si aggiunge una DS di lavoro, si devono eseguire le seguenti attività:\\
- Definirla nella /COPY xxyyDS\\
- Inserirla nella PLIST della /COPY xxyyPLI e xxyyPLO\\
- Ricompilare tutti i programmi xxyyES_zz e l'innnesco xxyyIN\\
\\
Impostazioni iniziali\\
---------------------\\
Si fissano in LDA con la funzione £G67 (eseguita nel lancio BCD se presente nell'elemento B§G il settore per dati di input), con la seguente struttura:\\
Posizioni\\
%%quote
1 - 15 U$NOME Nome della tabella BCD il suo contenuto è zzz
16 - 18 U$LUNG Lunghezza della DS di memorizzaz.impostata dalla £G67
/%
----
Per acquisire in un programma BCD i campi di input, si deve includere la seguente copy:\\
D/COPY QILEGEN,£xxxxPLI\\
\\
si definisce l'LDA in questo modo\\
%%quote
D/COPY QILEGEN,£PDS
D U$NOME 1 15
D U$LUNG 16 18 0
/%
----
This page has only one version
«