New CISAM.SBR opcodes provide applications the ability to transcend the existing limitations of ISAM'PUSH and ISAM'POP:
XCALL CISAM,33,CH,IDX,RECNO{,STATUS} ! ISAM'PUSH
XCALL CISAM,34,CH,IDX,RECNO{,STATUS} ! ISAM'GOTO
Background: CISAM.SBR is an internal interface to the ISAMPLUS file system, generally only used by system-level utilities and thus not documented, but in this case the new functions expose a capability that is not yet available in regular BASIC/ISAMPLUS syntax. The limitation with the existing ISAM'PUSH and ISAM'POP is that it is single-level, i.e. supports only one level of ISAM'PUSH for any given channel at a time. These new XCALL functions allow you to "push" an arbitrary number of file positions/states and "pop" them in an arbitrary order.
Opcode 33 is equivalent to ISAM'PUSH #CH, except that it returns to you the current IDX and RECNO.
Opcode 34 is equivalent to ISAM'GOTO #CH, IDX, RECNO (which does not yet exist). This is similar to ISAM'POP, except repositions the internal state and position according to the specified IDX and RECNO, rather than the previously pushed one.
Note that the IDX numbering starts from 1 here, contrary to the IDX numbering in Basic, which starts at zero.
Both functions return 0 in STATUS for success, else error.