xcall ISMPAR, ifname, ismpak {,lvl1cnt, keyalc}
ISMPAR.SBX is a variation of the internal ISMROKxs, with the main distinction being that it takes a filespec rather than an open file channel and thereby avoids potential file locking conflicts. The source for the routine can be found in ISMPAR.BP in SOSLIB:[907,22].
Parameters
MAP1 ISMPAK
MAP2 I'DEV,S,4 device name (ASCII)
MAP2 I'UNIT,B,2 unit #
MAP2 I'UPDCNT,B,4 update counter
MAP2 I'RECSIZ,B,2 rec size
MAP2 I'KEYSIZ,B,2 key size
MAP2 I'KEYPOS,B,2 key position
MAP2 I'IDAFRE,B,4 IDA free pointer
MAP2 I'IDAFRC,B,4 IDA freecount
MAP2 I'IDXFRE,B,4 IDX free pointer
MAP2 I'IDXFRC,B,4 IDX freecount
MAP2 I'RECALC,B,4 records allocated *
MAP2 I'TOPDIR,B,4 top directory block
MAP2 I'LEVELS,B,2 # IDX levels
MAP2 I'BLKSIZ,B,2 IDX blk size
MAP2 I'IDXTYP,B,2 IDX type flags
MAP1 IFNAME,S,64 IDX filespec
MAP1 LVL1CNT,B,2 # of idx blocks at top level (max 100)
MAP1 KEYALC,B,4 # of keys allocated in the IDX file. In a typical file, this should match idaalc—i.e. one key per data record.
History
2022 February, A-Shell 6.5.1711: Add new optional argument keyalc to return the new keys allocated value.