Sas tricks: Utilizzo corretto di INTNX con %SYSFUNC

Pubblicato il Pubblicato in Developer Tricks, Technology
18721001439_b79fc1e9fb_b

Non so se vi è mai capitato, ma con SAS a me capita molto spesso di dover salvare i risultati delle varie analisi inserendo data/ora nel nome del file.

Allora..
…supponiamo la necessità di salvare un data set SAS e come target – il naming deve essere del tipo REPORT_data.inizio_data.fine, dove la data.fine è la data di oggi (formato date9.), e la data.inizio dovrebbe essere tre mesi prima del mese corrente, ed il giorno della data.inizio dovrebbe essere il primo giorno del mese (formato date9.).

Proseguiamo con la funzione INTNX.

Abbiamo il seguente codice che ci permette di fare ciò che serve, notiamo che i parametri ‘month’, ‘sameday’ e ‘beginning’ stanno tra gli apici, come da sintassi per INTNX:

1

Ed il relativo LOG:

2

Il codice non è particolarmente “bello” e verrebbe la voglia di snellirlo ed ottimizzarlo. Quindi cerchiamo di ottenere lo stesso risultato utilizzando %SYSFUNC:

3

Il codice dovrebbe funzionare, ma invece nel LOG abbiamo il seguente WARNING: An argument to the function INTNX referenced by the %SYSFUNC or %QSYSFUNC macro function is out of range.

4

Il  punto del problema consiste nel fatto che il processo non si ferma subito, non c’è un ERRORE nel LOG, vediamo soltanto due WARNING, quindi il processo va avanti, anche se è errato, ma le macro si risolvono come nulle, e quindi alla fine il processo va in errore nel data step successivo.

Possiamo risolvere questo problema togliendo gli apici dai parametri ‘month’, ‘sameday’ e ‘beginning’. Adesso il processo non crea nessun WARNING e soprattutto non va in ERRORE risolvendo bene tutte le macro:

5

Relativo LOG:

6

Problema risolto, abbiamo il codice snello e soprattutto funzionante. Il nome del data set ha il naming del tipo richiesto ed è pronto per l’esportazione nel formato desiderato.  🙂
Buon lavoro!


offerte lavoro sas


Se vuoi conoscere le nostre attività formative, visita la pagina dedicata ai corsi di Centauri,  l’Academy di Proxima Informatica.

Se vuoi sapere quali sono tutte le nostre ultime offerte di lavoro visita la sezione Jobs del nostro sito!

CondividiShare on FacebookEmail this to someoneShare on LinkedIn
 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *