Compilare sorgenti adonix da programma
Il modo principale di compilare un sorgente adonix lo conosciamo tutti:
in Sage X3 versione 6.x e precedenti infatti c’è a disposizione l’apposito editor (funzione ADOTRT),
da dove si può compilare con il tasto funzione F7 o con l’apposito menù.
Dalla versione 7 nell’interfaccia web c’è ancora la funzione ADOTRT disponibile, con il pulsante “Compila” a disposizione,
ma non è più disponibile il tasto F7 né si può utlilizzare la sequenza di escape ESC-F7 (come invece si può fare per il tasto F6).
Dalla versione 7 in poi abbiamo a disposizione anche Eclipse attraverso il pluging Safe X3.
Ma se per qualche motivo avessimo necessità di compilare un sorgente da programma?
O volessimo ricompilare tutti i sorgenti che iniziano per Y?
(A proposito, lo sapete che da documentazione le modifiche fatte dal cliente finale
andrebbero fatte iniziare con la Z?
La Y sarebbe riservata agli sviluppi dei consulenti…)
Per fare questo ci viene in aiuto la seguente chiamata:
Call VALID(CARTELLA,SORGENTE, DOSSIER, OK) From VALMSKSUB
Dove:
- CARTELLA è la cartella dove è contenuto il file da compilare
- SORGENTE è il nome del file, che deve avere estensione src, da compilare (ma il nome va indicato senza estensione, per esempio “SPESOH”)
- DOSSIER è il nome del dossier in cui si trova la cartella: basta mettere nomap e non ci si pensa più, a meno di usi particolari
- OK è una variabile di stato di tipo intero per comunicare se la compilazione è andata a buon fine
Per compilare tutti i sorgenti personalizzati potremo quindi fare così:
Local Char DIR(GDIMFIC), FILELIST(GDIMFIC)(1..100) Local Integer LENG DIR="C:\SAGE\"+nomap+"\TRT\Y*.src" Call SYSTEME2 (adxmac(0),"dir /b "-DIR,"",LENG,FILELIST) From ORDSYS Local Integer OK For I=1 To LENG Call VALID("TRT",seg$(FILELIST(I),1, instr(1,FILELIST(I),".src")-1), nomap, OK) From VALMSKSUB Next End
Alcune osservazioni:
- nomap o nomap(0) che è lo stesso, restituisce il nome del dossier corrente
- seg$(STR, inizio, fine) restituisce una sottostringa di STR che parte dal carattere in posizione inizio fino al carattere indice fine
- instr(inizio, STR, find) ricerca la stringa find in STR a partire dall’indice inizio e né restituisce la posizione
In pratica tutta la pappardella
seg$(FILELIST(I),1, instr(1,FILELIST(I),".src")-1)
serve semplicemente per togliere “.src” dal nome del file.
Si potevano utilizzare altri comandi dos per avere già direttamente solo il nome, ma era meno divertente!
Spero vi sia utile!