* INSERT FIRST RECQ                                     HEADER  C:INSFR 0001.000
*                                                                       0002.000
*                  INSERT FIRSTRECQ                                     0003.000
*                                                                       0004.000
         M.PGM     C:INSTFR,MPX-32,3.6.1,00                             0005.000
         DEF       C:INSTFR                                             0006.000
         EXT       C:CMPREC                                             0007.000
SRTCOM8  COMMON    SRTC8(15)                                            0008.000
         ORG       SRTC8                                                0009.000
KEYSZ    DATAW     X'0'                                                 0010.000
RECPTS   REZ       1W                                                   0011.000
LSTTLS   REZ       1W                                                   0012.000
LASTQ    REZ       1W                                                   0013.000
TMP1     REZ       1W                                                   0014.000
REC      REZ       1W                                                   0015.000
LIST     REZ       1W                                                   0016.000
FLNK     REZ       1W                                                   0017.000
BLNK     REZ       1W                                                   0018.000
LSTHDS   REZ       1W                                                   0019.000
FIRSTQ   REZ       1W                                                   0020.000
XLV60    REZ       1W                                                   0021.000
         REL                                                            0022.000
* SEARCH FIRSTRECQ FOR LAST LIST WHOSE FIRST                            0023.000
* RECORD PRECEDES OR IS EQUAL TO THE FIRST                              0024.000
* RECORD OF THE GIVEN LIST                                              0025.000
* INSERT GIVEN LIST BETWEEN BLNK AND FLNK BASED ON88002000* INSERT GIVEN0026.000
* FIRST RECORD IN LIST                                                  0027.000
* STARTING AT HEAD OF QUEUE SEARCH FOR LAST                             0028.000
* ENTRY WHOSE INDICATED FIRST RECORD KEY IS                             0029.000
* LESS THAN OR EQUAL TO KEY OF FIRST                                    0030.000
* RECORD OF GIVEN LIST.                                                 0031.000
* CREATE ENTRY IN FIRSTRECQ FOR GIVEN LIST                              0032.000
* LINK IT BETWEEN BLNK AND FLNK                                         0033.000
         M.REQS                                                         0034.000
FQLSTF   EQU       X'0'                                                 0035.000
FQRECF   EQU       1                                                    0036.000
FQLNKF   EQU       3                                                    0037.000
FQESZ    EQU       4                                                    0038.000
RCADRF   EQU       X'0'                                                 0039.000
FQHD     EQU       X'0'                                                 0040.000
GTV      EQU       2                                                    0041.000
C:INSTFR EQU       $                                                    0042.000
         TRR       R0,X1                                                0043.000
         LW        R0,0W,X1                                             0044.000
         STW       R0,FIRSTQ                                            0045.000
         LW        R0,1W,X1                                             0046.000
         STW       R0,LSTHDS                                            0047.000
         LW        R0,2W,X1                                             0048.000
         STW       R0,RECPTS                                            0049.000
         ADI       X1,3W                                                0050.000
         STW       X1,XLV60                                             0051.000
         STW       R2,LIST         R2 = LIST                            0052.000
         LW        R1,*FIRSTQ                                           0053.000
         STW       R1,FIRSTQ                                            0054.000
         LW        R0,*LSTHDS                                           0055.000
         STW       R0,LSTHDS                                            0056.000
         LW        R0,*RECPTS                                           0057.000
         STW       R0,RECPTS                                            0058.000
* KEYSZ:=FIRSTQ(FIRSTQHD).REC;                                          0059.000
         LW        R0,FQRECF*4,X1  (R1 = FIRSTQ)                        0060.000
         STW       R0,KEYSZ                                             0061.000
* REC:=LISTHEADS(LIST);                                                 0062.000
         ADMW      R2,LSTHDS                                            0063.000
         LW        R0,0W,X2                                             0064.000
         STW       R0,REC                                               0065.000
* BLNK:=FIRSTRECQHD;                                                    0066.000
         LI        R7,FQHD*4       R7 = BLNK                            0067.000
         STW       R7,BLNK                                              0068.000
* WHILE FLNK:=FIRSTRECQ(BLNK).FIRSTLNK                                  0069.000
* NEQ FIRSTRECQHD DO                                                    0070.000
SFR000   EQU       $                                                    0071.000
         LW        R1,BLNK                                              0072.000
         ADMW      R1,FIRSTQ                                            0073.000
         LW        R5,FQLNKF*4,X1                                       0074.000
         STW       R5,FLNK                                              0075.000
*        CI        R5,4*FQHD                                            0076.000
         BCT       EQ,SFR001                                            0077.000
* BEGIN                                                                 0078.000
* IF KEY(REC)> OR =KEY(FIRSTRECQ(FLNK).FIRSTREC) THEN                   0079.000
         LW        R3,FIRSTQ                                            0080.000
         ADR       R5,R3                                                0081.000
         LW        R1,FQRECF*4,X3                                       0082.000
         ADMW      R1,RECPTS       R1 = TMPA                            0083.000
         LW        R3,RCADRF*4,X1  R3 = TMPB                            0084.000
         LW        R1,REC                                               0085.000
         ADMW      R1,RECPTS                                            0086.000
         LW        R2,RCADRF*4,X1  R2 = TMPC                            0087.000
         LW        R4,KEYSZ                                             0088.000
         BL        C:CMPREC                                             0089.000
         CI        R4,GTV                                               0090.000
         BCT       LT,SFR001                                            0091.000
* BLNK:=FLNK;                                                           0092.000
         LW        R5,FLNK                                              0093.000
         STW       R5,BLNK                                              0094.000
         BU        SFR000          LOOP IT                              0095.000
SFR001   EQU       $               CONTINUE                             0096.000
* I:=LIST*FIRSTRECQENTRYSIZE;                                           0097.000
         LW        R3,LIST                                              0098.000
         MPI       R2,FQESZ                                             0099.000
         STW       R3,TMP1                                              0100.000
* FIRSTRECQ(I).FIRSTREC:=REC;                                           0101.000
         ADMW      R3,FIRSTQ                                            0102.000
         LW        R0,REC                                               0103.000
         STW       R0,FQRECF*4,X3                                       0104.000
* FIRSTRECQ(I).FIRSTLNK:=FLNK;                                          0105.000
         LW        R5,FLNK                                              0106.000
         STW       R5,FQLNKF*4,X3                                       0107.000
* FIRSTRECQ(BLNK).FIRSTLNK:=I;                                          0108.000
         LW        R1,BLNK                                              0109.000
         ADMW      R1,FIRSTQ                                            0110.000
         LW        R0,TMP1                                              0111.000
         STW       R0,FQLNKF*4,X1                                       0112.000
* RETURN;                                                               0113.000
         LW        R0,XLV60                                             0114.000
         TRSW      R0                                                   0115.000
* END;                                                                  0116.000
         END                                                            0117.000
