* INSERT LASTRECQ                                       HEADER  C:INSLR 0001.000
*                                                                       0002.000
*                  INSERT LASTRECQ                                      0003.000
*                                                                       0004.000
         M.PGM     C:INSTLR,MPX-32,3.6.1,00                             0005.000
         DEF       C:INSTLR                                             0006.000
         EXT       C:CMPREC                                             0007.000
SRTCOM7  COMMON    SRTC7(15)                                            0008.000
         ORG       SRTC7                                                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
XLV60    REZ       1W                                                   0019.000
         REL                                                            0020.000
* DETERMINE LAST LIST WHOSE LAST RECORD WILL BE                         0021.000
* MERGED PRIOR TO LAST RECORD OF GIVEN LIST                             0022.000
* INSERT LIST BETWEEN BLNK AND FLNK BASED ON LAST                       0023.000
* RECORD IN LIST                                                        0024.000
* STARTING AT HEAD OF QUEUE COMPARE KEYS OF                             0025.000
* POINTED TO RECORDS STOPPING WHEN KEY OF                               0026.000
* LAST RECORD OF GIVEN LIST COMES BEFORE KEY                            0027.000
* OF RECORD INDICATED BY QUEUE ENTRY                                    0028.000
* SET BLNK TO PRECEDING ENTRY                                           0029.000
* CREATE ENTRY IN LASTRECQ FOR GIVEN LIST                               0030.000
* LINK IN BETWEEN FLNK AND BLNK                                         0031.000
         M.REQS                                                         0032.000
LQLSTF   EQU       X'0'                                                 0033.000
LQRECF   EQU       1                                                    0034.000
LQLNKF   EQU       3                                                    0035.000
LQESZ    EQU       4                                                    0036.000
RCADRF   EQU       X'0'                                                 0037.000
LQHD     EQU       X'0'                                                 0038.000
LTV      EQU       X'0'                                                 0039.000
C:INSTLR EQU       $                                                    0040.000
         TRR       R0,X1                                                0041.000
         LW        R0,0W,X1                                             0042.000
         STW       R0,LASTQ                                             0043.000
         LW        R0,1W,X1                                             0044.000
         STW       R0,LSTTLS                                            0045.000
         LW        R0,2W,X1                                             0046.000
         STW       R0,RECPTS                                            0047.000
         ADI       X1,3W                                                0048.000
         STW       X1,XLV60                                             0049.000
         STW       R2,LIST         R2 = LIST                            0050.000
         LW        R1,*LASTQ                                            0051.000
         STW       R1,LASTQ                                             0052.000
         LW        R0,*LSTTLS                                           0053.000
         STW       R0,LSTTLS                                            0054.000
         LW        R0,*RECPTS                                           0055.000
         STW       R0,RECPTS                                            0056.000
* KEYSZ:=LASTRECQ(LASTRECQHD).LASTREC;                                  0057.000
         LW        R0,LQRECF*4,X1  (R1 = LASTQ)                         0058.000
         STW       R0,KEYSZ                                             0059.000
* REC:=LISTTAILS(LIST);                                                 0060.000
         ADMW      R2,LSTTLS                                            0061.000
         LW        R0,0W,X2                                             0062.000
         STW       R0,REC                                               0063.000
* BLNK:=LASTRECQHD;                                                     0064.000
         LI        R7,LQHD*4       R7 = BLNK                            0065.000
         STW       R7,BLNK                                              0066.000
* WHILE FLNK:=LASTRECQ(BLNK).LASTLNK NEQ LASTRECQHD DO 84016000* WHILE F0067.000
SLR000   EQU       $                                                    0068.000
         LW        R1,BLNK                                              0069.000
         ADMW      R1,LASTQ                                             0070.000
         LW        R5,LQLNKF*4,X1  R5 = FLNK                            0071.000
         STW       R5,FLNK                                              0072.000
*        CI        R5,4*LQHD                                            0073.000
         BCT       EQ,SLR001                                            0074.000
* BEGIN                                                                 0075.000
* IF KEY(REC)>KEY(LASTRECQ(FLNK).REC) THEN                              0076.000
         LW        R1,LASTQ                                             0077.000
         ADR       R5,R1                                                0078.000
         LW        R3,LQRECF*4,X1                                       0079.000
         ADMW      R3,RECPTS                                            0080.000
         LW        R2,RCADRF*4,X3  R2 = TMPB                            0081.000
         LW        R1,REC                                               0082.000
         ADMW      R1,RECPTS                                            0083.000
         LW        R3,RCADRF*4,X1  R3 = TMPC                            0084.000
         LW        R4,KEYSZ                                             0085.000
         BL        C:CMPREC                                             0086.000
         CI        R4,LTV                                               0087.000
         BCT       GT,SLR001                                            0088.000
* BLNK:=FLNK;                                                           0089.000
         LW        R5,FLNK         R5 = FLNK                            0090.000
         STW       R5,BLNK                                              0091.000
* LOOP BACK                                                             0092.000
         BU        SLR000                                               0093.000
SLR001   EQU       $               CONTINUE                             0094.000
* I:=LIST*LASTRECQENTRYSIZE;                                            0095.000
         LW        R1,LIST                                              0096.000
         MPI       R0,LQESZ                                             0097.000
         STW       R1,TMP1                                              0098.000
* LASTRECQ(I).LASTREC:=REC;                                             0099.000
         ADMW      R1,LASTQ                                             0100.000
         LW        R0,REC                                               0101.000
         STW       R0,LQRECF*4,X1                                       0102.000
* LASTRECQ(I).LASTLNK:=FLNK;                                            0103.000
         LW        R5,FLNK                                              0104.000
         STW       R5,LQLNKF*4,X1                                       0105.000
* LASTRECQ(BLNK).LASTLNK:=I;                                            0106.000
         LW        R1,BLNK                                              0107.000
         ADMW      R1,LASTQ                                             0108.000
         LW        R0,TMP1                                              0109.000
         STW       R0,LQLNKF*4,X1                                       0110.000
* RETURN;                                                               0111.000
         LW        R0,XLV60                                             0112.000
         TRSW      R0                                                   0113.000
* END;                                                                  0114.000
         END                                                            0115.000
