CORGZ6 Process:
56 DOS/iS Librarian
JOINT:
JOINT 1:
Initialize remaining 10RBs and extent definition blocks.
If COpy NEW, go to COPYXNEW--If COPY ALL, go to COPYXALL If selective COPY
Collect all names of members to be copied of the same type in the name buffer
CHKDUPNM: Compare all names in the name buffer and eliminate duplicates.
ENDNMCMP: Compare all names in the name buffer with all entries in the 'F ROM' directory Names found to be present in the 'F ROM' directory are sorted in the same
COpy:
COPY1:
FNDCPY:
sequence as in the directory; the address of the corresponding directory record is saved in the name buffer.
Names not found in the 'FROM' dir.
are printed on SYSLST (MSG: 3M331).
Allocate 2 buffers adjacent to the name buffer for copying the I ib. member Read last 'TO' directory record, where the new directory entry has to be inserted into IOBUFF4.
Read 'F ROM' directory record containing entry to be copied, if not
already in memory (IOBUFF3).
Scan 'F ROM' directory record for member to be copied.
COPYDIR: Build and write new directory entry.
The first entry to be copied is not yet written into the 'TO' directory but saved in order to maintain the integrity ofthe 'TO' library as long as possible.
Copy library member using MBUFFI and MBUFF2 alternatively.
ENDCPYM
~
t
c : J COPYXNEW
-(j
COPYXALL
Chart 14. CORGZ3F (Part 3 of 3)
COPYDIR
ENDCPYM: If COpy ALL or NEW, go to NXTALL ---I,----~
Else get next name in name buffer and address of its directory record.
If within current record, go to FNDCPY
- - - + - - - ,
If not, go to COPY 1
- - - + - - - . ,
If end of na me buffer
ENDCPYM1: Write current 'TO' directory record.
CHKTOD: Compare all names of members to be copied in the name buffer with all entries in the 'TO' directory. Erase all names found to
be present in the 'TO' directory from: COPY1
in case of COPY NEW: the name buffer then branch to NXTNEW
+---.t
else from the 'TO' directory.
If more members have to be copied (the names of which did not fit into the name buffer during the processing of a
COPYxMOD.ALL) move all names in the buffer not yet processed
to the top of the buffer and go to ENDNMCMP
1
-ENDCOf>Y: Else write out the saved directory entry for the first member copied and the new library descriptor.
FNDCPY
2
If more'to be copied for the ,same library type go to JQINT1
- - + - - - ,
If the next library type has to be processed after a COPY ALL
statement go to NOTCALL - - - 1 r - - - , NEXTCARD: Else branch to STMTSCAN in root phase to read next control
statement
- - - + - - - ,
JOINT JOINT
COPYXNEW: Indicate COPYXALL: Indicate
COPYx NEW processing COPYx ALL processing
COPYXAL 1: Read 'FROM' directory (as much as possible) into name buffer and set name buffer entry length according to directory entry length.
CORGZ STMTSCAN
If COPY NEW, go to CHKTOD
---+----i-.l
NXTNEW: Else read last 'TO' directory record. i.e. the record where the new entry has to be inserted into IOBUFF4,
NXTALL: Copy all entries until the end of the 'FROM'library, then go to ENDCOPY
NOT CALL
ENDNMCMP
Chart 15.. CORGZ6F (Part· .. of 3)
(
CORGZ6FBEGIN6F JOINT1
Allocate buffers (GETADR) as follows: Collect all names of members 4K stow table and 2 2K directqry to be copied into the name buffer.
buffers at end of program.
26K for $MAI NDI F, also used for I ibrary buffer, at end of partition.
CHKDUPNM Remainder of partition for name buffer.
Compare all names in the name buffer and eliminate
COPYWHAF any· duplicates.
Determine if COPYC is preceded
by ALLOC, NEWVOL dr MERGE, or if COMPARE
CORGZ6F was entered from CORGZ7F
to copy
$
phases. Compare names in name bufferwith entries in the 'FROM' directory recoFd. Then read next record and repeat. If an entry is not found, eliminate
Determine input and output from name buffer and save
libraries. Save logical units, name for message. If the entry library addresses, and !lddresses is found, put it in Stow Table
8
of LDR's in 10TABLE. In the case of private librarie·s, read the LDR's into the 10TABLE.
~
16 DOPHASJOINT CONTFDIR
E2
Determine type of COPYC Remove the name just entered
stlltemilnt: ..
L . . . . - in Stow Table from name buffer.
If more entries are still in
Selective name buffer, go to. COMPARE.
~ I-COPYC NEW
-
I-COPYC ALL.. ENDFMCMP
COPYCALL
Process any entries left in
Determine if ALLOC preceded Stow Table via STOWPROC.
...
COPYC ALL. If yes, indicat!!~
First the entries must be$
phases were already copied moved to the beginning ofand should be skipped. the Stow Table.
CHKNEW ,
SORT If preceded by ALLOC or NEWVOL, do
t-....
COPYC ALL. Otherwise, turn on~
16switch and read a record from the 'TO' directory,
GETCARD SORT
58 DOS/VS Librarian
Chart 16. CORGZ6
f(Part 2 of 3)
COMPARE
COPYCALL
SORT Set up IORB's to read 'F ROM'
0/
directory into NAMEBUFF area for COPYC ALL, NEW, and for copying $ phases during ALLOC.
NXTINTRY
Get next entry to be processed. If this is a non-$-phase during copy
for ALLOC, the copy is complete. - - t - - - i
DOPHASE
If hex 'FF' is found during
COPYC ALL, the copy is complete. It
- + - - - '
ENDFMCMP
ENDCDIR
Process any entries left in"
Stow Table via STOWPROC.
First the entries must be moved to the beginning of the Stow Table.
GETCARD
If COPY ALL 1T)0de,len';.:t::.er:",t::,h::.e _ _ -I-_--.
root phase at F ROMSI X. Other-wise go to STMTSCAN to get next contro I card,
COPYC NEW, compare entry to 'TO'
d i r e e t o r y . - - - + - - - , CORGZ STMTSCAN
-Entry. is to be put into the Stow Table to be copied. If no more room in Stow Table, process it. - - - f J
rIN~S~E~R~T ______ ~ __________ __,STOWPROC Insert the entry into the Stow Table,
sorting on the block number address in the 'FROM' directory. The table is filled from bottom to top
NO
CONTFDIR
PROCNEW
Determi ne ifthe current entry is a special case
which is always copied - - - - -... 0.01 or never copied
- - - t - ,
NXTOCMP
Compare the entry to the 'TO' directory entries until the 'TO' directory entry is greater than the 'FROM' directory entry.