How do you like that? I wrote this and never published it. This was supposed to be the blog entry for 11/22, and it seems to have been forgotten. Ah, well... better late than never...
When you've finished doing whatever needed to be done with the table, it must be TBCLOSEd. As with TBOPEN, a LIBDEF is needed, but not to ISPTLIB. ISPTLIB is the input side of table processing. ISPTABL is the output side of table processing. Since data will be written to ISPTABL, ISPTABL cannot be a concatenation. Only one dataset may be allocated to ISPTABL:
if noupdt = 1 | sw.0tbl_chgd = 0 then "TBEND " $tn$ /* don't save */ else do "LIBDEF ISPTABL DATASET ID("isptabl") STACK" "TBCLOSE" $tn$ "LIBDEF ISPTABL" end
If there have been no changes to the table, it is not necessary to TBCLOSE (which writes the table to disk). A simple TBEND is sufficient. Both TBEND and TBCLOSE flush the in-storage copy of the table, but TBEND doesn't write to disk first. Since it doesn't write to disk, the LIBDEF for ISPTABL is not necessary for TBEND.
As with other LIBDEFs, this one only has to exist long enough to close the table. After that, it can be (and should be) released immediately.