Cambiamo unità e directory con il REXX


Continuiamo il nostro percorso di apprendimento del REXX esaminando la sintassi della funzione DIRECTORY(), utilizzandola per creare una semplice utility per la riga di comando: un clone del comando CD, che, a differenza di questo, ci permetta di specificare come directory corrente anche una directory collocata su una diversa partizione.

La sintassi di DIRECTORY è piuttosto semplice:

DIRECTORY(newdirectory)
Dove newdirectory è il nome della directory che si vuole rendere la directory corrente. Se newdirectory include anche la lettera identificativa di un'unità, tale unità verrà resa l'unità corrente.
Il valore ritornato da DIRECTORY è una stringa in cui viene riportato, dopo eventualmente essere stato aggiornato, il percorso completo della directory corrente.
Chiamando DIRECTORY senza argomenti viene riportato il percorso della directory corrente senza che questa venga cambiata.
Se il percorso specificato in newdirectory non esiste viene riportata una stringa vuota.

Passiamo ora al nostro esempio, chiamato CDD.CMD, cioè Change-Drive-Directory.

/*     CDD.CMD *   (c)   1996 Alessandro Cantatore   *   team OS/2 Italia   */
arg newDriveDir      /* riceve come unico argomento il nuovo percorso       */

if newDriveDir = "/H" | newDriveDir = "-H" | newDriveDir = "-?",
                      | newDriveDir = "/?" | newDriveDir = "?";
   then call help;   /*se invece del nome del nuovo percorso si introduce   */
                     /* richiesta di help tramite i parametri : /H, /h, -H, */
                     /* -h, ?, /?, -? viene chiamata la routine "help" che  */
                     /* da all'utente brevi note sull'uso di CDD.CMD        */

if newDriveDir = "" then do  /* se non viene introdotto alcun argomento, per*/
   say directory();          /* coerenza con il comando "CD" viene mostrato */
   exit;                     /* il percorso della directory corrente        */
end;

done = directory(newDriveDir);  /* se viene introdotto il percorso di una   */
if done = "" then do            /* nuova directory, viene controllato il    */
   call beep 880, 300;          /* valore restituito dalla funzione: se tale*/
                                /* valore è una stringa vuota, il percorso  */
                                /* introdotto non è valido, viene emesso un */
                                /* beep e viene mostrato un messaggio di    */
                                /* errore appropriato                       */
   say " Il sistema non trova il percorso specificato!";
   end;
exit;

/* "help()" è una semplice subroutine avente come unico scopo quello di     */
/* mostrare alcune brevi note sull'uso di CDD.CMD e terminare il programma  */
help:
   say;
   say " CDD.CMD cambia contemporaneamente unità e directory correnti.";
   say " Uso:";
   say " CDD unità:\dir\subdir";
   say;
exit;

Per usare CDD basta collocarla in una directory menzionata nella direttiva PATH del CONFIG.SYS. Una buona soluzione è creare una directory TOOLS, in cui collocare questa e altre piccole utility, aggiungendone poi il percorso agli altri specificati nella direttiva PATH


a cura di Alessandro Cantatore

Pagina
precedente
Home Page Sommario