Caution: documentation in progress. These are some rough notes which we will use to finish this section.
It could contain forward links to the various I/O Statements section as well as to commands such as ISMxxx, CREATE, etc.
ISAM - we should reread the INTRODUCTION chapter in the AMOS ISAM UserGuide. But our version should also compare the A-Shell implementation to both the AMOS version and also to ISAMA
For RANDOM and SEQUENTIAL files, Chapter 16 of the AMOS Basic manual might provide some background. Again, our version should highlight things relevant to A-Shell, such as:
• Unlike in AMOS, there is really no such thing as a "contiguous" (aka RANDOM) file in Windows or UNIX. The underlying files are sequentially allocated; the random access feature is supported in a layer above that, partly in the OS, partly in A-Shell.
• Because of that, A-Shell in some cases has to guess whether a file was intended to be RANDOM or not, based on whether it is a multiple of 512 bytes as all AMOS RANDOM files would be. This mainly becomes an issue when using the LOOKUP statement, which returns a negative # for "random" files, and a positive # for "sequential" files. Some applications might actually depend on that and thus misbehave, for example, if a sequential file just happened to be a multiple of 512 bytes. In general, modern programs should not rely on the arbitrary unit of 512-byte blocks and instead should use the size in bytes (see SIZE.LIT, SIZE.SBR). Also see the system options ABSLOOKUP and EXTFIO.
• For SEQUENTIAL files (aka "streams"), A-Shell (unlike AMOS) supports the ability to seek directly to a byte position; see MX_FILEPOS.
• For RANDOM files, A-Shell (unlike AMOS) supports the ability to expand them incrementally in place, whether manually (see MX_EXPFIL), or automatically (see system options NOAUTOX, and MX_SETOPTIONS/MX_GETOPTIONS GOP_AUTOX_RAN)
• For ISAM 1.x I think we already have a section somewhere discussing the enhancements in A-Shell relative to AMOS.