Utilizzando la funzione embedded SysVarsnprintf è possibile costruire una variabile stringa di definizione numero telefonico partendo da variabili numeriche che ne definiscono i singoli campi. Ecco nel dettaglio il programma da realizzare:
(* Eseguo controllo su limite valori variabili. *)
IF (ICode > 99) THEN PhoneNr:=’Error’; RETURN; END_IF;
IF (ACode > 999) THEN PhoneNr:=’Error’; RETURN; END_IF;
IF (Number > 999999999) THEN PhoneNr:=’Error’; RETURN; END_IF;
(* Print the variable values, merging them into a single string. *)
i:=SysVarsnprintf(ADR(PhoneNr), 3+1, ‘+%d’, UINT_TYPE, ADR(ICode));
i:=SysVarsnprintf(ADR(PhoneNr[LEN(PhoneNr)]), 3+1, ‘%d’, UINT_TYPE, ADR(ACode));
i:=SysVarsnprintf(ADR(PhoneNr[LEN(PhoneNr)]), 9+1, ‘%d’, UDINT_TYPE, ADR(Number));
Al termine della esecuzione la variabile PhoneNr di tipo STRING[32] conterrà il numero di telefono con il codice internazione definito in ICode, il prefisso in ACode ed il numero in Number. Se ICode=39, ACode=335, Number=123456 avremo come risultato la stringa +39335123456. Allego stampa e programma con FB in codice sorgente.