Gli I/O digitali sono allocati in array di dati e possono essere gestiti utilizzando direttamente le variabili. Gli I/O del modulo con indirizzo 0 sono allocati in SysDI00 e SysDO00, quelli del modulo con indirizzo 1 sono allocati in SysDI01 e SysDO01, e così via. Quindi un semplice programma che copia 8 ingressi del modulo 0 sulle sue rispettive 8 uscite può essere:
FOR i:=0 TO 7 DO SysDO00[i]:=SysDI00[i]; END_FOR;
Questa sintassi è molto comoda se nel loop si trattano I/O consecutivi, ma se gli I/O non sono consecutivi è preferibile utilizzare un array di puntatori a variabili BOOL:
IArray : ARRAY[ 0..15 ] OF @BOOL; { DE:”Input array” }
OArray : ARRAY[ 0..15 ] OF @BOOL; { DE:”Output array” }
Valorizzando l’array con gli indirizzi degli I/O ed utilizzando un loop nel modo:
IArray[0]:=ADR(%IX0.0);
IArray[1]:=ADR(%IX0.4);
OArray[0]:=ADR(%QX0.0);
OArray[1]:=ADR(%QX0.7);
FOR i:=0 TO 1 DO @OArray[i]:=@IArray[i]; END_FOR;
Allego la stampa ed il programma sorgente di un esempio di utilizzo di questa tecnica.