.OFFSET

Added April 2013

.OFFSET(struct.member)

Similar to .SIZEOF(var) except that it returns the offset to the specified member variable within the specified structure, starting from 1, rather than the size of the variable, and it only works on fields within structures. Also, in the case of arrays, .OFFSET only returns the offset to the base of the array, and doesn't actually allow the use of subscripts. The specified structure name can either be a defined structure name, or a MAP'd or DIMX'd instance of it. For example:

DEFSTRUCT ST_1

    MAP2 FLD1,S,10

    MAP2 FLD2,S,13

    MAP3 FLD3(4),F

ENDSTRUCT

MAP1 VAR,ST_1

DIMX VX(10),ST_1

 

For example:

? "Offset of FLD1 in ST_1: "; .OFFSET(ST_1.FLD1)   ! 1

? "Offset of FLD2 in VAR : "; .OFFSET(VAR.FLD2)    ! 11

? "Offset of FLD3 in VX(): "; .OFFSET(VX().FLD3()) ! 24

Note the empty parentheses () in the third example.

History

2013 April, A-Shell 6.1.1350:  Function added to A-Shell