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 |
/% |
---- |