cdc:nos2.source:nam5871:writeri
Table of Contents
WRITERI
Table Of Contents
- [00002] PROC WRITERI ( (FET),(RECID),(WSA),(LENGTH), STATIS )
- [00062] PROC WRITER
- [00063] PROC RECALL
- [00064] PROC FINDRI
Source Code
- WRITERI.txt
- *DECK WRITERI
- PROC WRITERI ( (FET),(RECID),(WSA),(LENGTH), STATIS );
- BEGIN # WRITERI #
- *IF DEF,IMS
- #
- **
- *
- * 1. PROC NAME AUTHOR DATE
- * WRITERI M. D. PICKARD 77/01/13
- *
- * 2. FUNCTIONAL DESCRIPTION
- * WRITERI WILL WRITE A RECORD TO A SUPIO RANDOM FILE
- * AND ADD THE RECORD IDENT TO THE SUPIO RANDOM INDEX.
- *
- * 3. METHOD USED
- * IF THE FILE IS A SUPIO RANDOM FILE AND THERE IS ROOM IN
- * THE INDEX, FINDRI IS CALLED TO FIND THE PLACE IN THE INDEX
- * FOR THE RECORD IDENT. WRITER IS CALLED TO WRITE THE RECORD.
- * IF THE WRITE IS SUCCESSFULL, THE RI IS ADDED TO THE INDEX.
- *
- * 4. ENTRY PARAMETERS
- * FET ADDRESS OF THE FET
- * RECID RECORD IDENT
- * WSA ADDRESS OF WRITE BUFFER
- * LENGTH LENGTH OF RECORD TO REWRITE
- *
- * 5. EXIT PARAMETERS
- * STATIS RETURN STATUS
- * 0 - OPERATION COMPLETE
- * DECPEOC - PARITY ERROR, OPERATION COMP.
- * DECPE - PARITY ERROR
- * DECAEOC - ADDRESS ERROR, OPER. COMPLETE
- * DECAE - ADDRESS ERROR
- * DECDSOC - DETAILED STATUS ERROR, OP. CMP.
- * DECDS - DETAILED STATUS ERROR
- * DECTL - TRACK LIMIT
- * RANRSEQ - RANDOM REQUEST ON SEQ. FILE
- * BADRI - BAD RECORD IDENT, DUPLICATE
- * INDXSML - INDEX TOO SMALL TO ADD RECID
- * NOTSIOF - NOT A SUPIO FILE
- *
- * 6. COMDECKS CALLED
- * SIODEFS SUPIO SYMPL DEFS
- * SIOBASE SUPIO BASED ARRAY DEFINITIONS
- *
- * 7. ROUTINES CALLED
- * FINDRI FINDS PLACE FOR RECORD IDENT
- * RECALL MACREL CPU RECALL SYMPL INTERFACE
- * WRITER MACREL WRITER SYMPL INTERFACE
- *
- * 8. DAYFILE MESSAGES
- * NONE.
- *
- #
- *ENDIF
- CONTROL NOLIST; # STOPS LIST OF SIODEFS AND SIOBASE #
- *CALL SIODEFS
- *CALL SIOBASE
- CONTROL LIST;
- XREF
- BEGIN
- PROC WRITER;
- PROC RECALL;
- PROC FINDRI;
- END
- ITEM
- FET U, # FET ADDRESS #
- RECID U, # RECORD IDENT #
- WSA U, # WORKING STORAGE AREA, WRITE FROM BUFFER #
- LENGTH U, # RECORD LENGTH #
- STATIS U; # RETURN STATUS #
- ITEM
- I U, # INDUCTION VARIABLE #
- REQWORD U, # REQUEST WORD FOR WRITER #
- TEMP U, # TEMPORARY UNSIGNED INTEGER #
- TEMPB B; # TEMPORARY BOOLEAN #
- P<SIOFET> = FET; # FORMAT FET #
- IF FETRAN[0]
- THEN # FET IS RANDOM FILE FET #
- BEGIN # SEE IF THE INDEX IS OK #
- P<SIOINDX> = FETINDX[0]; # FORMAT THE INDEX #
- IF SIONAME[0] EQ "SUPIOINDEX"
- THEN # FILE IS SUPIO RANDOM FILE #
- BEGIN
- IF ( LINDX[0] + 1 ) * SIOINDL LS FETINDL[0]
- THEN # THERE"S ROOM IN THE INDEX FOR WRITE #
- BEGIN
- FINDRI(LOC(SIOINDX),RECID,TEMP,TEMPB); # FIND RI IN INDX #
- IF NOT TEMPB
- THEN # NOT A DUPLICATE RECORD IDENT, #
- BEGIN # TEMP CONTAINS PLACE IT SHOULD GO #
- FETFST[0] = WSA; # SET FIRST #
- FETIN[0] = WSA + LENGTH; # SET IN FOR BUFFER FULL #
- FETOUT[0] = WSA; # SET OUT #
- FETLMT[0] = FETIN[0] + 1; # SET LIMIT #
- FETRR[0] = LOC(REQWORD); # RETURN RANDOM ADDR. TO REQWORD#
- WRITER(SIOFET,0); # WRITE THE RECORD #
- RECALL(SIOFET); # WAIT TIL COMPLETE BIT SET #
- IF FETABNT[0] EQ 0
- THEN # WRITE TOOK PLACE OK #
- BEGIN # MOVE HIGHER ORDINAL DOWN TO MAKE ROOM #
- FOR I = LINDX[0] STEP -1 UNTIL TEMP DO
- BEGIN # MOVE ALL HIGHER ENTRIES DOWN ONE #
- RI[I+1] = RI[I]; # MOVE RECORD IDENT DOWN ONE #
- RL[I+1] = RL[I]; # MOVE RECORD LENGTH DOWN ONE #
- RANINDX[I+1] = RANINDX[I]; # MOVE RANDOM INDEX DOWN #
- END
- RI[TEMP] = RECID; # SET THIS ENTRY RI FIELD #
- RL[TEMP] = LENGTH; # SET THIS ENTRY RECORD LENGTH #
- RANINDX[TEMP] = REQWORD;
- LINDX[0] = LINDX[0] + 1; # ADJUST LAST INDEX ORDINAL #
- CINDX[0] = TEMP; # SET CURRENT INDEX POSITION #
- STATIS = 0;
- END
- ELSE
- STATIS = FETDEC[0]; # USE DETAIL ERROR CODE FOR STATUS #
- END
- ELSE # DUPLICATE #
- STATIS = BADRI; # BAD RECORD IDENT #
- END
- ELSE # INDEX AREA TO SMALL #
- STATIS = INDXSML; # SET RETURN STATUS #
- END
- ELSE # NOT A SUPIO INDEX #
- STATIS = NOTSIOF; # SET RETURN STATUS #
- END
- ELSE # NOT A RANDOM FILE #
- STATIS = RANRSEQ; # SET RETURN STATUS #
- RETURN;
- END
- TERM # WRITERI #
cdc/nos2.source/nam5871/writeri.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator