That is what you call an Un-typed parameter which means you can pass just about anything to it but, the body of the function really needs to know what's doing because you can access memory out-side the realm of things.
SO, for example, I could give it a Byte,Word, Dword, QWord Record, an Object, or just about anything of any size of anytype.
For this to happen, things are normally passed around via a pointer, especially the VAR version you would need some sort of size indicator what is what the second parameter is for.
I suppose you could of just used a (var data:pointer....)
but then, each time you called the function you would need to give it an address reference to the item you are entering.
The compiler does this for you if you use the Un-Typed parameter.
The Const version would be the same except it follows the CONST rules.
Jamie.