| Una caratteristica di questi batch è la
capacità di distinguere la prima
chiamata dalle successive (con l'aiuto di una variabile di sistema, FLAGm):
in questo modo può configurare l'ambiente dos
(come il percorso, path) e lanciare alcuni
applicativi (come per esempio Dosedit.com) solo la
prima volta, evitando di ripetere in futuro queste preziose
inizializzazioni:
@ECHO OFF
IF "%FLAGm%"=="OK" GOTO START0
PATH=C:\ARCH-LAB\CHK;C:\ARCH-LAB\BIN;.....
......
c:\arch-lab\chk\DOSEDIT > NUL
......
SET FLAGm=OK
:START0
|
|
| La figura seguente mostra in che modo è
possibile far capire al batch se c'è o meno lo switch
/E: nel primo caso segnala errore e
torna al dos mentre nel secondo apre
l'editor. Da notare che le etichette DOS e MENU sono punti importanti
del file batch (descritti più avanti).
:START0
IF z%1 == z GOTO ERR1
IF z%2 == z/E GOTO EDITOR
IF z%2 == z/e GOTO EDITOR
.........
:ERR1
IF "%FLAGd%"=="OK" GOTO DOS
MASM_1 20
MASM_1 02
GOTO DOS
IF EXIST %1.LST DEL %1.LST
IF EXIST %1.COM IF EXIST %1.EXE DEL %1.EXE
IF EXIST errcmp.txt DEL errcmp.txt
IF EXIST errlnk.txt DEL errlnk.txt
IF EXIST %1.BAK DEL %1.BAK
.........
:EDITOR
MASM_1 08
CLS
Q %1.ASM
GOTO MENU
|
|
| Nel dettaglio successivo vediamo come il file
batch gestisce le sottoOpzioni del menu
di compilazione interno
(la cui immagine è assicurata dal programma Masm_in1.COM):
:START1
MASM_IN1
if errorlevel 54 goto ANNULLA
if errorlevel 53 goto aggiornaLIB
if errorlevel 52 goto onlyOBJ
if errorlevel 51 goto siLISTATO
if errorlevel 50 goto EXEsiLIB
if errorlevel 49 goto EXEnoLIB
|
|
| Il dettaglio
successivo mostra l'effettiva catena di realizzazione dell'eseguibile
nel caso standard di accesso alla libreria GIOBE.LIB; notiamo la stampa dei messaggi iniziale (Masm_1
13) e
finale (Masm_1 10)
e soprattutto le chiamate di MASM
%1, LINK
%1,%1,nul,GIOBE.LIB /NOE
e di EXE2BIN
%1.
Il file sorgente da elaborare è indicato da %1,
che corrisponde al primo parametro passato a Macro.txt:
:EXEsiLIB
MASM_1 13
MASM %1;|ERR-COMP
IF NOT EXIST %1.OBJ GOTO ERR2
LINK %1,%1,nul,GIOBE.LIB /NOE|ERR-LINK
IF NOT EXIST %1.EXE GOTO ERR3
IF EXIST %1.OBJ DEL %1.OBJ
IF z%2 == z0 GOTO OKexe2
EXE2BIN %1
IF NOT EXIST %1.BIN GOTO END2
IF EXIST %1.COM DEL %1.COM
REN %1.BIN %1.COM
IF z%2 == z. GOTO DOS
MASM_1 10
GOTO MENU
|
|
| In questa parte del file
batch vediamo la gestione delle opzioni del menu
principale, stampato
da Masm_1 09:
in particolare notiamo il salto all'etichetta START1 (vista poco fa) quando
si preme il tasto 2 (codice numerico 50):
:MENU
cls
MASM_1 09
if errorlevel 59 goto DOS
if errorlevel 58 goto NOclearEL
if errorlevel 57 goto NOclearLST
if errorlevel 56 goto NOclearEXE
if errorlevel 55 goto err003
if errorlevel 54 goto err002
if errorlevel 53 goto err02
if errorlevel 52 goto PRINT
if errorlevel 51 goto ESEGUI
if errorlevel 50 goto START1
if errorlevel 49 goto EDITOR1
GOTO DOS
|
|
| Infine mettiamo in evidenza la capacità di lasciar
pulita la cartella, ogni volta che il programmatore decise di tornare
al dos: viene verificata la presenza dei files LST,
TXT e BAK e del
file EXE (solo se c'è quello COM);
in caso affermativo i files vengono cancellati:
:DOS
IF EXIST %1.LST DEL %1.LST
IF EXIST %1.COM IF EXIST %1.EXE DEL %1.EXE
IF EXIST errcmp.txt DEL errcmp.txt
IF EXIST errlnk.txt DEL errlnk.txt
IF EXIST %1.BAK DEL %1.BAK
|
|