Immissione di un argomento in una funzione

In questa sezione:

Quando si fornisce un argomento in una funzione, è necessario capire quali tipi di argomento sono accettabili, i formati e la lughezza per questi argomenti ed il loro numero e l'ordine.


Inizio pagina

x
Tipi di Argomento

I seguenti sono argomenti accettabili per una funzione:


Inizio pagina

x
Formati Argomento

A seconda della funzione, un argomento è in grado di essere in formato data, alfanumerico o numerico. Se si fornisce un argomento nel formato sbagliato, si causerà un errore o la funzione non restituirà dati corretti. I seguenti sono tipi di blocchi di contenuto:


Inizio pagina

x
Lunghezza Argomenti

Si inoltra un argomento ad una funzione per riferimento, ovvero si inoltra la posizione della memoria dell'argomento. Non è stata indicata nessuna lunghezza dell'argomento.

È necessario fornire la lunghezza dell'argomento per stringhe alfanumeriche. Alcune funzioni richiedono una lunghezza per gli argomenti di immissione e emissione (per esempio, SUBSTR) e altre usano una lunghezza per entrambi gli argomenti (per esempio, UPCASE).

Assicurarsi la correttezza di tutte le lunghezze. L'immissione di una lunghezza scorretta potrebbe causare risultati scorretti:

Alcune routine del sistema operativo sono molto sensibili a lunghezze scorrette specificate e le leggono in aree di memoria formattate in modo scorretto.


Inizio pagina

x
Numero dell'ordine degli argomenti

Il numero di argomenti richiesti varia a seconda di ogni funzione. Le funzioni fornite da Information Builders potrebbero richiedere fino a sei argomenti. Le subroutine scritte da utenti potrebbero richiedere fino a 200 argomenti, incluso l'argomento di emissione. Se una funzione richiede più di 200 argomenti, è necessario usare due o più chiamate per inoltrare gli argomenti alla funzione.

Gli argomenti devono essere specificati nell'ordine visualizzato nella sintassi di ogni funzione. L'ordine richiesto varia a seconda della funzione.


Inizio pagina

x
Verifica dei parametri della funzione

Come:

L'impostazione USERFCHK controlla il livello di verifica applicato agli argomenti DEFINE FUNCTION e agli argomenti funzione forniti da Information Builders. Non influenza la verifica del numero di parametri, il numero corretto deve essere sempre fornito.

USERFCHK non è supportato da Maintain.

Le funzioni, di solito, prevedono dei parametri di tipo specifico o di lunghezza a seconda del valore di un altro parametro. È possibile, in alcune situazioni, imporre queste regole troncando la lunghezza di un parametro e, quindi, evitando di generare un errore nel run time.

Il livello di verifica e di possibile conversione di un formato valido dipende dalla funzione specifica. Le seguenti due situazioni possono, di solito, essere convertite in modo soddisfacente:



x
Sintassi: Come abilitare la verifica dei parametri

È possibile abilitare la verifica dei parametri solo per DEFINE FUNCTION e funzioni fornite da Information Builders. Se il proprio sito presenta una funzione scritta a livello locale con lo stesso nome di una funzione fornita da Information Builders, l'impostazione USERFNS determina quale funzione usare.

SET USERFNS= {SYSTEM|LOCAL}

dove:

SYSTEM

Concede la precedenza a funzioni fornite da Information Builders. SYSTEM è il valore predefinito. Questa impostazione è richiesta per poter abilitare la verifica dei parametri.

LOCAL

Concede la precedenza a funzioni scritte localmente. La verifica dei parametri non viene eseguita con questa impostazione in vigore.

Nota: Quando USERFNS è impostato su LOCAL, le funzioni DT visualizzano solo una data a sei cifre.



x
Sintassi: Come controllare la verifica dei parametri della funzione

Emettere il seguente comando in FOCPARM, FOCPROF, sulla linea di comando, in un FOCEXEC, o in un comando ON TABLE. Notare che l'impostazione USERFNS=SYSTEM deve essere in vigore.

SET USERFCHK = setting 

