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:

  1. nomap o nomap(0) che è lo stesso, restituisce il nome del dossier corrente
  2. seg$(STR, inizio, fine) restituisce una sottostringa di STR che parte dal carattere in posizione inizio fino al carattere indice fine
  3. 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!

Potrebbero interessarti anche...

Lascia un commento

Scopri di più da SageDev

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continue reading