NUMBER %CHKROWS%
Scopo: daterminare il numero di righe di cui è/sono composto/i il/i buffer indicato/i.

Sintassi: %CHKROWS%(%STRING% eol, %NUMBER% eolfill, %STRING% param1[,...])

Descrizione: consente di recuperare il numero di istanze presenti in un determinato buffer (tipicamente del contenuto di attributi multiistanza di gruppo e non o di attributi Multiriga).
Per il corretto svolgimento di questo compito, è necessario che la funzione in oggetto esegua prima un allineamento, mediante verifica ed eventuale correzione, del numero delle istanze del/i buffer specificato/i.
Per l'uso di questa funzione è necessario riversare il contenuto degli attributi multiistanza dello stesso gruppo in altrettante variabili (<param1>,<param2><...>) che saranno utilizzate per eseguire i controlli e, se indicato da eolfill, l'allineamento.
Per eseguire questa operazione il modulo Highway Application Server verifica che tutte le variabili <param...> contengano lo stesso numero di istanze.
Se eolfill = 1 significa che in caso di difformità sul numero di righe rilevate fra le variabili <param...> controllate, queste saranno anche allineate mediante l'aggiunta di righe di istanza vuote a quelle che difettano rispetto al numero massimo individuato.
Il controllo sul numero di righe si basa sul valore eol che la funzione utilizza per determinare la fine di una riga di istanza (ed anche per eventuali aggiunte di nuove righe).

Valore restituito: valore alfanumerico Torna il numero massimo di righe individuato nelle singole variabili <parm...>.
Torna 0 in caso di errore generico.

Vedere anche: %NUMROWS%, %ATTROWS%, %ATTROW%

Esempio:
 <!-- attributi MultiIstanza del gruppo 4:
  INDIR, SEDE, CAP, LOCAL, PROV, REGIONE, NAZIONE -->
%NUMBER%(grouprows,0)
  <!-- copia del contenuto degli attributi nelle rispettive variabili -->
%STRING%(b_indirizzo,%ATTRIB%("INDIR"))
%STRING%(b_sede,%ATTRIB%("SEDE"))
%STRING%(b_cap,%ATTRIB%("CAP"))
%STRING%(b_local,%ATTRIB%("LOCAL"))
%STRING%(b_prov,%ATTRIB%("PROV"))
%STRING%(b_regione,%ATTRIB%("REGIONE"))
%STRING%(b_nazione,%ATTRIB%("NAZIONE"))
%NUMCPY%(grouprows, %CHKROWS%("\r\n",1,b_indirizzo, b_sede, b_cap,
   b_sede, b_local, b_prov, b_regione, b_nazione))
%IF%(grouprows)
 <!--ciclo sulle istanze -->
 %REPEAT%(1,grouprows)
  <!--fai qualcosa -->
 %ENDREPEAT%
%ENDIF%

Annotazioni

L'uso degli attributi multiistanza, per coloro che già conoscono la tecnologia HIGHWAY o se applicato ad una base dati esistente sviluppata per l'uso con SfPlus, è leggermente cambiato.
Le singole righe degli attributi multiistanza sono separate da due caratteri non stampabili, cioè il 'newline' ed il 'carriage return', codificati in esadecimale in 0x0D e 0x0A, in ASCII in 0x10 e 0x13, in sequenza di escape con \r e \n.
Questi caratteri speciali vengono posti al termine della riga quando viene premuto il tasto Enter (o Return che dir si voglia).
Sfplus e Highway Application Server (per ragioni tecniche qui non discutibili) vanno in conflitto sulla gestione dell'ultima riga:
Sfplus non vi pone \r\n, mentre Highway Application Server la pretende !!
Il problema si risolve filtrando il contenuto dei campi multiistanza attravesro la funzione %CHKROWS% che esegue un allineamento riportando i caratteri \r\n sull'ultima istanza e, se applicata a tutti gli attributi multiistanza di un medesimo gruppo, provvede anche ad eseguire un controllo ed un allineamento delle righe sui singoli attributi.
Esempio