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.
I seguenti sono argomenti accettabili per una funzione:
CURR_SAL * 1.03
e
FN || LN
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:
Tutti gli argomenti numerici sono convertiti nel formato virgola-mobile precisione-doppia, quando usati con una funzione, ma i risultati sono restituiti nel formato specificato per il campo d'emissione.
Nota: Con CDN ON, gli argomenti numerici devono essere delimitati da una virgola seguita da uno spazio.
Se si fornisce un argomento con un anno a due cifre, la funzione assegna un secolo in base alle impostazioni dei parametri DATEFNS, YRTHRESH e DEFCENT.
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.
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.
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:
È 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:
Concede la precedenza a funzioni fornite da Information Builders. SYSTEM è il valore predefinito. Questa impostazione è richiesta per poter abilitare la verifica dei parametri.
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.
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:
Può essere una delle seguenti:
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
Nota: L'impostazione OFF verrà deprecata in release future.
Nota:
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
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
ERROR AT OR NEAR LINE 5 IN PROCEDURE USERFC3 FOCEXEC (FOC279) NUMERIC ARGUMENTS IN PLACE WHERE ALPHA ARE CALLED FOR (FOC009) INCOMPLETE REQUEST STATEMENT UNKNOWN FOCUS COMMAND WHERE BYPASSING TO END OF COMMAND
DIRECTOR TITLE NEWTITLE -------- ----- -------- SMURFS, THE ********* BARTON C. SHAGGY DOG, THE ********* SCOOBY-DOO-A DOG IN THE RUFF ********* GEROMINI ALICE IN WONDERLAND 1 SESAME STREET-BEDTIME STORIES AND SONGS -265774 ROMPER ROOM-ASK MISS MOLLY ********* DISNEY W. SLEEPING BEAUTY ********* DISNEY W. BAMBI 0
WebFOCUS |