dove:

impostazione

Può essere una delle seguenti:

  • ON - È il valore predefinito. Verifica i parametri in richiesta, ma non verifica i parametri per funzioni usate in file principali DEFINE. Se un parametro ha una lunghezza scorretta, si tenta di risolvere il problema. Se non è possibile risolvere il problema, si genera un messaggio di errore e si determina la valutazione dell'espressione influenzata.

    Poiché i parametri non sono verificati per funzioni specificate in un file principale, non si riportano errori per quelle funzioni fino all'uso del campo DEFINE in una richiesta successiva quando, se avviene un errore, si genera il seguente messaggio:

    (FOC003) THE FIELDNAME IS NOT RECOGNIZED
  • OFF non verifica i parametri, tranne nei seguenti casi:
    • Se il parametro troppo lungo sovrascriverebbe l'area della memoria in cui si trova il codice computazionale, la dimensione viene automaticamente diminuita senza emettere un messaggio.
    • Se un parametro alfanumerico è troppo corto, si riempie con spazi fino al raggiungimento della lunghezza corretta.

    Nota: L'impostazione OFF verrà deprecata in release future.

  • FULL è lo stesso di ON, ma verifica inoltre parametri per funzioni utilizzate nel file principale DEFINE.
  • ALERT verifica i parametri in una richiesta senza interrompere l'esecuzione quando si rileva un problema. Non verifica i parametri per le funzioni usate in file principali DEFINE. Se un parametro ha una lunghezza scorretta e si tenta di risolvere il problema dietro alle scene, il problema si corregge senza messaggi. Se non è possibile correggere il problema, si genera un messaggio di avvertenza. L'esecuzione continua come se l'impostazione fosse OFF, ma il risultato potrebbe essere scorretto.

    Nota:

    • Se il parametro fornito è scorretto, la verifica riporta degli errori e l'elaborazione finisce.
    • Gli errori incontrati durante l'elaborazione della subroutine, tranne se fatale al livello di sistema, vengono comunicati alla routine in chiamata, tramite la restituzione di un parametro di ritorno non modificato, ovvero l'ultimo parametro della chiamata della subroutine. Tale procedura si comunica sempre con emissioni alfanumeriche.



Esempio: Verifica parametri con errori correggibili

La seguente richiesta usa SUBSTR per estrarre la sottostringa che inizia nella posizione 6 e finisce nella posizione 14 del campo TITLE. Il quinto argomento specifica la lunghezza di una sottostringa (500) troppo lunga (non dovrebbe essere superiore a 9).

SET USERFCHK = ON
TABLE FILE MOVIES
PRINT TITLE
COMPUTE
  NEWTITLE/A9  = SUBSTR(39, TITLE, 6  ,14, 500, NEWTITLE);
WHERE CATEGORY EQ 'CHILDREN'
END

Quando si esegue una richiesta con USERFCHK=ON o OFF, la lunghezza scorretta viene corretta e la richiesta continua l'elaborazione:

TITLE                                    NEWTITLE
-----                                    --------
SMURFS, THE                              S, THE
SHAGGY DOG, THE                          Y DOG, TH
SCOOBY-DOO-A DOG IN THE RUFF             Y-DOO-A D
ALICE IN WONDERLAND                       IN WONDE
SESAME STREET-BEDTIME STORIES AND SONGS  E STREET-
ROMPER ROOM-ASK MISS MOLLY               R ROOM-AS
SLEEPING BEAUTY                          ING BEAUT
BAMBI


Esempio: Verifica parametri con errori non correggibili

La seguente richiesta ha un tipo di dati scorretti nell'ultimo argomento in SUBSTR. Questo parametro dovrebbe specificare un campo o formato alfanumerico per la sottostringa estratta:

SET USERFCHK = ON
TABLE FILE MOVIES
PRINT TITLE
COMPUTE
  NEWTITLE/F9  = SUBSTR(39, TITLE, 6  ,14, 500, 'F9');
WHERE CATEGORY EQ 'CHILDREN'
END

WebFOCUS