This is a description of the program shown in
Data-in-virtual sample program code.
- The program issues a DIV IDENTIFY and DIV ACCESS for the
data-in-virtual object. The ACCESS returns the current size of the
object in units of 4K bytes.
- If the object contains any data (the size returned by ACCESS is
non-zero), the program issues a DIV MAP to associate the object
with storage the program acquires using GETMAIN. The size of the MAP
(and the acquired storage area) is the same as the size of the object.
- The program now processes the input statements from SYSIN. The
processing depends upon the function requests (S, D, or E). If the
program encounters an end-of-file, it treats it as if an “E”
function was requested.
S function — Set a character
in the object:
- If the byte to change is past the end of the mapped area, the
user asked to increase the size of the object. Therefore:
- If any changes have been made in the mapped virtual storage area
but not saved to the object, the program issues a DIV SAVE. This
save writes the changed 4K pages in the mapped storage to the object.
- The program issues a DIV UNMAP for the storage area acquired
with GETMAIN, and then releases that area using FREEMAIN. The program
skips this is step if the current object size is 0.
- The program acquires storage using GETMAIN to hold the increased
size of the object, and issues a DIV MAP for this storage.
- The program changes the associated byte in the mapped storage.
Note that this does not change the object. The program actually writes
the changes to the object when you issue a DIV SAVE.
D function —
Display a character in the object:
- If the requested location is within the MAP size, the program
references the specified offset into the storage area. If the data
is not already in storage, a page fault occurs. Data-in-virtual processing
brings the required 4K block from the object into storage. Then the
storage reference is re-executed. The contents of the virtual storage
area (i.e. the contents of the object) are displayed.
E
function — End the program:
- If the program has made any changes in the mapped virtual storage
area but has not saved them to the object, the program issues a DIV SAVE.
- The program issues a DIV UNIDENTIFY to terminate usage of
the object. Note that data-in-virtual processing internally generates
a DIV UNMAP and DIV UNACCESS.
- The program terminates.