In questa sezione: |
È possibile chiamare una funzione con Dialogue Manager nei seguenti modi:
Dialogue Manager converte un argomento numerico in formato doppia-precisione. Questo avviene quando il valore dell'argomento è numerico; non è influenzato dal formato previsto dalla funzione. Questo significa che è necessario prestare attenzione quando si forniscono argomenti per una funzione in Dialogue Manager.
Se la funzione prevede una stringa alfanumerica e l'immissione è una stringa numerica, si verificheranno risultati scorretti a causa della conversione in precisione-doppia pnto-mobile. Per risolvere questo problema, accodare un carattere non-numerico alla fine della stringa, ma non contare questo carattere extra nella lunghezza dell'argomento.
Variabili data Dialogue Manager come &YYMD restiutiscono date legacy alfanumeriche, non un formato data (un offset da una data base). Se una funzione richiede un offset data, piuttosto che una data legacy, è necessario convertire qualsiasi variabile data in un offset data (usando la funzione DATECVT) prima di usarla come argomento. È quindi possibile riconvertire il risultato in una data legacy, di nuovo con la funzione DATECVT. Per esempio:
-SET &TODAY_OFFSET=DATECVT(&YYMD , 'I8YYMD' , 'YYMD'); -SET &BEG_CUR_YR=DATEMOV(&TODAY_OFFSET.EVAL , 'BOY'); -SET &CLOSE_DTBOY=DATECVT(&BEG_CUR_YR.EVAL , 'YYMD' , 'I8YYMD')';
Come: |
È possibile memorizzare il risultato di una funzione in una variabile con il comando -SET.
Una variabile Dialogue Manager contiene solo dati alfanumerici. Se una funzione restituisce un valore numerico in una variabile Dialogue Manager, il valore viene troncato in un valore intero e convertito in formato alfanumerico, prima di essere memorizzato nella variabile.
-SET &variable = function(arg1, arg2[.LENGTH],..., 'format');
dove:
La variabile a cui verrà asssegnato il risultato.
La funzione.
Gli argomenti della funzione.
Restituisce la lunghezza della variabile. Se una funzione richiede la lunghezza di una stringa di caratteri come argomento di immissione, è possibile richiedere la stringa di caratteri e determinare la lunghezza del suffisso .LENGTH.
Formato del risultato racchiuso tra virgolette singole. Non è possibile specificare una variabile Dialogue Manager per l'argomento di emissione, a meno che non si usi il suffisso .EVAL; tuttavia, è possibile specificare na variabile per l'argomento di immissione.
AYMD aggiunge 14 giorni al valore di &INDATE. La variabile &INDATE è impostata in precedenza nella procedura, nel formato anno-mese-giorno di sei cifre.
-SET &OUTDATE = AYMD(&INDATE, 14, 'I6');
Il formato della data di emissione è un valore intero di sei cifre (I6). Sebbene il formato indica che l'emissione è un valore intero, questa si memorizza nella variabile &OUTDATE come stringa di caratteri. Per questo motivo, se si visualizza il valore di &OUTDATE, non sarà possibile visualizzare le sbarre che separano l'anno, il mese ed il giorno.
Come: |
È possibile eseguira una diramazione a seconda del risultato di una funzione, chiamando una funzione dal comando Dialogue Manager -IF.
Se un comando in diramazione occupa più di una riga, continuare sulla prossima riga posizionando un trattino (-) nella prima colonna.
-IF function(args) relation expression GOTO label1 [ELSE GOTO label2];
dove:
La funzione.
Gli argomenti.
Un operatore che determina la relazione tra la funzione e l'espressione, per esempio, EQ o LE.
Un valore, espressione logica o funzione. No racchiudere un valore letterale in virgolette singole, a meno che non ci sia una virgola o uno spazio incorporato.
I nomi definiti dagli utenti lunghi fino a 12 caratteri. Non usare spazi incorporati o il nome di qualsiasi altro comando Dialogue Manager, tranne -QUIT o -EXIT. Non usare una parola da poter confondere con una funzione, o una operazione logica o aritmetica.
Il testo label è in grado di precedere o seguire i criteri -IF nella procedura.
Inoltra il controllo a label2 quando si presenta un errore nel tes -IF.
Il risultato della funzione AYMD fornisce una condizione per una verifica -IF. Si esegue una di queste due richieste, a seconda del risultato della funzione:
-LOOP 1. -IF &INDATE EQ 0 GOTO EXIT; 2. -SET &WEEKDAY = DOWK(&INDATE, 'A4'); 3. -TYPE START DATE IS &WEEKDAY &INDATE 4. -IF AYMD(&INDATE, &DAYS, 'I6YMD') LT 960101 GOTO EARLY; 5. -TYPE LONG PROJECT -*EX LONGPROJ -RUN -GOTO EXIT 6. -EARLY -TYPE SHORT PROJECT -*EX SHRTPROJ -RUN -EXIT
La procedura elabora come segue:
Come: |
È possibile chiamare uan funzione che contiene solo argomenti alfanumerici da un comando Dialogue Manager -TSO RUN o -MVS RUN. Questo tipo di funzione esegue una attività specifica, ma di solito non restituisce un valore.
Se una funzione richiede un argomento in formato numerico, è necessario prima convertirlo in formato precisione-doppia punto-mobile, usando la funzione ATODBL, poiché, a differenza del comando -SET, il comando RUN di un sistema operativo non converte automaticamente un argomento numerico in precisione-doppia.
{-TSO|-MVS} RUN function, input1, input2, ... [,&output]
dove:
Il sistema operativo.
Nome della funzione.
Gli argomenti. Separare il nome della funzione e ogni argomento con una virgola. Non racchiudere un valore letterale alfanumerico in virgolette singole. Se una funzione richiede la lunghezza di una stringa di caratteri come argomento, è possibile richiedere la stringa di caratteri, quindi usare il suffisso .LENGTH per verificare la lunghezza.
Una variabile di Dialogue Manager. Includere questo argomento se la funzione restituisce un valore; altrimenti, ometterlo. Se si specifica una variabile di emissione, è necessario definirne la lunghezza usando il comando -SET.
Per esempio, se la funzione restituisce un valore lungo otto byte, definire la variabile con otto caratteri racchiusi tra virgolette singole prima di chiamare la funzione:
-SET &output = '12345678';
Il seguente esempio chiama la funzione CHGDAT da un comando -MVS RUN.
-SET &RESULT = '12345678901234567'; -MVS RUN CHGDAT, YYMD., MXDYY, &YYMD, &RESULT -TYPE &RESULT
WebFOCUS |