• Aucun résultat trouvé

DOS/iS Librarian

Dans le document DOSNSE Librarian Logic (Page 58-62)

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)

(

CORGZ6F

BEGIN6F 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 buffer

with 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 DOPHAS

JOINT 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 of

and should be skipped. the Stow Table.

CHKNEW ,

SORT If preceded by ALLOC or NEWVOL, do

t-....

COPYC ALL. Otherwise, turn on

~

16

switch 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.

Dans le document DOSNSE Librarian Logic (Page 58-62)

Documents relatifs