         TITLE 'DOMAIN GENERATED GAPC'
*  ALINK 1.00.042.0 on Thu May 14 08:25:39 2020
*^  Compiled on Thu May 14 08:25:35 2020
*^ IDENTS - GAPCC AAA
**************************
*    GAPCC000
**************************
GAPCC000 CSECT
GAPCC000 AMODE ANY
GAPCC000 RMODE ANY
*XREF - GAPCC000 GAPC.FixedOCEAPC (gateway)
*  R11 + 0000 Literals        (1036 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (88 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> array [1] of
*                    array [28] of
*                    FixedString len 8 (fsDxCodes)
*        0068(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 73 (fsLineItems)
*        0072(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 1 (fsActionFlags)
*        0076(R12)-> FixedString len 3 (fsAgeInYears)
*        0080(R12)-> FixedString len 1 (fsSexCode)
*        0084(R12)-> FixedString len 16 (fsFromThruDates)
*        0088(R12)-> array [1] of
*                    array [30] of
*                    FixedString len 2 (fsCondCodes)
*        0092(R12)-> FixedString len 3 (fsBillType)
*        0096(R12)-> FixedString len 13 (fsNpiNumber)
*        0100(R12)-> FixedString len 6 (fsOscarNumber)
*        0104(R12)-> FixedString len 2 (fsPatientStatus)
*        0108(R12)-> FixedString len 1 (fsNonOPPSflag)
*        0112(R12)-> array [1] of
*                    array [30] of
*                    FixedString len 2 (fsOccCodes)
*        0116(R12)-> array [1] of
*                    array [36] of
*                    FixedString len 11 (fsValueCodes)
*        0120(R12)-> array [1] of
*                    array [28] of
*                    FixedString len 24 (fsDxEdits)
*        0124(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 90 (fsProcedureEdits)
*        0128(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 60 (fsModifierEdits)
*        0132(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 12 (fsDateEdits)
*        0136(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 15 (fsRevenueEdits)
*        0140(R12)-> array [1] of
*                    array [450] of
*                    FixedString len 51 (fsApcReturnBuffer)
*        0144(R12)-> FixedString len 403 (fsClaimReturnBuffer)
*  R12 + 0148 Local pool      (8 bytes)
*  R12 + 0156 Locals & temps  (3252 bytes)
*        0156(R12)-> Integer len 4 (NumLineItems)
*        0160(R12)-> Integer len 4 (NumDxCodes)
*        0164(R12)-> String (AgeInYears)
*        0176(R12)-> String (SexCode)
*        0188(R12)-> String (FromThruDates)
*        0200(R12)-> array [30] of
*                    String (CondCodes)
*        0560(R12)-> String (BillType)
*        0572(R12)-> String (NpiNumber)
*        0584(R12)-> String (OscarNumber)
*        0596(R12)-> String (PatientStatus)
*        0608(R12)-> String (NonOPPSflag)
*        0620(R12)-> array [30] of
*                    String (OccCodes)
*        0980(R12)-> array [36] of
*                    String (ValueCodes)
*        1412(R12)-> array [10] of
*                    String (OutputConditionCodes)
*        1532(R12)-> Integer len 4 (i)
*        1536(R12)-> String (Const9)
*        1548(R12)-> String (Hcpcs)
*        1560(R12)-> array [5] of
*                    String (Mods)
*        1620(R12)-> String (ServiceDate)
*        1632(R12)-> Integer len 4 (RevenueCode)
*        1636(R12)-> String (ServiceUnitsInput)
*        1648(R12)-> String (LineChargesInput)
*        1660(R12)-> array [4] of
*                    String (CB_Edits)
*        1708(R12)-> String (CB_APC)
*        1720(R12)-> String (CB_SI)
*        1732(R12)-> Integer len 4 (CB_Payment_Indicator)
*        1736(R12)-> String (CB_Discounting_Formula)
*        1748(R12)-> String (CB_LI_Den_Rej_Flag)
*        1760(R12)-> String (CB_Packaging_Flag)
*        1772(R12)-> String (CB_PAF)
*        1784(R12)-> String (CB_PMF)
*        1796(R12)-> String (tempstr)
*        1808(R12)-> String (dxstr)
*        1820(R12)-> String (poastr)
*        1832(R12)-> String (fromstr)
*        1844(R12)-> String (thrustr)
*        1856(R12)-> Integer len 4 (Age)
*        1860(R12)-> Integer len 4 (Sex)
*        1864(R12)-> Integer len 4 (OPPSFlag)
*        1868(R12)-> Integer len 4 (ClaimProcFlag)
*        1872(R12)-> Integer len 4 (NumLines)
*        1876(R12)-> Integer len 4 (OverallClaimDisp)
*        1880(R12)-> Integer len 4 (ClaimRejDisp)
*        1884(R12)-> Integer len 4 (ClaimDenDisp)
*        1888(R12)-> Integer len 4 (ClaimRtpDisp)
*        1892(R12)-> Integer len 4 (ClaimSusDisp)
*        1896(R12)-> Integer len 4 (LineItemRejDisp)
*        1900(R12)-> Integer len 4 (LineItemDenDisp)
*        1904(R12)-> array [30] of
*                    Integer len 4 (ClaimRejReas)
*        2024(R12)-> array [30] of
*                    Integer len 4 (ClaimDenReas)
*        2144(R12)-> array [30] of
*                    Integer len 4 (ClaimRtpReas)
*        2264(R12)-> array [30] of
*                    Integer len 4 (ClaimSusReas)
*        2384(R12)-> array [30] of
*                    Integer len 4 (LineItemRejReas)
*        2504(R12)-> array [30] of
*                    Integer len 4 (LineItemDenReas)
*        2624(R12)-> Integer len 4 (ApcReturnFlag)
*        2628(R12)-> String (VersionId)
*        2640(R12)-> Integer len 4 (NoppsBillFlag)
*        2644(R12)-> Integer len 4 (ReturnCode)
*        2648(R12)-> array [20] of
*                    Integer len 4 (dxEdit)
*        2728(R12)-> array [30] of
*                    Integer len 4 (procedureEdit)
*        2848(R12)-> array [20] of
*                    Integer len 4 (modifierEdit)
*        2928(R12)-> array [30] of
*                    Integer len 4 (dateEdit)
*        3048(R12)-> array [30] of
*                    Integer len 4 (revenueEdit)
*        3168(R12)-> String (PaymentApc)
*        3180(R12)-> String (HcpcsApc)
*        3192(R12)-> String (StatusIndicator)
*        3204(R12)-> Integer len 4 (PaymentIndicator)
*        3208(R12)-> Integer len 4 (DiscountingFactor)
*        3212(R12)-> Integer len 4 (LineDenialFlag)
*        3216(R12)-> Integer len 4 (PackagingFlag)
*        3220(R12)-> Integer len 4 (PayAdjFlag)
*        3224(R12)-> String (PayMethFlag)
*        3236(R12)-> String (SiOut)
*        3248(R12)-> String (PiOut)
*        3260(R12)-> String (ServiceUnitsOutput)
*        3272(R12)-> String (ActionFlagOutput)
*        3284(R12)-> String (CompAdjFlag)
*        3296(R12)-> String (ValueCodeBuffer)
*        3308(R12)-> String (HCPCSPayerModifier01)
*        3320(R12)-> String (HCPCSPayerModifier02)
*        3332(R12)-> Integer len 4 (ResetBuffers)
*        3336(R12)-> Integer len 4 (_attribute table save_)
*        3340(R12)-> Unknown ()
*        3340(R12)-> Void ()
*        3352(R12)-> String ()
*        3364(R12)-> Integer len 4 ()
*        3368(R12)-> String ()
*        3380(R12)-> String ()
*        3392(R12)-> String ()
*        3404(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 3408)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,3408  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAA00102
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAA00102 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAA00103
         DC    A(DMNSCPY) @00000
         DC    A(GAPCC132) @00004
         DC    F'0' @00008
         DC    F'7' @00012
         DC    A(DMNSUBS) @00016
         DC    A(DMNSCMP) @00020
         DC    F'1' @00024
         DC    A(DMNTRMR) @00028
         DC    A(GAPCC133) @00032
         DC    A(V40UNPK) @00036
         DC    F'15' @00040
         DC    F'8' @00044
         DC    F'27' @00048
         DC    F'9' @00052
         DC    F'36' @00056
         DC    F'10' @00060
         DC    A(GAPCC134) @00064
         DC    A(DMNS2I) @00068
         DC    X'FFFFFFFF' @00072
         DC    A(GAPCC135) @00076
         DC    F'4' @00080
         DC    A(V40PACK) @00084
         DC    A(GAPCC136) @00088
         DC    F'5' @00092
         DC    A(GAPCC137) @00096
         DC    A(DMNSLEN) @00100
         DC    A(DMNCCAT) @00104
         DC    A(DMNI2S) @00108
         DC    A(GAPCC138) @00112
         DC    A(DMNINIT) @00116
         DC    A(GAPCCATT) @00120
         DC    A(DMNCNUM) @00124
         DC    A(DMNFREE) @00128
         DC    H'1'  0 1 @00132
         DC    H'403'  1 147 @00134
         DC    H'3'  0 3 @00136
         DC    H'16'  0 16 @00138
         DC    H'13'  0 13 @00140
         DC    H'6'  0 6 @00142
         DC    H'2'  0 2 @00144
         DC    H'11'  0 11 @00146
         DC    H'8'  0 8 @00148
         DC    H'73'  0 73 @00150
         DC    H'76'  0 76 @00152
         DC    XL16'00680011000F000C0005000000010005' @00154
         DC    XL16'000C00020000000C0008000000080004'
         DC    XL16'0000000C00090000000C000A00000001'
         DC    XL16'0004000C00030000000C00050000000C'
         DC    XL16'00020000000800024000000C00010000'
         DC    XL16'000C00010000000C00010000000C0002'
         DC    XL8'0000000C00010000'
         DC    XL16'00B80020001900080001000000080003' @00258
         DC    XL16'4000000C000D0000000C000600000008'
         DC    XL16'00010000000800010000000800010000'
         DC    XL16'00080001000000080001000000080001'
         DC    XL16'00000008000100000001000400080003'
         DC    XL16'6000000100080008000360000001001E'
         DC    XL16'00080003600000010010000800036000'
         DC    XL16'0001000C000800036000000100060008'
         DC    XL16'00036000000800014000000C00080000'
         DC    XL16'000C00020000000C0001000000080001'
         DC    XL16'0000000C006E00000001000A000C0002'
         DC    XL8'0000000800020000'
         DC    H'24'  0 24 @00442
         DC    XL16'00100002000100010008000800036000' @00444
         DC    H'90'  0 90 @00460
         DC    H'60'  0 60 @00462
         DC    H'12'  0 12 @00464
         DC    H'15'  0 15 @00466
         DC    H'51'  0 51 @00468
         DC    XL16'003A00080008000C00050000000C0005' @00470
         DC    XL16'0000000C00050000000D000900090000'
         DC    XL16'000C00010000000C00098000000C000A'
         DC    XL10'8000000D000300030000'
         DC    XL16'006600100010000C00050000000C0005' @00528
         DC    XL16'0000000C00050000000C00020000000C'
         DC    XL16'00020000000800010000000800010000'
         DC    XL16'000800010000000800020000000C0001'
         DC    XL16'0000000C00098000000C000A8000000C'
         DC    XL16'00010000000C00020000000C00020000'
         DC    XL6'000C00020000'
         DC    XL16'0010000200010001001E000800036000' @00630
         DC    XL16'00100002000100010014000800036000' @00646
         DC    XL16'00100002000100010004000800036000' @00662
         DC    XL16'00100002000100010005000800036000' @00678
         DC    XL16'04071C001C001C00101E00041C000000' @00694
         DC    XL16'1C001C001C001C001C00101E00041C00'
         DC    XL16'0000102400041C000000100A00041C00'
         DC    XL16'000004031C001C00100500041C000000'
         DC    XL16'1C0004031C001C00100400041C000000'
         DC    XL16'1C001C0004031C001C001C001C001C00'
         DC    XL16'1C001C001C001C001C00042F101E0004'
         DC    XL16'04030000101E000404030000101E0004'
         DC    XL16'04030000101E000404030000101E0004'
         DC    XL16'04030000101E00040403000004031C00'
         DC    XL16'04071014000404030000101E00040403'
         DC    XL16'00001014000404030000101E00040403'
         DC    XL16'0000101E0004040300001C001C001C00'
         DC    XL16'04131C001C001C001C001C001C001C00'
         DC    XL16'1C001C0004131C0004031C001C001C00'
         DC    XL2'0000'
         DC    CL1'9' @00936
         DC    CL8'        ' @00937
         DC    CL1' ' @00945
         DC    CL40'                                        ' @00946
         DC    CL36'                                    '
         DC    CL9'         ' @01022
         DC    CL3'   ' @01031
AAA00103 XC    148(8,R12),148(R12)
         LA    R4,148(R12)
         MVC   152(4,R12),44(R10)
         ST    R4,44(R10)
         LA    R14,694(R11)
         ST    R14,60(R13)
         ST    R4,64(R13)
         LA    R14,156(R12)
         ST    R14,68(R13)
         L     R15,116(R11)   DMNINIT
         BASR  R14,R15
         MVC   3336(4,R12),48(R10)
         MVC   48(4,R10),120(R11)   GAPCCATT
         MVC   3404(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),120(R11)   GAPCCATT
         L     R15,124(R11)   DMNCNUM
         BASR  R14,R15
*INPUT
*OUTPUT
*string      CB_Payment_Indicator;
*S127: Const9 :="9";
         LA    R14,1536(R12)   CONST9
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,936(R11)   9
         ST    R14,64(R13)
         MVC   70(2,R13),132(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S129: /* V12.2, 2011-04-28, no_memory variable is no longer available
*S130:  * Setting fsClaimReturnBuffer to 9 as the default value, and s
*S131:  */
*S132: fsClaimReturnBuffer:=Const9;
         L     R2,144(R12)   FSCLAIMRETURNBUFFER
         ST    R2,60(R13)
         MVC   68(2,R13),134(R11)   403
         LA    R14,1536(R12)   CONST9
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S134: do GAPC.VarInitRecord();
         L     R15,4(R11)   GAPCC132
         BASR  R14,R15
*S136: /*copy fixed input into variable for standard API calls later,
*S137: /* v10.3 slc#18143 blank strings not working consistently for t
*S138:   * implicit conversion on an all blank string appear to cause
*S139: AgeInYears :=fsAgeInYears;
         LA    R14,164(R12)   AGEINYEARS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),76(R12)   FSAGEINYEARS
         MVC   70(2,R13),136(R11)   3
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S140: SexCode :=fsSexCode;
         LA    R14,176(R12)   SEXCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),80(R12)   FSSEXCODE
         MVC   70(2,R13),132(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S141: FromThruDates :=fsFromThruDates;
         LA    R14,188(R12)   FROMTHRUDATES
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),84(R12)   FSFROMTHRUDATES
         MVC   70(2,R13),138(R11)   16
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S142: BillType :=fsBillType;
         LA    R14,560(R12)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),92(R12)   FSBILLTYPE
         MVC   70(2,R13),136(R11)   3
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S143: NpiNumber :=fsNpiNumber;
         LA    R14,572(R12)   NPINUMBER
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),96(R12)   FSNPINUMBER
         MVC   70(2,R13),140(R11)   13
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S144: OscarNumber :=fsOscarNumber;
         LA    R14,584(R12)   OSCARNUMBER
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),100(R12)   FSOSCARNUMBER
         MVC   70(2,R13),142(R11)   6
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S145: PatientStatus :=fsPatientStatus;
         LA    R14,596(R12)   PATIENTSTATUS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),104(R12)   FSPATIENTSTATUS
         MVC   70(2,R13),144(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S146: NonOPPSflag :=fsNonOPPSflag;
         LA    R14,608(R12)   NONOPPSFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),108(R12)   FSNONOPPSFLAG
         MVC   70(2,R13),132(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S148: for( i:=0 until 30-1 ){
         XC    1532(4,R12),1532(R12)   I
AAA00106 L     R2,1532(R12)   I
         CHI   R2,29
         JH    AAA00108
*S149: OccCodes[i]:=fsOccCodes[i];
         LA    R3,620(R12)   OCCCODES
         L     R4,1532(R12)   I
         MHI   R4,12
         AR    R3,R4
         L     R5,112(R12)   FSOCCCODES
         L     R6,1532(R12)   I
         MHI   R6,2
         AR    R5,R6
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         MVC   70(2,R13),144(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
AAA00107 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00106
*S150: }
*S151: for( i:=0 until 30-1 ) {
AAA00108 XC    1532(4,R12),1532(R12)   I
AAA00109 L     R2,1532(R12)   I
         CHI   R2,29
         JH    AAA00111
*S152: CondCodes[i]:=fsCondCodes[i];
         LA    R3,200(R12)   CONDCODES
         L     R4,1532(R12)   I
         MHI   R4,12
         AR    R3,R4
         L     R5,88(R12)   FSCONDCODES
         L     R6,1532(R12)   I
         MHI   R6,2
         AR    R5,R6
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         MVC   70(2,R13),144(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
AAA00110 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00109
*S153: }
*S154: for( i:=0 until 24 + 12-1 ){
AAA00111 XC    1532(4,R12),1532(R12)   I
AAA00112 L     R2,1532(R12)   I
         CHI   R2,35
         JH    AAA00114
*S155: ValueCodes[i]:=fsValueCodes[i];
         LA    R3,980(R12)   VALUECODES
         L     R4,1532(R12)   I
         MHI   R4,12
         AR    R3,R4
         L     R5,116(R12)   FSVALUECODES
         L     R6,1532(R12)   I
         MHI   R6,11
         AR    R5,R6
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         MVC   70(2,R13),146(R11)   11
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
AAA00113 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00112
*S156: }
*S158: loop( i:=0; i<28; i+=1 ){
AAA00114 XC    1532(4,R12),1532(R12)   I
AAA00115 L     R2,1532(R12)   I
         CHI   R2,28
         JNL   AAA00119
*S159: /*V13.0T HIPAA*/
*S160: dxstr :=StrPartial( fsDxCodes[i], 0, 7 );
         L     R3,64(R12)   FSDXCODES
         L     R4,1532(R12)   I
         MHI   R4,8
         AR    R3,R4
         LA    R14,1808(R12)   DXSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),148(R11)   8
         MVC   72(4,R13),8(R11)   0
         MVC   76(4,R13),12(R11)   7
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S161: if( dxstr<="        " and i>3 ) then break;%first non pdx blank
         LA    R14,1808(R12)   DXSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,937(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),148(R11)   8
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JH    AAA00116
         L     R6,1532(R12)   I
         CHI   R6,3
         JNH   AAA00116
         J     AAA00119
*S162: NumDxCodes+=1;
AAA00116 LHI   R2,1
         A     R2,160(R12)   NUMDXCODES
         ST    R2,160(R12)   NUMDXCODES
*S163: poastr :=StrPartial( fsDxCodes[i], 7, 1 );
         L     R3,64(R12)   FSDXCODES
         L     R4,1532(R12)   I
         MHI   R4,8
         AR    R3,R4
         LA    R14,1820(R12)   POASTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),148(R11)   8
         MVC   72(4,R13),12(R11)   7
         MVC   76(4,R13),24(R11)   1
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S164: StrTrimRight( dxstr, " " );
         LA    R14,1808(R12)   DXSTR
         ST    R14,60(R13)
         LA    R14,945(R11)
         ST    R14,3340(R12)
         MVC   3344(2,R12),132(R11)   1
         MVC   3346(2,R12),132(R11)   1
         XC    3348(4,R12),3348(R12)
         LA    R14,3340(R12)
         ST    R14,64(R13)
         L     R15,28(R11)   DMNTRMR
         BASR  R14,R15
*S165: do GAPC.VarLoadDxCode( i, dxstr, poastr );
         LA    R14,1532(R12)   I
         ST    R14,64(R13)
         LA    R14,1808(R12)   DXSTR
         ST    R14,68(R13)
         LA    R14,1820(R12)   POASTR
         ST    R14,72(R13)
         L     R15,32(R11)   GAPCC133
         BASR  R14,R15
*S166: if( dxstr<="        " and i=3 ) then break;%pdx blank process n
         LA    R14,1808(R12)   DXSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,937(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),148(R11)   8
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JH    AAA00117
         L     R6,1532(R12)   I
         CHI   R6,3
         JNE   AAA00117
         J     AAA00119
AAA00117 EQU   *
AAA00118 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00115
*S167: }
*S169: loop( i:=0; i<450; i+=1 ){
AAA00119 XC    1532(4,R12),1532(R12)   I
AAA00120 L     R2,1532(R12)   I
         CHI   R2,450
         JNL   AAA00123
*S170: if( fsLineItems[i] <= "
         L     R3,68(R12)   FSLINEITEMS
         L     R4,1532(R12)   I
         MHI   R4,73
         AR    R3,R4
         ST    R3,60(R13)
         MVC   68(2,R13),150(R11)   73
         LA    R14,946(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),152(R11)   76
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JH    AAA00121
         J     AAA00123
*S171: NumLineItems+=1;
AAA00121 LHI   R2,1
         A     R2,156(R12)   NUMLINEITEMS
         ST    R2,156(R12)   NUMLINEITEMS
* V21.0 Updated unpack with API updates.
*S174: unpack(
         L     R3,68(R12)   FSLINEITEMS
         L     R4,1532(R12)   I
         MHI   R4,73
         AR    R3,R4
         LA    R14,0(R3)   FSLINEITEMS
         ST    R14,3340(R12)   FSLINEITEMS
         MVC   3344(2,R12),150(R11)   73
         MVC   3346(2,R12),150(R11)   73
         XC    3348(4,R12),3348(R12)   FSLINEITEMS
         LA    R14,3340(R12)   FSLINEITEMS
         ST    R14,64(R13)
         LA    R14,1548(R12)   HCPCS
         ST    R14,68(R13)
         LA    R14,1560(R12)   MODS
         ST    R14,72(R13)
         LA    R14,1620(R12)   SERVICEDATE
         ST    R14,76(R13)
         LA    R14,1632(R12)   REVENUECODE
         ST    R14,80(R13)
         LA    R14,1636(R12)   SERVICEUNITSINPUT
         ST    R14,84(R13)
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,88(R13)
         LA    R14,1660(R12)   CB_EDITS
         ST    R14,92(R13)
         LA    R14,1708(R12)   CB_APC
         ST    R14,96(R13)
         LA    R14,1720(R12)   CB_SI
         ST    R14,100(R13)
         LA    R14,1732(R12)   CB_PAYMENT_INDICATOR
         ST    R14,104(R13)
         LA    R14,1736(R12)   CB_DISCOUNTING_FORMULA
         ST    R14,108(R13)
         LA    R14,1748(R12)   CB_LI_DEN_REJ_FLAG
         ST    R14,112(R13)
         LA    R14,1760(R12)   CB_PACKAGING_FLAG
         ST    R14,116(R13)
         LA    R14,1772(R12)   CB_PAF
         ST    R14,120(R13)
         LA    R14,1784(R12)   CB_PMF
         ST    R14,124(R13)
         LA    R14,154(R11)
         ST    R14,60(R13)
         L     R15,36(R11)   V40UNPK
         BASR  R14,R15
*S175: fsLineItems[i],
*S176: "s5a5s2s8i4s9s10a4s3s5s2i02s1s1s1s2s1",
*S177: Hcpcs,
*S178: Mods,
*S179: ServiceDate,
*S180: RevenueCode,
*S181: ServiceUnitsInput,
*S182: LineChargesInput,
*S183: CB_Edits,
*S184: CB_APC,
*S185: CB_SI,
*S186: CB_Payment_Indicator,
*S187: CB_Discounting_Formula,
*S188: CB_LI_Den_Rej_Flag,
*S189: CB_Packaging_Flag,
*S190: CB_PAF,
*S191: CB_PMF
*S192: );
*S193: ServiceDate :=StrPartial( fsLineItems[i], 15, 8 );%v8.0 pass in
         L     R5,68(R12)   FSLINEITEMS
         L     R6,1532(R12)   I
         MHI   R6,73
         AR    R5,R6
         LA    R14,1620(R12)   SERVICEDATE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         MVC   70(2,R13),150(R11)   73
         MVC   72(4,R13),40(R11)   15
         MVC   76(4,R13),44(R11)   8
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
* NOTE: DO NOT CHANGE THIS.
*S195: ServiceUnitsInput :=StrPartial( fsLineItems[i], 27, 9 );
         L     R7,68(R12)   FSLINEITEMS
         L     R8,1532(R12)   I
         MHI   R8,73
         AR    R7,R8
         LA    R14,1636(R12)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R7,64(R13)
         MVC   70(2,R13),150(R11)   73
         MVC   72(4,R13),48(R11)   27
         MVC   76(4,R13),52(R11)   9
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S196: LineChargesInput :=StrPartial( fsLineItems[i], 36, 10 );
         L     R2,68(R12)   FSLINEITEMS
         L     R3,1532(R12)   I
         MHI   R3,73
         AR    R2,R3
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),150(R11)   73
         MVC   72(4,R13),56(R11)   36
         MVC   76(4,R13),60(R11)   10
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S197: do GAPC.VarLoadSgCode(
         LA    R14,1532(R12)   I
         ST    R14,64(R13)
         LA    R14,1548(R12)   HCPCS
         ST    R14,68(R13)
         LA    R14,1560(R12)   MODS
         ST    R14,72(R13)
         LA    R14,1620(R12)   SERVICEDATE
         ST    R14,76(R13)
         LA    R14,1632(R12)   REVENUECODE
         ST    R14,80(R13)
         LA    R14,1636(R12)   SERVICEUNITSINPUT
         ST    R14,84(R13)
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,88(R13)
         L     R4,72(R12)   FSACTIONFLAGS
         A     R4,1532(R12)   I
         AHI   R13,96
         LA    R14,3352(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R4,64(R13)
         MVC   70(2,R13),132(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-96
         LA    R14,3352(R12)
         ST    R14,92(R13)
         LA    R14,1660(R12)   CB_EDITS
         ST    R14,96(R13)
         LA    R14,1708(R12)   CB_APC
         ST    R14,100(R13)
         LA    R14,1720(R12)   CB_SI
         ST    R14,104(R13)
         LA    R14,1732(R12)   CB_PAYMENT_INDICATOR
         ST    R14,108(R13)
         LA    R14,1736(R12)   CB_DISCOUNTING_FORMULA
         ST    R14,112(R13)
         LA    R14,1748(R12)   CB_LI_DEN_REJ_FLAG
         ST    R14,116(R13)
         LA    R14,1760(R12)   CB_PACKAGING_FLAG
         ST    R14,120(R13)
         LA    R14,1772(R12)   CB_PAF
         ST    R14,124(R13)
         LA    R14,1784(R12)   CB_PMF
         ST    R14,128(R13)
         L     R15,64(R11)   GAPCC134
         BASR  R14,R15
AAA00122 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00120
*S198: i,
*S199: Hcpcs,
*S200: Mods,
*S201: ServiceDate,
*S202: RevenueCode,
*S203: ServiceUnitsInput,
*S204: LineChargesInput,
*S205: fsActionFlags[i],
*S206: CB_Edits,
*S207: CB_APC,
*S208: CB_SI,
*S209: CB_Payment_Indicator,
*S210: CB_Discounting_Formula,
*S211: CB_LI_Den_Rej_Flag,
*S212: CB_Packaging_Flag,
*S213: CB_PAF,
*S214: CB_PMF
*S215: );
*S216: }
*S218: Age:=AgeInYears;
AAA00123 LA    R14,164(R12)   AGEINYEARS
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,1856(R12)   AGE
*S219: if( LastError ) then {
         L     R15,144(R10)   LASTERROR
         LTR   R15,R15
         JE    AAA00124
*S220: Age:=-1;
         MVC   1856(4,R12),72(R11)   -1
*S221: reset LastError;
         XC    144(4,R10),144(R10)
*S222: }
*S224: if( SexCode=" " ) then {
AAA00124 LA    R14,176(R12)   SEXCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,945(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),132(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAA00125
*S225: Sex:=0;
         XC    1860(4,R12),1860(R12)   SEX
         J     AAA00127
*S226: }
*S227: else{
*S228: Sex:=SexCode;
AAA00125 LA    R14,176(R12)   SEXCODE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,1860(R12)   SEX
*S229: if( LastError ) then {
         L     R15,144(R10)   LASTERROR
         LTR   R15,R15
         JE    AAA00126
*S230: Sex:=-1;
         MVC   1860(4,R12),72(R11)   -1
*S231: reset LastError;
         XC    144(4,R10),144(R10)
*S232: }
*S233: }
*S235: fromstr :=StrPartial( FromThruDates, 0, 8 );/*v8.0 pass in exac
AAA00126 EQU   *
AAA00127 LA    R14,1832(R12)   FROMSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,188(R12)   FROMTHRUDATES
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),8(R11)   0
         MVC   76(4,R13),44(R11)   8
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S236: thrustr :=StrPartial( FromThruDates, 8, 8 );/*v8.0 pass in exac
         LA    R14,1844(R12)   THRUSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,188(R12)   FROMTHRUDATES
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),44(R11)   8
         MVC   76(4,R13),44(R11)   8
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S237: OPPSFlag :=NonOPPSflag;
         LA    R14,608(R12)   NONOPPSFLAG
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,1864(R12)   OPPSFLAG
*S239: ReturnCode:=do GAPC.VarOceApcCompute(
         LA    R14,2644(R12)   RETURNCODE
         ST    R14,60(R13)
         LA    R14,1856(R12)   AGE
         ST    R14,64(R13)
         LA    R14,1860(R12)   SEX
         ST    R14,68(R13)
         LA    R14,1832(R12)   FROMSTR
         ST    R14,72(R13)
         LA    R14,1844(R12)   THRUSTR
         ST    R14,76(R13)
         LA    R14,200(R12)   CONDCODES
         ST    R14,80(R13)
         LA    R14,620(R12)   OCCCODES
         ST    R14,84(R13)
         LA    R14,980(R12)   VALUECODES
         ST    R14,88(R13)
         LA    R14,560(R12)   BILLTYPE
         ST    R14,92(R13)
         LA    R14,572(R12)   NPINUMBER
         ST    R14,96(R13)
         LA    R14,584(R12)   OSCARNUMBER
         ST    R14,100(R13)
         LA    R14,596(R12)   PATIENTSTATUS
         ST    R14,104(R13)
         LA    R14,1864(R12)   OPPSFLAG
         ST    R14,108(R13)
         LA    R14,1868(R12)   CLAIMPROCFLAG
         ST    R14,112(R13)
         LA    R14,1872(R12)   NUMLINES
         ST    R14,116(R13)
         LA    R14,1876(R12)   OVERALLCLAIMDISP
         ST    R14,120(R13)
         LA    R14,1880(R12)   CLAIMREJDISP
         ST    R14,124(R13)
         LA    R14,1884(R12)   CLAIMDENDISP
         ST    R14,128(R13)
         LA    R14,1888(R12)   CLAIMRTPDISP
         ST    R14,132(R13)
         LA    R14,1892(R12)   CLAIMSUSDISP
         ST    R14,136(R13)
         LA    R14,1896(R12)   LINEITEMREJDISP
         ST    R14,140(R13)
         LA    R14,1900(R12)   LINEITEMDENDISP
         ST    R14,144(R13)
         LA    R14,1904(R12)   CLAIMREJREAS
         ST    R14,148(R13)
         LA    R14,2024(R12)   CLAIMDENREAS
         ST    R14,152(R13)
         LA    R14,2144(R12)   CLAIMRTPREAS
         ST    R14,156(R13)
         LA    R14,2264(R12)   CLAIMSUSREAS
         ST    R14,160(R13)
         LA    R14,2384(R12)   LINEITEMREJREAS
         ST    R14,164(R13)
         LA    R14,2504(R12)   LINEITEMDENREAS
         ST    R14,168(R13)
         LA    R14,2624(R12)   APCRETURNFLAG
         ST    R14,172(R13)
         LA    R14,2628(R12)   VERSIONID
         ST    R14,176(R13)
         LA    R14,2640(R12)   NOPPSBILLFLAG
         ST    R14,180(R13)
         LA    R14,3296(R12)   VALUECODEBUFFER
         ST    R14,184(R13)
         LA    R14,1412(R12)   OUTPUTCONDITIONCODES
         ST    R14,188(R13)
         L     R15,76(R11)   GAPCC135
         BASR  R14,R15
*S240: Age,
*S241: Sex,
*S242: fromstr,
*S243: thrustr,
*S244: CondCodes,
*S245: OccCodes,
*S246: ValueCodes,%V19.0
*S247: BillType,
*S248: NpiNumber,
*S249: OscarNumber,
*S250: PatientStatus,
*S251: OPPSFlag,
*S252: ClaimProcFlag,
*S253: NumLines,
*S254: OverallClaimDisp,
*S255: ClaimRejDisp,
*S256: ClaimDenDisp,
*S257: ClaimRtpDisp,
*S258: ClaimSusDisp,
*S259: LineItemRejDisp,
*S260: LineItemDenDisp,
*S261: ClaimRejReas,
*S262: ClaimDenReas,
*S263: ClaimRtpReas,
*S264: ClaimSusReas,
*S265: LineItemRejReas,
*S266: LineItemDenReas,
*S267: ApcReturnFlag,
*S268: VersionId,
*S270: NoppsBillFlag,
*S272: ValueCodeBuffer,%V17.0
*S273: OutputConditionCodes%V19.0
*S274: );
* We may need to potentially reset the buffer if the return code is no
*S277: ResetBuffers := ReturnCode <> 0;
         L     R3,2644(R12)   RETURNCODE
         LTR   R3,R3
         JNE   AAA00128
         XR    R4,R4
         J     AAA00129
AAA00128 LHI   R4,1
AAA00129 ST    R4,3332(R12)   RESETBUFFERS
*S279: /*the following is added to handle a bad rot open from call to
*S280:    - see comments above before we start the var calls*/
*S281: if( ReturnCode=Error->RC_BadRotOpen ) then {
         L     R5,2644(R12)   RETURNCODE
         CHI   R5,4
         JNE   AAA00130
*S282: /* V12.2, 2011-04-28, no_memory variable is no longer available
*S283:   * The fsClaimReturnBuffer is set to 9 as the default value; t
*S284:   * it doesn't need to be set here for the early abort.
*S285:    fsClaimReturnBuffer := Const9;
*S286:   */
*S287: /*return 2; public domain used to return 2 here in legacy cobol
*S288: return Error->RC_BadRotOpen;/*4*/
         L     R6,60(R12)
         MVC   0(4,R6),80(R11)   4
         J     AAA00150
*S289: }
*S291: /* Removed HPEGS behavior of clearing the claim - Apr 2005; Tri
* The following code is here for HPEGS compatibility and probably shou
*
* V21.0 The return code was reverted bad to an old implementation. Thi
* they were not responding to empty line buffers. This is a known inco
* was set to 0 here however we still want to output the return code bu
* further down.
*S300: if( ReturnCode ) then {
AAA00130 L     R15,2644(R12)   RETURNCODE
         LTR   R15,R15
         JE    AAA00132
*S301: OverallClaimDisp :=0;
         XC    1876(4,R12),1876(R12)   OVERALLCLAIMDISP
*S302: ClaimRejDisp :=0;
         XC    1880(4,R12),1880(R12)   CLAIMREJDISP
*S303: ClaimDenDisp :=0;
         XC    1884(4,R12),1884(R12)   CLAIMDENDISP
*S304: ClaimRtpDisp :=0;
         XC    1888(4,R12),1888(R12)   CLAIMRTPDISP
*S305: ClaimSusDisp :=0;
         XC    1892(4,R12),1892(R12)   CLAIMSUSDISP
*S306: LineItemRejDisp :=0;
         XC    1896(4,R12),1896(R12)   LINEITEMREJDISP
*S307: LineItemDenDisp :=0;
         XC    1900(4,R12),1900(R12)   LINEITEMDENDISP
*S308: if( ReturnCode<>13
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,13
         JE    AAA00131
         L     R3,2644(R12)   RETURNCODE
         CHI   R3,14
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,15
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,17
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,20
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,26
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,27
         JE    AAA00131
         L     R2,2644(R12)   RETURNCODE
         CHI   R2,28
         JE    AAA00131
*S309: and ReturnCode<>14
*S310: and ReturnCode<>15
*S311: and ReturnCode<>17
*S312: and ReturnCode<>20
*S313: and ReturnCode<>26
*S314: and ReturnCode<>27
*S315: and ReturnCode<>28) then {
*S316: ResetBuffers := 0;
         XC    3332(4,R12),3332(R12)   RESETBUFFERS
*S317: }
*S318: }
*S322: pack(
AAA00131 EQU   *
AAA00132 L     R2,144(R12)   FSCLAIMRETURNBUFFER
         LA    R14,0(R2)   FSCLAIMRETURNBUFFER
         ST    R14,3340(R12)   FSCLAIMRETURNBUFFER
         MVC   3344(2,R12),134(R11)   403
         MVC   3346(2,R12),134(R11)   403
         XC    3348(4,R12),3348(R12)   FSCLAIMRETURNBUFFER
         LA    R14,3340(R12)   FSCLAIMRETURNBUFFER
         ST    R14,64(R13)
         LA    R14,1868(R12)   CLAIMPROCFLAG
         ST    R14,68(R13)
         LA    R14,1872(R12)   NUMLINES
         ST    R14,72(R13)
         LA    R14,572(R12)   NPINUMBER
         ST    R14,76(R13)
         LA    R14,584(R12)   OSCARNUMBER
         ST    R14,80(R13)
         LA    R14,1876(R12)   OVERALLCLAIMDISP
         ST    R14,84(R13)
         LA    R14,1880(R12)   CLAIMREJDISP
         ST    R14,88(R13)
         LA    R14,1884(R12)   CLAIMDENDISP
         ST    R14,92(R13)
         LA    R14,1888(R12)   CLAIMRTPDISP
         ST    R14,96(R13)
         LA    R14,1892(R12)   CLAIMSUSDISP
         ST    R14,100(R13)
         LA    R14,1896(R12)   LINEITEMREJDISP
         ST    R14,104(R13)
         LA    R14,1900(R12)   LINEITEMDENDISP
         ST    R14,108(R13)
         LA    R14,1904(R12)   CLAIMREJREAS
         ST    R14,112(R13)
         LA    R14,2024(R12)   CLAIMDENREAS
         ST    R14,116(R13)
         LA    R14,2144(R12)   CLAIMRTPREAS
         ST    R14,120(R13)
         LA    R14,2264(R12)   CLAIMSUSREAS
         ST    R14,124(R13)
         LA    R14,2384(R12)   LINEITEMREJREAS
         ST    R14,128(R13)
         LA    R14,2504(R12)   LINEITEMDENREAS
         ST    R14,132(R13)
         LA    R14,2624(R12)   APCRETURNFLAG
         ST    R14,136(R13)
         LA    R14,2628(R12)   VERSIONID
         ST    R14,140(R13)
         LA    R14,596(R12)   PATIENTSTATUS
         ST    R14,144(R13)
         LA    R14,608(R12)   NONOPPSFLAG
         ST    R14,148(R13)
         LA    R14,2640(R12)   NOPPSBILLFLAG
         ST    R14,152(R13)
         LA    R14,3296(R12)   VALUECODEBUFFER
         ST    R14,156(R13)
         LA    R14,1412(R12)   OUTPUTCONDITIONCODES
         ST    R14,160(R13)
         LA    R14,2644(R12)   RETURNCODE
         ST    R14,164(R13)
         LA    R14,258(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
*S323: fsClaimReturnBuffer,
*S327: "i1i03s13s6i1i1i1i1i1i1i1a4i 03a8i 03a30i 03a16i 03a12i 03a6i 0
*S329: ClaimProcFlag,
*S330: NumLines,
*S331: NpiNumber,/*input*/
*S332: OscarNumber,/*input*/
*S333: OverallClaimDisp,
*S334: ClaimRejDisp,
*S335: ClaimDenDisp,
*S336: ClaimRtpDisp,
*S337: ClaimSusDisp,
*S338: LineItemRejDisp,
*S339: LineItemDenDisp,
*S340: ClaimRejReas,
*S341: ClaimDenReas,
*S342: ClaimRtpReas,
*S343: ClaimSusReas,
*S344: LineItemRejReas,
*S345: LineItemDenReas,
*S346: ApcReturnFlag,
*S347: VersionId,
*S348: PatientStatus,/*input*/
*S349: NonOPPSflag,/*input*/
*S353: NoppsBillFlag,/*added 8.2 IOCE*/
*S355: ValueCodeBuffer,/*17.0 VALUE CODE*/
*S356: OutputConditionCodes,
*S357: ReturnCode
*S358: );
*S360: loop( i:=0; i<NumDxCodes; i+=1 ){
         XC    1532(4,R12),1532(R12)   I
AAA00133 L     R2,1532(R12)   I
         C     R2,160(R12)   NUMDXCODES
         JNL   AAA00135
*S361: do GAPC.VarUnloadDxCode( i, dxEdit );
         LA    R14,3364(R12)
         ST    R14,60(R13)
         LA    R14,1532(R12)   I
         ST    R14,64(R13)
         LA    R14,2648(R12)   DXEDIT
         ST    R14,68(R13)
         L     R15,88(R11)   GAPCC136
         BASR  R14,R15
*S362: pack( fsDxEdits[i], "a8i 03", dxEdit );
         L     R3,120(R12)   FSDXEDITS
         L     R4,1532(R12)   I
         MHI   R4,24
         AR    R3,R4
         LA    R14,0(R3)   FSDXEDITS
         ST    R14,3340(R12)   FSDXEDITS
         MVC   3344(2,R12),442(R11)   24
         MVC   3346(2,R12),442(R11)   24
         XC    3348(4,R12),3348(R12)   FSDXEDITS
         LA    R14,3340(R12)   FSDXEDITS
         ST    R14,64(R13)
         LA    R14,2648(R12)   DXEDIT
         ST    R14,68(R13)
         LA    R14,444(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
AAA00134 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00133
*S363: }
*S365: /* Removed HPEGS behavior of clearing the line output - Apr 200
* blank output for HPEGS compatibility
*S369: if( ResetBuffers ) then {
AAA00135 L     R15,3332(R12)   RESETBUFFERS
         LTR   R15,R15
         JE    AAA00139
*S370: loop( i:=0; i<NumLineItems; i+=1 ){
         XC    1532(4,R12),1532(R12)   I
AAA00136 L     R2,1532(R12)   I
         C     R2,156(R12)   NUMLINEITEMS
         JNL   AAA00138
*S371: tempstr :="";/*eliminates MF build error*/
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3340(R12)
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         XC    3340(12,R12),3340(R12)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S372: fsProcedureEdits[i] :=tempstr;
         L     R3,124(R12)   FSPROCEDUREEDITS
         L     R4,1532(R12)   I
         MHI   R4,90
         AR    R3,R4
         ST    R3,60(R13)
         MVC   68(2,R13),460(R11)   90
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S373: fsModifierEdits[i] :=tempstr;
         L     R5,128(R12)   FSMODIFIEREDITS
         L     R6,1532(R12)   I
         MHI   R6,60
         AR    R5,R6
         ST    R5,60(R13)
         MVC   68(2,R13),462(R11)   60
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S374: fsDateEdits[i] :=tempstr;
         L     R7,132(R12)   FSDATEEDITS
         L     R8,1532(R12)   I
         MHI   R8,12
         AR    R7,R8
         ST    R7,60(R13)
         MVC   68(2,R13),464(R11)   12
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S375: fsRevenueEdits[i] :=tempstr;
         L     R2,136(R12)   FSREVENUEEDITS
         L     R3,1532(R12)   I
         MHI   R3,15
         AR    R2,R3
         ST    R2,60(R13)
         MVC   68(2,R13),466(R11)   15
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S376: fsApcReturnBuffer[i] :=tempstr;
         L     R4,140(R12)   FSAPCRETURNBUFFER
         L     R5,1532(R12)   I
         MHI   R5,51
         AR    R4,R5
         ST    R4,60(R13)
         MVC   68(2,R13),468(R11)   51
         LA    R14,1796(R12)   TEMPSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
AAA00137 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00136
AAA00138 J     AAA00149
*S377: }
*S378: }
*S379: else
*S383: loop( i:=0; i<NumLineItems; i+=1 ){
AAA00139 XC    1532(4,R12),1532(R12)   I
AAA00140 L     R2,1532(R12)   I
         C     R2,156(R12)   NUMLINEITEMS
         JNL   AAA00148
*S384: Hcpcs :=StrPartial( fsLineItems[i], 0, 5 );
         L     R3,68(R12)   FSLINEITEMS
         L     R4,1532(R12)   I
         MHI   R4,73
         AR    R3,R4
         LA    R14,1548(R12)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),150(R11)   73
         MVC   72(4,R13),8(R11)   0
         MVC   76(4,R13),92(R11)   5
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S385: LineChargesInput :=StrPartial( fsLineItems[i], 36, 10 );
         L     R5,68(R12)   FSLINEITEMS
         L     R6,1532(R12)   I
         MHI   R6,73
         AR    R5,R6
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         MVC   70(2,R13),150(R11)   73
         MVC   72(4,R13),56(R11)   36
         MVC   76(4,R13),60(R11)   10
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
*S386: do GAPC.VarUnloadSgCode(
         LA    R14,3364(R12)
         ST    R14,60(R13)
         LA    R14,1532(R12)   I
         ST    R14,64(R13)
         LA    R14,2728(R12)   PROCEDUREEDIT
         ST    R14,68(R13)
         LA    R14,2848(R12)   MODIFIEREDIT
         ST    R14,72(R13)
         LA    R14,2928(R12)   DATEEDIT
         ST    R14,76(R13)
         LA    R14,3048(R12)   REVENUEEDIT
         ST    R14,80(R13)
         LA    R14,3168(R12)   PAYMENTAPC
         ST    R14,84(R13)
         LA    R14,3180(R12)   HCPCSAPC
         ST    R14,88(R13)
         LA    R14,3192(R12)   STATUSINDICATOR
         ST    R14,92(R13)
         LA    R14,3204(R12)   PAYMENTINDICATOR
         ST    R14,96(R13)
         LA    R14,3208(R12)   DISCOUNTINGFACTOR
         ST    R14,100(R13)
         LA    R14,3212(R12)   LINEDENIALFLAG
         ST    R14,104(R13)
         LA    R14,3216(R12)   PACKAGINGFLAG
         ST    R14,108(R13)
         LA    R14,3220(R12)   PAYADJFLAG
         ST    R14,112(R13)
         LA    R14,3224(R12)   PAYMETHFLAG
         ST    R14,116(R13)
         LA    R14,3260(R12)   SERVICEUNITSOUTPUT
         ST    R14,120(R13)
         LA    R14,3272(R12)   ACTIONFLAGOUTPUT
         ST    R14,124(R13)
         LA    R14,3284(R12)   COMPADJFLAG
         ST    R14,128(R13)
         LA    R14,3308(R12)   HCPCSPAYERMODIFIER01
         ST    R14,132(R13)
         LA    R14,3320(R12)   HCPCSPAYERMODIFIER02
         ST    R14,136(R13)
         L     R15,96(R11)   GAPCC137
         BASR  R14,R15
*S387: i,
*S388: procedureEdit,
*S389: modifierEdit,
*S390: dateEdit,
*S391: revenueEdit,
*S392: PaymentApc,
*S393: HcpcsApc,
*S394: StatusIndicator,
*S395: PaymentIndicator,
*S396: DiscountingFactor,
*S397: LineDenialFlag,
*S398: PackagingFlag,
*S399: PayAdjFlag,
*S400: PayMethFlag,
*S401: ServiceUnitsOutput,
*S402: ActionFlagOutput,/*V15.3, FQHC*/
*S403: CompAdjFlag,
*S404: HCPCSPayerModifier01,
*S405: HCPCSPayerModifier02
*S406: );
*S408: if( claim->Bits->Nopps ) then {
         TM    3004(R9),1   NOPPS
         JE    AAA00141
*S409: pack(
         L     R7,140(R12)   FSAPCRETURNBUFFER
         L     R8,1532(R12)   I
         MHI   R8,51
         AR    R7,R8
         LA    R14,0(R7)   FSAPCRETURNBUFFER
         ST    R14,3340(R12)   FSAPCRETURNBUFFER
         MVC   3344(2,R12),468(R11)   51
         MVC   3346(2,R12),468(R11)   51
         XC    3348(4,R12),3348(R12)   FSAPCRETURNBUFFER
         LA    R14,3340(R12)   FSAPCRETURNBUFFER
         ST    R14,64(R13)
         LA    R14,1548(R12)   HCPCS
         ST    R14,68(R13)
         LA    R14,3168(R12)   PAYMENTAPC
         ST    R14,72(R13)
         LA    R14,3180(R12)   HCPCSAPC
         ST    R14,76(R13)
         LA    R14,1022(R11)
         ST    R14,80(R13)
         LA    R14,3224(R12)   PAYMETHFLAG
         ST    R14,84(R13)
         LA    R14,3260(R12)   SERVICEUNITSOUTPUT
         ST    R14,88(R13)
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,92(R13)
         LA    R14,1031(R11)
         ST    R14,96(R13)
         LA    R14,470(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
         J     AAA00146
*S410: fsApcReturnBuffer[i],
*S411: "s5s5s5s9s1s-9s-10s3",
*S412: Hcpcs,
*S413: PaymentApc,
*S414: HcpcsApc,
*S415: "         ",/*non-opps not wanting payment flags*/
*S416: PayMethFlag,/*we trust the PMF is set based on the claim*/
*S417: ServiceUnitsOutput,/*may be manipulated in component*/
*S418: LineChargesInput,/*input*/
*S419: "   "/*input - non opps not wanting payment flags*/
*S420: );
*S421: }
*S422: else{
*S423: SiOut:=StrLength(StatusIndicator)=1 ? " " + StatusIndicator : S
AAA00141 LA    R14,3192(R12)   STATUSINDICATOR
         ST    R14,60(R13)
         L     R15,100(R11)   DMNSLEN
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JE    AAA00142
         LA    R2,3192(R12)   STATUSINDICATOR
         J     AAA00143
AAA00142 LA    R14,3352(R12)
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,945(R11)
         ST    R14,64(R13)
         MVC   74(2,R13),132(R11)   1
         LA    R14,3192(R12)   STATUSINDICATOR
         ST    R14,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,104(R11)   DMNCCAT
         BASR  R14,R15
         LA    R2,3352(R12)
AAA00143 LA    R14,3236(R12)   SIOUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S424: PiOut:=PaymentIndicator < 10 ? " " + PaymentIndicator : "" + Pa
         L     R3,3204(R12)   PAYMENTINDICATOR
         CHI   R3,10
         JL    AAA00144
         MVC   60(4,R13),3204(R12)   PAYMENTINDICATOR
         LA    R14,3368(R12)
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,108(R11)   DMNI2S
         BASR  R14,R15
         LA    R14,3352(R12)
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,3340(R12)
         ST    R14,64(R13)
         XC    74(2,R13),74(R13)
         XC    3340(12,R12),3340(R12)
         LA    R14,3368(R12)
         ST    R14,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,104(R11)   DMNCCAT
         BASR  R14,R15
         LA    R2,3352(R12)
         J     AAA00145
AAA00144 MVC   60(4,R13),3204(R12)   PAYMENTINDICATOR
         LA    R14,3392(R12)
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,108(R11)   DMNI2S
         BASR  R14,R15
         LA    R14,3380(R12)
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,945(R11)
         ST    R14,64(R13)
         MVC   74(2,R13),132(R11)   1
         LA    R14,3392(R12)
         ST    R14,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,104(R11)   DMNCCAT
         BASR  R14,R15
         LA    R2,3380(R12)
AAA00145 LA    R14,3248(R12)   PIOUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S425: pack(
         L     R3,140(R12)   FSAPCRETURNBUFFER
         L     R4,1532(R12)   I
         MHI   R4,51
         AR    R3,R4
         LA    R14,0(R3)   FSAPCRETURNBUFFER
         ST    R14,3340(R12)   FSAPCRETURNBUFFER
         MVC   3344(2,R12),468(R11)   51
         MVC   3346(2,R12),468(R11)   51
         XC    3348(4,R12),3348(R12)   FSAPCRETURNBUFFER
         LA    R14,3340(R12)   FSAPCRETURNBUFFER
         ST    R14,64(R13)
         LA    R14,1548(R12)   HCPCS
         ST    R14,68(R13)
         LA    R14,3168(R12)   PAYMENTAPC
         ST    R14,72(R13)
         LA    R14,3180(R12)   HCPCSAPC
         ST    R14,76(R13)
         LA    R14,3236(R12)   SIOUT
         ST    R14,80(R13)
         LA    R14,3248(R12)   PIOUT
         ST    R14,84(R13)
         LA    R14,3208(R12)   DISCOUNTINGFACTOR
         ST    R14,88(R13)
         LA    R14,3212(R12)   LINEDENIALFLAG
         ST    R14,92(R13)
         LA    R14,3216(R12)   PACKAGINGFLAG
         ST    R14,96(R13)
         LA    R14,3220(R12)   PAYADJFLAG
         ST    R14,100(R13)
         LA    R14,3224(R12)   PAYMETHFLAG
         ST    R14,104(R13)
         LA    R14,3260(R12)   SERVICEUNITSOUTPUT
         ST    R14,108(R13)
         LA    R14,1648(R12)   LINECHARGESINPUT
         ST    R14,112(R13)
         LA    R14,3272(R12)   ACTIONFLAGOUTPUT
         ST    R14,116(R13)
         LA    R14,3284(R12)   COMPADJFLAG
         ST    R14,120(R13)
         LA    R14,3308(R12)   HCPCSPAYERMODIFIER01
         ST    R14,124(R13)
         LA    R14,3320(R12)   HCPCSPAYERMODIFIER02
         ST    R14,128(R13)
         LA    R14,528(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
*S426: fsApcReturnBuffer[i],
*S427: "s5s5s5s2s2i1i1i1i2s1s-9s-10s1s2s2s2",
*S428: Hcpcs,
*S429: PaymentApc,
*S430: HcpcsApc,
*S431: SiOut,
*S432: PiOut,
*S433: DiscountingFactor,
*S434: LineDenialFlag,
*S435: PackagingFlag,
*S436: PayAdjFlag,
*S437: PayMethFlag,
*S438: ServiceUnitsOutput,/*may be manipulated in component*/
*S439: LineChargesInput,/*input*/
*S440: ActionFlagOutput,/*V15.3, FQHC*/
*S441: CompAdjFlag,/*v10.0 new field*/
*S442: HCPCSPayerModifier01,
*S443: HCPCSPayerModifier02
*S444: );
*S445: }
*S447: pack( fsProcedureEdits[i], "a30i 03", procedureEdit );
AAA00146 L     R2,124(R12)   FSPROCEDUREEDITS
         L     R3,1532(R12)   I
         MHI   R3,90
         AR    R2,R3
         LA    R14,0(R2)   FSPROCEDUREEDITS
         ST    R14,3340(R12)   FSPROCEDUREEDITS
         MVC   3344(2,R12),460(R11)   90
         MVC   3346(2,R12),460(R11)   90
         XC    3348(4,R12),3348(R12)   FSPROCEDUREEDITS
         LA    R14,3340(R12)   FSPROCEDUREEDITS
         ST    R14,64(R13)
         LA    R14,2728(R12)   PROCEDUREEDIT
         ST    R14,68(R13)
         LA    R14,630(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
*S448: pack( fsModifierEdits[i], "a20i 03", modifierEdit );
         L     R4,128(R12)   FSMODIFIEREDITS
         L     R5,1532(R12)   I
         MHI   R5,60
         AR    R4,R5
         LA    R14,0(R4)   FSMODIFIEREDITS
         ST    R14,3340(R12)   FSMODIFIEREDITS
         MVC   3344(2,R12),462(R11)   60
         MVC   3346(2,R12),462(R11)   60
         XC    3348(4,R12),3348(R12)   FSMODIFIEREDITS
         LA    R14,3340(R12)   FSMODIFIEREDITS
         ST    R14,64(R13)
         LA    R14,2848(R12)   MODIFIEREDIT
         ST    R14,68(R13)
         LA    R14,646(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
*S449: pack( fsDateEdits[i], "a4i 03", dateEdit );
         L     R6,132(R12)   FSDATEEDITS
         L     R7,1532(R12)   I
         MHI   R7,12
         AR    R6,R7
         LA    R14,0(R6)   FSDATEEDITS
         ST    R14,3340(R12)   FSDATEEDITS
         MVC   3344(2,R12),464(R11)   12
         MVC   3346(2,R12),464(R11)   12
         XC    3348(4,R12),3348(R12)   FSDATEEDITS
         LA    R14,3340(R12)   FSDATEEDITS
         ST    R14,64(R13)
         LA    R14,2928(R12)   DATEEDIT
         ST    R14,68(R13)
         LA    R14,662(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
*S450: pack( fsRevenueEdits[i], "a5i 03", revenueEdit );
         L     R8,136(R12)   FSREVENUEEDITS
         L     R2,1532(R12)   I
         MHI   R2,15
         AR    R8,R2
         LA    R14,0(R8)   FSREVENUEEDITS
         ST    R14,3340(R12)   FSREVENUEEDITS
         MVC   3344(2,R12),466(R11)   15
         MVC   3346(2,R12),466(R11)   15
         XC    3348(4,R12),3348(R12)   FSREVENUEEDITS
         LA    R14,3340(R12)   FSREVENUEEDITS
         ST    R14,64(R13)
         LA    R14,3048(R12)   REVENUEEDIT
         ST    R14,68(R13)
         LA    R14,678(R11)
         ST    R14,60(R13)
         L     R15,84(R11)   V40PACK
         BASR  R14,R15
AAA00147 LHI   R2,1
         A     R2,1532(R12)   I
         ST    R2,1532(R12)   I
         J     AAA00140
*S452: }
*S454: /*NOTE: old cobol.f PD frame did not have the close effective b
*S455:  making use of the "initialized" variable on open.  We are now
*S456:  test on "if not (initialized)" in open() and also enabling the
*S457:  This mirrors past behavior on all platforms because inside the
*S458:  gets FALSE so effectively the tables will always get re-opened
*S459:  platforms anyway before.
*S460:  ***FUTURE optimization:Other platforms could indeed make use o
*S461:  by not closing the tables each claim and save some overhead.
*S462:  (could put #ifndef TARGET_BAL around the VarClose call below)
*S463:  We think PD MF is not calling in correct manner to take advant
*S464:  variable and since it is all in memory anyway we will always o
*S465:  in MF cases*/
*S466: do GAPC.VarClose();
AAA00148 EQU   *
AAA00149 L     R15,112(R11)   GAPCC138
         BASR  R14,R15
*S467: return ReturnCode;
         L     R2,60(R12)
         L     R3,2644(R12)   RETURNCODE
         ST    R3,0(R2)
AAA00150 LA    R5,148(R12)
         ST    R5,60(R13)
         L     R15,128(R11)   DMNFREE
         BASR  R14,R15
         MVC   48(4,R10),3336(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),3404(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    OCECLAIM
**************************
OCECLAIM CSECT
OCECLAIM AMODE ANY
OCECLAIM RMODE ANY
* GATEWAY FRAME GAPC.FixedOCEAPC_WRAPPER
* EXTERNAL gateway - CALLER memory model
* R12 Local Variables
*   60(R12)   Return Value
*   64(R12)   Out of Memory Jump
*   96(R12)   Input Parameters
         STM   R14,R12,12(R13)
         BRAS  R11,AAA00200
         DC    A(_CECLAIM)  GLOBAL
         DC    A(GAPCC001)
AAA00200 L     R15,0(R11)
         BASR  R14,R15
         AHI   R13,96        FRAME END
         LA    R14,64(R12)
         ST    R14,84(R10)
         BRAS  R14,AAA00201
         L     R13,52(R12)
         ST    R15,16(R13)  RC FROM R15 TO R15
         LM    R14,R12,12(R13)
         BR    R14
AAA00201 L     R15,44(R10)
         STM   R9,R15,64(R12)
*
         CNOP  0,4
         BRAS  R11,AAA00202
         DC    A(GAPCC000)   LOGIC
         DC    A(DMNPARMU)
         DC    A(GAPCC001)
AAA00202 L     R14,8(R11)
         ST    R14,60(R13)
         L     R15,4(R11)   PARAMETER UTILITY
         BASR  R14,R15
         LA    R14,60(R12)
         ST    R14,60(R13)
         MVC   64(84,R13),0(R1)
         L     R15,0(R11)   GATEWAY LOGIC FRAME
         BASR  R14,R15
* COBOL return conventions
         L     R13,52(R12)
         MVC   16(4,R13),60(R12)
         LM    R14,R12,12(R13)
         BR    R14
**************************
*    GAPCC001
**************************
GAPCC001 CSECT
GAPCC001 AMODE ANY
GAPCC001 RMODE ANY
*XREF - GAPCC001 OCECLAIM.api
         DC    X'C702D6C3C5C3D3C1C9D4000110224C028CFF178C86A2C4A7C396'
         DC    X'8485A200011032850C450CFF17073C86A2D3899585C9A38594A2'
         DC    X'000110450C450CFF171C86A2C183A3899695C6938187A2000117'
         DC    X'3C86A2C18785C995E8858199A20001171C86A2E285A7C3968485'
         DC    X'000117016C86A2C6999694E38899A4C481A385A2000110060C03'
         DC    X'0CFF172C86A2C3969584C3968485A20001173C86A2C2899393E3'
         DC    X'A89785000117013C86A2D59789D5A4948285990001176C86A2D6'
         DC    X'A2838199D5A4948285990001172C86A2D781A3898595A3E2A381'
         DC    X'A3A4A20001171C86A2D59695D6D7D7E286938187000110060C03'
         DC    X'0CFF172C86A2D68383C3968485A2000110396C036CFF17011C86'
         DC    X'A2E58193A485C3968485A2000110672C028CFF17024C86A2C4A7'
         DC    X'C58489A3A200011040500C450CFF17090C86A2D79996838584A4'
         DC    X'9985C58489A3A200011027000C450CFF17060C86A2D496848986'
         DC    X'898599C58489A3A200011005400C450CFF17012C86A2C481A385'
         DC    X'C58489A3A200011006750C450CFF17015C86A2D985A58595A485'
         DC    X'C58489A3A200011022950C450CFF17051C86A2C19783D985A3A4'
         DC    X'9995C2A486868599000117403C86A2C393818994D985A3A49995'
         DC    X'C2A48686859900FF'
**************************
*    _CECLAIM
**************************
_CECLAIM CSECT
_CECLAIM AMODE ANY
_CECLAIM RMODE ANY
*  R10 + 0000 Environment     (128 bytes)
*  R10 + 0128 Globals         (52 bytes)
*        0128(R10)-> Code (CCP)
*        0132(R10)-> String (AttributePrefix)
*        0144(R10)-> Integer len 4 (LastError)
*        0148(R10)-> Pool (_default_global_pool_)
*        0156(R10)-> Cursor (_default_global_cursor_)
*        0164(R10)-> List (_default_global_list_)
*
         BRAS  R11,AAA00300
         DC    F'184'     SIZE OVHD+GBLS+CLASS
         DC    V(GAPC)       ROT
         DC    F'0'
         DC    A(0)    NO INDIRECT TABLE
         DC    F'2048'     PAGESIZE
         DC    A(DMNOOM)
AAA00300 L     R10,84(R1) ENV
         LR    R4,R10
         AHI   R10,7  ALIGN
         SRL   R10,3
         SLL   R10,3
         L     R15,88(R1) ENV SIZE
         L     R3,0(R15)
         LTR   R3,R3
         JNZ   AAA00301
         LR    R12,R10 USE EXISTING
         A     R12,0(R11)
         STM   R0,R14,0(R12)
         LR    R13,R12
         L     R15,4(R11)
         ST    R15,40(R10) ROT
         BR    R14
AAA00301 DS    0H
         LR    R2,R10 MAKE NEW
         SR    R4,R10
         AR    R3,R4
         SRL   R3,3 ALIGN SIZE
         SLL   R3,3
         LR    R6,R3
         LA    R4,8(R11)
         LHI   R5,4
         MVCL  R2,R4 CLEAR ENV
         LR    R12,R10 MAKE STACK
         A     R12,0(R11)
         STM   R0,R14,0(R12)
         LR    R13,R12
         MVC   0(4,R10),0(R11) BOS
         AR    R6,R10
         ST    R6,36(R10) END ENV
         L     R15,4(R11)
         ST    R15,40(R10) ROT
         LA    R15,164(R10)
         ST    R15,56(R10) CUR LIST
         LA    R15,148(R10)
         ST    R15,96(R10) GLOB POOL
         MVC   60(4,R10),12(R11) GATEWAYS
         MVC   80(4,R10),16(R11) PAGESIZE
         MVC   88(4,R10),20(R11) OOM
         LA    R15,128(R10)
         ST    R15,64(R10) GLOB VARS
         AHI   R13,64  FRAME END
         LA    R2,148(R10)
         XC    128(12,R10),128(R10)
         ST    R2,140(R10)
         XC    144(16,R10),144(R10)
         ST    R2,160(R10)
         XC    164(12,R10),164(R10)
         ST    R2,176(R10)
         L     R1,4(R12)
         L     R14,56(R12)
         BR    R14
**************************
*    GAPCCCLS
**************************
GAPCCCLS CSECT
GAPCCCLS AMODE ANY
GAPCCCLS RMODE ANY
*  R9  + 0000 Class vars      (4260 bytes)
*        0000(R9)-> Code (dx)
*        0004(R9)-> Code (item)
*        0008(R9)-> Code (item2)
*        0012(R9)-> Struct BaseStruct (base)
*            0000(BaseStruct)-> List (dx)
*            0016(BaseStruct)-> List (lines)
*            0032(BaseStruct)-> Code (curdx)
*            0036(BaseStruct)-> Code (curline)
*            0040(BaseStruct)-> reference to Struct len 148 (curDx)
*            0044(BaseStruct)-> reference to Struct len 1120 (curLine)
*            0048(BaseStruct)-> reference to Struct len 628 (firstVisi
*            0052(BaseStruct)-> reference to Struct len 628 (DayArray)
*            0056(BaseStruct)-> reference to Struct len 44 (firstWeek)
*            0060(BaseStruct)-> reference to Struct len 44 (WeekArray)
*            0064(BaseStruct)-> reference to Struct len 20 (firstWindo
*            0068(BaseStruct)-> reference to Struct len 20 (WindowArra
*            0072(BaseStruct)-> reference to Struct len 628 (NoDay)
*            0076(BaseStruct)-> reference to Struct len 1120 (NoLine)
*            0080(BaseStruct)-> reference to Struct len 148 (NoDxp)
*            0084(BaseStruct)-> Date (FromDate)
*            0088(BaseStruct)-> Date (PHPFromDate)
*            0092(BaseStruct)-> Date (ThruDate)
*            0096(BaseStruct)-> Date (LowestDate)
*            0100(BaseStruct)-> Date (HighestDate)
*            0104(BaseStruct)-> String (FullBillType)
*            0116(BaseStruct)-> String (BillType)
*            0128(BaseStruct)-> array [30] of
*                               String (CcCodes)
*            0488(BaseStruct)-> array [30] of
*                               String (OccurCodes)
*            0848(BaseStruct)-> array [10] of
*                               String (ConditionCodesOutput)
*            0968(BaseStruct)-> array [36] of
*                               Struct InputValueCodeStruct (ValueCode
*                0000(InputValueCodeStruct)-> String (value)
*                0012(InputValueCodeStruct)-> String (amount)
*            1832(BaseStruct)-> String (ident)
*            1844(BaseStruct)-> String (VersionId)
*            1856(BaseStruct)-> Integer len 4 (Version)
*            1860(BaseStruct)-> Integer len 4 (NumDx)
*            1864(BaseStruct)-> Integer len 4 (Age)
*            1868(BaseStruct)-> Integer len 4 (Sex)
*            1872(BaseStruct)-> Integer len 4 (OutClm_ClaimFlag)
*            1876(BaseStruct)-> Integer len 4 (SumPhPay)
*            1880(BaseStruct)-> Integer len 4 (NumLines)
*            1884(BaseStruct)-> Integer len 4 (NumOccur)
*            1888(BaseStruct)-> Integer len 4 (NumCc)
*            1892(BaseStruct)-> Integer len 4 (NumValueCodes)
*            1896(BaseStruct)-> Integer len 4 (NumConditionCodeOutput)
*            1900(BaseStruct)-> Integer len 4 (HighDx)
*            1904(BaseStruct)-> Integer len 4 (HighLine)
*            1908(BaseStruct)-> Integer len 4 (currentDx)
*            1912(BaseStruct)-> Integer len 4 (currentLine)
*            1916(BaseStruct)-> Integer len 4 (LinesProcessed)
*            1920(BaseStruct)-> Integer len 4 (LinesIgnored)
*            1924(BaseStruct)-> Integer len 4 (DaySpan)
*            1928(BaseStruct)-> Integer len 4 (DayCount)
*            1932(BaseStruct)-> Integer len 4 (WeekCount)
*            1936(BaseStruct)-> Integer len 4 (WindowCount)
*            1940(BaseStruct)-> Integer len 4 (debug_addon)
*            1944(BaseStruct)-> String (PhApc)
*            1956(BaseStruct)-> BitString (control)
*        1972(R9)-> Struct ClaimStruct (claim)
*            0000(ClaimStruct)-> reference to Struct len 1120 (Primary
*            0004(ClaimStruct)-> array [10] of
*                                Struct ValueCodeStruct (ValueCodeSet)
*                0000(ValueCodeStruct)-> String (value)
*                0012(ValueCodeStruct)-> Integer len 4 (amount)
*            0164(ClaimStruct)-> String (ClaimId)
*            0176(ClaimStruct)-> String (NPI)
*            0188(ClaimStruct)-> String (OSCAR)
*            0200(ClaimStruct)-> String (StatusCode)
*            0212(ClaimStruct)-> String (OPPSFlagInput)
*            0224(ClaimStruct)-> String (CodeType)
*            0236(ClaimStruct)-> Integer len 4 (OPPSFlag)
*            0240(ClaimStruct)-> Integer len 4 (PBT)
*            0244(ClaimStruct)-> Integer len 4 (DenRejFlag)
*            0248(ClaimStruct)-> Integer len 4 (ApcRetFlag)
*            0252(ClaimStruct)-> Integer len 4 (ClaimDisp)
*            0256(ClaimStruct)-> Integer len 4 (ClaimRejDisp)
*            0260(ClaimStruct)-> array [30] of
*                                Integer len 4 (ClaimRejReasn)
*            0380(ClaimStruct)-> Integer len 4 (ClaimDenDisp)
*            0384(ClaimStruct)-> array [30] of
*                                Integer len 4 (ClaimDenReasn)
*            0504(ClaimStruct)-> Integer len 4 (ClaimRtpDisp)
*            0508(ClaimStruct)-> array [30] of
*                                Integer len 4 (ClaimRtpReasn)
*            0628(ClaimStruct)-> Integer len 4 (ClaimSusDisp)
*            0632(ClaimStruct)-> array [30] of
*                                Integer len 4 (ClaimSusReasn)
*            0752(ClaimStruct)-> Integer len 4 (LineRejDisp)
*            0756(ClaimStruct)-> array [30] of
*                                Integer len 4 (LineRejReasn)
*            0876(ClaimStruct)-> Integer len 4 (LineDenDisp)
*            0880(ClaimStruct)-> array [30] of
*                                Integer len 4 (LineDenReasn)
*            1000(ClaimStruct)-> Integer len 4 (NoppsBillFlag)
*            1004(ClaimStruct)-> Integer len 4 (CompositePayAdjCounter
*            1008(ClaimStruct)-> Integer len 4 (HasQAValueCode)
*            1012(ClaimStruct)-> Integer len 4 (QADays)
*            1016(ClaimStruct)-> Integer len 4 (QAHours)
*            1020(ClaimStruct)-> Integer len 4 (QAPartialHours)
*            1024(ClaimStruct)-> Integer len 4 (IsAdjustFromDate)
*            1028(ClaimStruct)-> BitString (Bits)
*            1036(ClaimStruct)-> reference to Reference len 4 (BypassE
*            1040(ClaimStruct)-> Integer len 4 (LastBypEditIdx)
*        3016(R9)-> Integer len 4 (return_code)
*        3020(R9)-> Jump (exit_now)
*        3048(R9)-> Integer len 4 (initialized)
*        3052(R9)-> String (table_file_name)
*        3064(R9)-> Table DATA_APC (DataApcTbl)
*            0000(DATA_APC)-> TblOvhd (_table_overhead_)
*            0008(DATA_APC)-> String (Apc)
*            0020(DATA_APC)-> Integer len 1 (LoVersion)
*            0021(DATA_APC)-> Integer len 1 (HiVersion)
*            0024(DATA_APC)-> String (Description)
*            0036(DATA_APC)-> String (StatusIndicator)
*            0048(DATA_APC)-> Integer len 1 (PaymentIndicator)
*            0052(DATA_APC)-> Integer len 4 (ApcPayment)
*            0056(DATA_APC)-> Integer len 4 (DeviceOffset)
*            0060(DATA_APC)-> Integer len 1 (Comp1Id)
*            0061(DATA_APC)-> Integer len 1 (Comp2Id)
*            0062(DATA_APC)-> Integer len 1 (Comp3Id)
*            0063(DATA_APC)-> BitString (flags)
*        3128(R9)-> Table DATA_CAPC (DataCAPCTbl)
*            0000(DATA_CAPC)-> TblOvhd (_table_overhead_)
*            0008(DATA_CAPC)-> String (HCPCS)
*            0020(DATA_CAPC)-> Integer len 1 (LoVersion)
*            0021(DATA_CAPC)-> Integer len 1 (HiVersion)
*            0023(DATA_CAPC)-> Integer len 3 (Rank)
*            0026(DATA_CAPC)-> BitString (flags)
*        3156(R9)-> Table DATA_DISCOUNT_FORMULA (DataDiscountFormulaTb
*            0000(DATA_DISCOUNT_FORMULA)-> TblOvhd (_table_overhead_)
*            0008(DATA_DISCOUNT_FORMULA)-> String (DiscountKey)
*            0020(DATA_DISCOUNT_FORMULA)-> Integer len 1 (LoVersion)
*            0021(DATA_DISCOUNT_FORMULA)-> Integer len 1 (HiVersion)
*            0023(DATA_DISCOUNT_FORMULA)-> Integer len 3 (DiscountForm
*            0028(DATA_DISCOUNT_FORMULA)-> String (Description)
*            0040(DATA_DISCOUNT_FORMULA)-> BitString (flags)
*        3200(R9)-> Table DATA_DX09 (DataDxTbl)
*            0000(DATA_DX09)-> TblOvhd (_table_overhead_)
*            0008(DATA_DX09)-> String (Diagnosis)
*            0020(DATA_DX09)-> Integer len 1 (LoVersion)
*            0021(DATA_DX09)-> Integer len 1 (HiVersion)
*            0024(DATA_DX09)-> String (Description)
*            0036(DATA_DX09)-> Integer len 2 (LoAge)
*            0038(DATA_DX09)-> Integer len 2 (HiAge)
*            0040(DATA_DX09)-> Integer len 1 (Sex)
*            0041(DATA_DX09)-> BitString (flags)
*        3244(R9)-> Table DATA_DX10 (DataDx10Tbl)
*            0000(DATA_DX10)-> TblOvhd (_table_overhead_)
*            0008(DATA_DX10)-> String (Diagnosis)
*            0020(DATA_DX10)-> Integer len 1 (LoVersion)
*            0021(DATA_DX10)-> Integer len 1 (HiVersion)
*            0024(DATA_DX10)-> String (Description)
*            0036(DATA_DX10)-> Integer len 2 (LoAge)
*            0038(DATA_DX10)-> Integer len 2 (HiAge)
*            0040(DATA_DX10)-> Integer len 1 (Sex)
*            0041(DATA_DX10)-> BitString (flags)
*        3288(R9)-> Table DATA_HCPCS (DataHcpcsTbl)
*            0000(DATA_HCPCS)-> TblOvhd (_table_overhead_)
*            0008(DATA_HCPCS)-> String (HCPCS)
*            0020(DATA_HCPCS)-> Integer len 2 (Index)
*            0022(DATA_HCPCS)-> Integer len 1 (LoVersion)
*            0023(DATA_HCPCS)-> Integer len 1 (HiVersion)
*            0024(DATA_HCPCS)-> String (Description)
*            0036(DATA_HCPCS)-> String (Apc)
*            0048(DATA_HCPCS)-> Integer len 2 (LoAge)
*            0050(DATA_HCPCS)-> Integer len 2 (HiAge)
*            0052(DATA_HCPCS)-> Integer len 1 (Sex)
*            0056(DATA_HCPCS)-> String (StatusIndicator)
*            0068(DATA_HCPCS)-> Integer len 1 (PaymentIndicator)
*            0070(DATA_HCPCS)-> Integer len 2 (MidQuarterDateEdit)
*            0072(DATA_HCPCS)-> Date (DateApproved)
*            0076(DATA_HCPCS)-> Date (DateTerminated)
*            0080(DATA_HCPCS)-> Integer len 1 (PhDuration)
*            0081(DATA_HCPCS)-> BitString (flags)
*        3384(R9)-> Table DATA_MODIFIER (DataModifierTbl)
*            0000(DATA_MODIFIER)-> TblOvhd (_table_overhead_)
*            0008(DATA_MODIFIER)-> String (Modif)
*            0020(DATA_MODIFIER)-> Integer len 1 (LoVersion)
*            0021(DATA_MODIFIER)-> Integer len 1 (HiVersion)
*            0024(DATA_MODIFIER)-> String (Description)
*            0036(DATA_MODIFIER)-> Date (DateActivated)
*            0040(DATA_MODIFIER)-> BitString (flags)
*        3428(R9)-> Table DATA_PAYMENT_INDICATOR (DataPITbl)
*            0000(DATA_PAYMENT_INDICATOR)-> TblOvhd (_table_overhead_)
*            0008(DATA_PAYMENT_INDICATOR)-> String (PaymentIndicator)
*            0020(DATA_PAYMENT_INDICATOR)-> Integer len 1 (LoVersion)
*            0021(DATA_PAYMENT_INDICATOR)-> Integer len 1 (HiVersion)
*            0024(DATA_PAYMENT_INDICATOR)-> String (Description)
*        3464(R9)-> Table DATA_REVENUE (DataValidRevenueTbl)
*            0000(DATA_REVENUE)-> TblOvhd (_table_overhead_)
*            0008(DATA_REVENUE)-> Integer len 2 (RevenueCode)
*            0010(DATA_REVENUE)-> Integer len 1 (LoVersion)
*            0011(DATA_REVENUE)-> Integer len 1 (HiVersion)
*            0012(DATA_REVENUE)-> String (Description)
*            0024(DATA_REVENUE)-> String (StatusIndicator)
*            0036(DATA_REVENUE)-> BitString (flags)
*        3504(R9)-> Table DATA_STATUS_INDICATOR (DataSITbl)
*            0000(DATA_STATUS_INDICATOR)-> TblOvhd (_table_overhead_)
*            0008(DATA_STATUS_INDICATOR)-> String (StatusIndicator)
*            0020(DATA_STATUS_INDICATOR)-> Integer len 1 (LoVersion)
*            0021(DATA_STATUS_INDICATOR)-> Integer len 1 (HiVersion)
*            0024(DATA_STATUS_INDICATOR)-> String (Description)
*        3540(R9)-> Table MAP_BIOSIMILAR (MapBioSimilarTbl)
*            0000(MAP_BIOSIMILAR)-> TblOvhd (_table_overhead_)
*            0008(MAP_BIOSIMILAR)-> String (HCPCS)
*            0020(MAP_BIOSIMILAR)-> String (Modif)
*            0032(MAP_BIOSIMILAR)-> Integer len 1 (LoVersion)
*            0033(MAP_BIOSIMILAR)-> Integer len 1 (HiVersion)
*        3576(R9)-> Table MAP_CAPC (MapCAPCTbl)
*            0000(MAP_CAPC)-> TblOvhd (_table_overhead_)
*            0008(MAP_CAPC)-> String (Code1)
*            0020(MAP_CAPC)-> String (Code2)
*            0032(MAP_CAPC)-> Integer len 1 (LoVersion)
*            0033(MAP_CAPC)-> Integer len 1 (HiVersion)
*            0036(MAP_CAPC)-> String (Apc)
*        3624(R9)-> Table MAP_CODEPAIR (MapCodePairTbl)
*            0000(MAP_CODEPAIR)-> TblOvhd (_table_overhead_)
*            0008(MAP_CODEPAIR)-> String (Code1)
*            0020(MAP_CODEPAIR)-> String (Code2)
*            0032(MAP_CODEPAIR)-> Integer len 1 (LoVersion)
*            0033(MAP_CODEPAIR)-> Integer len 1 (HiVersion)
*            0034(MAP_CODEPAIR)-> BitString (flags)
*        3660(R9)-> Table MAP_COMPOSITE (MapCompositeTbl)
*            0000(MAP_COMPOSITE)-> TblOvhd (_table_overhead_)
*            0008(MAP_COMPOSITE)-> String (HCPCS)
*            0020(MAP_COMPOSITE)-> String (CompositeApc)
*            0032(MAP_COMPOSITE)-> Integer len 1 (LoVersion)
*            0033(MAP_COMPOSITE)-> Integer len 1 (HiVersion)
*            0036(MAP_COMPOSITE)-> String (ListType)
*        3708(R9)-> Table MAP_MODIFIER_CONFLICT (MapModifierConflictTb
*            0000(MAP_MODIFIER_CONFLICT)-> TblOvhd (_table_overhead_)
*            0008(MAP_MODIFIER_CONFLICT)-> String (Modifier1)
*            0020(MAP_MODIFIER_CONFLICT)-> String (Modifier2)
*            0032(MAP_MODIFIER_CONFLICT)-> Integer len 1 (LoVersion)
*            0033(MAP_MODIFIER_CONFLICT)-> Integer len 1 (HiVersion)
*        3744(R9)-> Table MAP_NCCI (MapNCCITbl)
*            0000(MAP_NCCI)-> TblOvhd (_table_overhead_)
*            0008(MAP_NCCI)-> Integer len 2 (Index1)
*            0010(MAP_NCCI)-> Integer len 2 (Index2)
*            0012(MAP_NCCI)-> Integer len 1 (LoVersion)
*            0013(MAP_NCCI)-> Integer len 1 (HiVersion)
*            0014(MAP_NCCI)-> Integer len 1 (ModIndicator)
*        3760(R9)-> Table MAP_PH_ADDON (MapPHAddonTbl)
*            0000(MAP_PH_ADDON)-> TblOvhd (_table_overhead_)
*            0008(MAP_PH_ADDON)-> String (Addon)
*            0020(MAP_PH_ADDON)-> String (AddonPrimary)
*            0032(MAP_PH_ADDON)-> Integer len 1 (LoVersion)
*            0033(MAP_PH_ADDON)-> Integer len 1 (HiVersion)
*        3796(R9)-> Table MAP_S603_OVERRIDE (MapS603OverrideTbl)
*            0000(MAP_S603_OVERRIDE)-> TblOvhd (_table_overhead_)
*            0008(MAP_S603_OVERRIDE)-> String (HCPCS)
*            0020(MAP_S603_OVERRIDE)-> Integer len 1 (LoVersion)
*            0021(MAP_S603_OVERRIDE)-> Integer len 1 (HiVersion)
*            0024(MAP_S603_OVERRIDE)-> String (Apc)
*        3832(R9)-> Table MAP_STATUS_PAYMENT (MapStatusPaymentTbl)
*            0000(MAP_STATUS_PAYMENT)-> TblOvhd (_table_overhead_)
*            0008(MAP_STATUS_PAYMENT)-> String (StatusIndicator)
*            0020(MAP_STATUS_PAYMENT)-> Integer len 1 (StatusIndicator
*            0021(MAP_STATUS_PAYMENT)-> Integer len 1 (StatusIndicator
*            0022(MAP_STATUS_PAYMENT)-> Integer len 1 (PaymentIndicato
*            0023(MAP_STATUS_PAYMENT)-> Integer len 1 (PaymentIndicato
*            0024(MAP_STATUS_PAYMENT)-> Integer len 1 (PaymentIndicato
*        3860(R9)-> Table OFFSET_APC (OffsetApcTbl)
*            0000(OFFSET_APC)-> TblOvhd (_table_overhead_)
*            0008(OFFSET_APC)-> Integer len 1 (GroupId)
*            0009(OFFSET_APC)-> Integer len 1 (ListId)
*            0012(OFFSET_APC)-> String (Apc)
*            0024(OFFSET_APC)-> Integer len 1 (LoVersion)
*            0025(OFFSET_APC)-> Integer len 1 (HiVersion)
*            0028(OFFSET_APC)-> Integer len 4 (Amount)
*        3892(R9)-> Table OFFSET_CODEPAIR (OffsetCodePairTbl)
*            0000(OFFSET_CODEPAIR)-> TblOvhd (_table_overhead_)
*            0008(OFFSET_CODEPAIR)-> Integer len 1 (ListId)
*            0012(OFFSET_CODEPAIR)-> String (Code1)
*            0024(OFFSET_CODEPAIR)-> String (Code2)
*            0036(OFFSET_CODEPAIR)-> Integer len 1 (LoVersion)
*            0037(OFFSET_CODEPAIR)-> Integer len 1 (HiVersion)
*            0040(OFFSET_CODEPAIR)-> Integer len 4 (Amount)
*            0044(OFFSET_CODEPAIR)-> Date (DateActivated)
*        3940(R9)-> Table OFFSET_HCPCS (OffsetHcpcsTbl)
*            0000(OFFSET_HCPCS)-> TblOvhd (_table_overhead_)
*            0008(OFFSET_HCPCS)-> Integer len 1 (ListId)
*            0012(OFFSET_HCPCS)-> String (HCPCS)
*            0024(OFFSET_HCPCS)-> Integer len 1 (LoVersion)
*            0025(OFFSET_HCPCS)-> Integer len 1 (HiVersion)
*            0028(OFFSET_HCPCS)-> Integer len 4 (Amount)
*        3972(R9)-> Table PBT_MAP (PbtMapTbl)
*            0000(PBT_MAP)-> TblOvhd (_table_overhead_)
*            0008(PBT_MAP)-> Integer len 1 (RowId)
*            0009(PBT_MAP)-> Integer len 1 (LoVersion)
*            0010(PBT_MAP)-> Integer len 1 (HiVersion)
*            0011(PBT_MAP)-> Integer len 1 (Rule)
*            0012(PBT_MAP)-> Integer len 1 (PbtIndex)
*            0013(PBT_MAP)-> Integer len 1 (LoBill)
*            0014(PBT_MAP)-> Integer len 1 (HiBill)
*            0015(PBT_MAP)-> BitString (flags)
*        3988(R9)-> Table PBT_CONTROL (PbtControlTbl)
*            0000(PBT_CONTROL)-> TblOvhd (_table_overhead_)
*            0008(PBT_CONTROL)-> Integer len 1 (PbtIndex)
*            0009(PBT_CONTROL)-> Integer len 1 (LoVersion)
*            0010(PBT_CONTROL)-> Integer len 1 (HiVersion)
*            0011(PBT_CONTROL)-> BitString (flags)
*        4004(R9)-> Table VERSION_RANGE (VersionRangeTbl)
*            0000(VERSION_RANGE)-> TblOvhd (_table_overhead_)
*            0008(VERSION_RANGE)-> Integer len 1 (Version)
*            0012(VERSION_RANGE)-> Date (DateStarted)
*            0016(VERSION_RANGE)-> Date (DateEnded)
*            0020(VERSION_RANGE)-> String (VersionId)
*        4036(R9)-> Table MAP_ADDON_TYPE1 (MapAddonType1Tbl)
*            0000(MAP_ADDON_TYPE1)-> TblOvhd (_table_overhead_)
*            0008(MAP_ADDON_TYPE1)-> Integer len 2 (Index1)
*            0010(MAP_ADDON_TYPE1)-> Integer len 2 (Index2)
*            0012(MAP_ADDON_TYPE1)-> Integer len 1 (LoVersion)
*            0013(MAP_ADDON_TYPE1)-> Integer len 1 (HiVersion)
*        4052(R9)-> Table MAP_ADDON_TYPE2 (MapAddonType2Tbl)
*            0000(MAP_ADDON_TYPE2)-> TblOvhd (_table_overhead_)
*            0008(MAP_ADDON_TYPE2)-> String (Addon)
*            0020(MAP_ADDON_TYPE2)-> Integer len 1 (LoVersion)
*            0021(MAP_ADDON_TYPE2)-> Integer len 1 (HiVersion)
*        4076(R9)-> Table MAP_ADDON_TYPE3 (MapAddonType3Tbl)
*            0000(MAP_ADDON_TYPE3)-> TblOvhd (_table_overhead_)
*            0008(MAP_ADDON_TYPE3)-> String (Addon)
*            0020(MAP_ADDON_TYPE3)-> String (AddonPrimary)
*            0032(MAP_ADDON_TYPE3)-> Integer len 1 (LoVersion)
*            0033(MAP_ADDON_TYPE3)-> Integer len 1 (HiVersion)
*        4112(R9)-> Table MAP_ADDON_DRUG_ADMIN (MapAddonDrugAdmin)
*            0000(MAP_ADDON_DRUG_ADMIN)-> TblOvhd (_table_overhead_)
*            0008(MAP_ADDON_DRUG_ADMIN)-> String (Addon)
*            0020(MAP_ADDON_DRUG_ADMIN)-> String (AddonPrimary)
*            0032(MAP_ADDON_DRUG_ADMIN)-> Integer len 1 (LoVersion)
*            0033(MAP_ADDON_DRUG_ADMIN)-> Integer len 1 (HiVersion)
*        4148(R9)-> Table MAP_FQHC_VISIT (MapFQHCVisitTbl)
*            0000(MAP_FQHC_VISIT)-> TblOvhd (_table_overhead_)
*            0008(MAP_FQHC_VISIT)-> String (Code1)
*            0020(MAP_FQHC_VISIT)-> String (Code2)
*            0032(MAP_FQHC_VISIT)-> Integer len 1 (LoVersion)
*            0033(MAP_FQHC_VISIT)-> Integer len 1 (HiVersion)
*        4184(R9)-> Table MAP_CONFLICT_RHC (MapConflictRHCTbl)
*            0000(MAP_CONFLICT_RHC)-> TblOvhd (_table_overhead_)
*            0008(MAP_CONFLICT_RHC)-> String (HCPCS)
*            0020(MAP_CONFLICT_RHC)-> String (Modif)
*            0032(MAP_CONFLICT_RHC)-> Integer len 1 (LoVersion)
*            0033(MAP_CONFLICT_RHC)-> Integer len 1 (HiVersion)
*        4220(R9)-> Table DATA_EDIT_BYPASS (DataEditBypassTbl)
*            0000(DATA_EDIT_BYPASS)-> TblOvhd (_table_overhead_)
*            0008(DATA_EDIT_BYPASS)-> Integer len 2 (Edit)
*            0010(DATA_EDIT_BYPASS)-> Integer len 1 (LoVersion)
*            0011(DATA_EDIT_BYPASS)-> Integer len 1 (HiVersion)
*            0012(DATA_EDIT_BYPASS)-> BitString (flags)
*        4236(R9)-> Pool (apc_pool)
*        4244(R9)-> Pool (addon_pool)
*        4252(R9)-> Pool (_default_class_pool_)
*
         STM   R0,R14,0(R13)
         LR    R12,R13  FRAME BEGIN
         L     R9,60(R13)
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAA00403
         DC    A(DMNINIT) @00000
         DC    XL16'040B2000200004471C001C00101E0004' @00004
         DC    XL16'1C000000101E00041C000000100A0004'
         DC    XL16'1C000000102400061C001C0000001C00'
         DC    XL16'1C0004571C000407100A00061C000403'
         DC    XL16'00001C001C001C001C001C001C000417'
         DC    XL16'101E0004040300000403101E00040403'
         DC    XL16'00000403101E0004040300000403101E'
         DC    XL16'0004040300000403101E000404030000'
         DC    XL16'0403101E000404030000044F1C002400'
         DC    XL16'1C0004031C001C00040F24001C000407'
         DC    XL16'24001C0004071C00040324001C000403'
         DC    XL16'1C00040724001C0004031C0004072400'
         DC    XL16'1C0004031C001C0004071C00041B2400'
         DC    XL16'1C0004031C00040724001C0004031C00'
         DC    XL16'240004031C001C00040324001C000403'
         DC    XL16'1C0024001C001C00040324001C001C00'
         DC    XL16'04031C0024001C001C00040324001C00'
         DC    XL16'1C0004031C0024001C001C0004032400'
         DC    XL16'040724001C001C00040324001C000403'
         DC    XL16'1C0024001C000407240004031C000407'
         DC    XL16'240004031C001C00040B240004031C00'
         DC    XL16'040724000407240004072400040B1C00'
         DC    XL16'2400040724001C00040324001C001C00'
         DC    XL16'040324001C001C00040324001C001C00'
         DC    XL16'040324001C001C0004032400041F0000'
AAA00403 LR    R2,R9
         AHI   R2,4252
         LA    R14,4(R11)
         ST    R14,60(R13)
         ST    R2,64(R13)
         LA    R14,0(R9)
         ST    R14,68(R13)
         L     R15,0(R11)   DMNINIT
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCCATT
**************************
GAPCCATT CSECT
GAPCCATT AMODE ANY
GAPCCATT RMODE ANY
*Attribute Table GAPCCATT
         DC    F'6' @00000
         DC    F'28'
         DC    F'10'
         DC    F'38'
         DC    F'14'
         DC    F'138'
         DC    F'0'
         DC    XL10'04031C001C0004770000' @00028
         DC    XL16'04471C001C001C001C001C001C001C00' @00038
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C0004031C001C001C001C001C00'
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C00041B1C001C0004031C001C00'
         DC    XL16'1400000001E81C00045F000000000000'
         DC    XL4'00000000'
         DC    XL16'04471C001C001C001C001C001C001C00' @00138
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C0004031C001C001C001C001C00'
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C00041B1C001C0004031C001C00'
         DC    XL16'1400000001E81C00045F000000000000'
         DC    XL4'00000000'
         DC    F'0'
*^  Compiled on Thu May 14 08:25:35 2020
*^ IDENTS - GAPCC AAB
**************************
*    GAPCC002
**************************
GAPCC002 CSECT
GAPCC002 AMODE ANY
GAPCC002 RMODE ANY
*XREF - GAPCC002 GAPC.E91
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (44 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Void ()
*        0096(R12)-> Void ()
*  R13 + 0000 Stack           (R12 + 112)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,112  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00103
         DC    F'91' @00000
         DC    A(GAPCC091) @00004
         DC    A(DMNSCPY) @00008
         DC    F'3' @00012
         DC    A(GAPCC088) @00016
         DC    A(GAPCC089) @00020
         DC    F'6' @00024
         DC    H'1'  0 1 @00028
         DC    H'2'  0 2 @00030
         DC    CL1'E' @00032
         DC    CL2'E1' @00033
AAB00103 XC    64(44,R12),64(R12)
*S9: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAB00106 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAB00120
*S10: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAB00107 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAB00118
*S11: if( line->Bits->FoundHcpcs ) then {
         L     R2,68(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAB00114
* Edit 91 - Item Or Service Not Covered under FQHC PPS, V17.1
*S13: if( line->Bits->FoundRevenue
         L     R3,68(R12)   LINE
         TM    1076(R3),2   FOUNDREVENUE
         JE    AAB00113
         L     R4,68(R12)   LINE
         TM    1096(R4),64   FQHCNONCOVERED
         JNE   AAB00110
         L     R5,68(R12)   LINE
         L     R6,464(R5)   REVENUECODE
         CHI   R6,289
         JNH   AAB00108
         L     R7,68(R12)   LINE
         L     R8,464(R7)   REVENUECODE
         CHI   R8,300
         JL    AAB00110
AAB00108 L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,539
         JNH   AAB00109
         L     R4,68(R12)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,550
         JL    AAB00110
AAB00109 J     AAB00113
*S14: and (line->flags->FqhcNonCovered
*S15: or ( 289<line->RevenueCode and line->RevenueCode<300 )
*S16: or ( 539<line->RevenueCode and line->RevenueCode<550 ) ) ) then
*S17: do GAPC.SetEdit( Edit->FqhcNonCoveredService, line, base->NoDxp,
AAB00110 MVC   72(4,R12),0(R11)   91
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,64(R12)   DAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S18: line->StatusIndicator := ( 65 < base->Version )? "E1" : "E";
         L     R2,68(R12)   LINE
         L     R3,1868(R9)   VERSION
         CHI   R3,65
         JH    AAB00111
         LA    R14,32(R11)   E
         ST    R14,84(R12)   E
         MVC   88(2,R12),28(R11)   1
         MVC   90(2,R12),28(R11)   1
         XC    92(4,R12),92(R12)   E
         LA    R3,84(R12)   E
         J     AAB00112
AAB00111 LA    R14,33(R11)   E1
         ST    R14,96(R12)   E1
         MVC   100(2,R12),30(R11)   2
         MVC   102(2,R12),30(R11)   2
         XC    104(4,R12),104(R12)   E1
         LA    R3,96(R12)   E1
AAB00112 LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S19: line->PaymentIndicator :=3;
         L     R4,68(R12)   LINE
         MVC   204(4,R4),12(R11)   3
*S20: do GAPC.PrepPaymentMethodFlags( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC088
         BASR  R14,R15
*S21: do GAPC.SetAPCPay( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,20(R11)   GAPCC089
         BASR  R14,R15
AAB00113 J     AAB00116
*S22: }
*S23: }
* Edit 6 - Invalid HCPCS Code, V17.1
*S25: else if( not line->Bits->BlankHcpcs ) then {
AAB00114 L     R2,68(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JNE   AAB00115
*S26: do GAPC.SetEdit( Edit->InvalidHcpcs, line, base->NoDxp, base->No
         MVC   72(4,R12),24(R11)   6
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAB00115 EQU   *
AAB00116 EQU   *
AAB00117 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00107
AAB00118 EQU   *
AAB00119 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAB00106
AAB00120 EQU   *
AAB00121 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC003
**************************
GAPCC003 CSECT
GAPCC003 AMODE ANY
GAPCC003 RMODE ANY
*XREF - GAPCC003 GAPC.FindFQHCPair
*  R11 + 0000 Literals        (40 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Reference len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (day)
*        0068(R12)-> reference to Reference len 4 (line)
*  R12 + 0072 Local pool      (8 bytes)
*  R12 + 0080 Locals & temps  (36 bytes)
*        0080(R12)-> reference to Struct len 1120 (visitLine)
*        0084(R12)-> String (key1)
*        0096(R12)-> String (key2)
*        0108(R12)-> Integer len 4 (rc)
*        0112(R12)-> Integer len 4 (found)
*  R13 + 0000 Stack           (R12 + 120)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,120  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00203
         DC    A(DMNSCPY) @00000
         DC    F'1' @00004
         DC    A(DMNSCMP) @00008
         DC    A(DMNSEL) @00012
         DC    F'5' @00016
         DC    A(DMNSCPYX) @00020
         DC    A(DMNFREE) @00024
         DC    H'1'  0 1 @00028
         DC    H'4'  0 4 @00030
         DC    H'5'  0 5 @00032
         DC    H'7'  0 7 @00034
         DC    CL1'5' @00036
AAB00203 XC    72(8,R12),72(R12)
         LA    R3,72(R12)
         MVC   76(4,R12),44(R10)
         ST    R3,44(R10)
         XC    80(12,R12),80(R12)
         ST    R3,92(R12)
         XC    96(8,R12),96(R12)
         ST    R3,104(R12)
         XC    108(8,R12),108(R12)
*S39: key1 :=line->Hcpcs;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S40: found :=0;
         XC    112(4,R12),112(R12)   FOUND
*S41: loop( visitLine:=day->firstDaysItems; visitLine; visitLine:=visi
         L     R4,64(R12)   DAY
         L     R5,0(R4)   DAY
         MVC   80(4,R12),8(R5)   FIRSTDAYSITEMS
AAB00206 L     R15,80(R12)   VISITLINE
         LTR   R15,R15
         JE    AAB00222
* ONLY ALLOW FORWARD SELECTION OF QUALIFYING VISIT CODES
*S43: if( line->fqhcLinePair and not found ) then {
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         L     R15,40(R3)   FQHCLINEPAIR
         LTR   R15,R15
         JE    AAB00208
         L     R15,112(R12)   FOUND
         LTR   R15,R15
         JNE   AAB00208
*S44: if( line->fqhcLinePair=visitLine ) then {
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,40(R3)   FQHCLINEPAIR
         C     R4,80(R12)   VISITLINE
         JNE   AAB00207
*S45: found:=1;
         MVC   112(4,R12),4(R11)   1
AAB00207 J     AAB00220
*S46: }
*S47: }
*S48: else if( visitLine->fqhcRank < 1
AAB00208 L     R2,80(R12)   VISITLINE
         L     R3,1064(R2)   FQHCRANK
         CHI   R3,1
         JNL   AAB00219
         L     R4,80(R12)   VISITLINE
         L     R5,80(R12)   VISITLINE
         L     R6,1060(R4)   FQHCUNITSCONSUMED
         C     R6,468(R5)   SERVICEUNITS
         JNL   AAB00219
         L     R2,80(R12)   VISITLINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,36(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAB00219
*S49: and visitLine->fqhcUnitsConsumed < visitLine->ServiceUnits
*S50: and visitLine->ActionFlag<>"5" ) then {
*S51: key2:=visitLine->Hcpcs;
         L     R2,80(R12)   VISITLINE
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S52: loop( rc:=select MapFQHCVisitTbl using byPair( key1, key2 ); rc<
         MVC   60(2,R13),30(R11)   4
         MVC   62(2,R13),28(R11)   1
         LR    R14,R9
         AHI   R14,4148   MAPFQHCVISITTBL
         ST    R14,64(R13)
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),32(R11)   5
         LA    R14,84(R12)   KEY1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R4,73(R13)
         AHI   R13,88
         ST    R4,60(R13)
         MVC   68(2,R13),32(R11)   5
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAB00209
         L     R6,64(R13)
         AHI   R13,88
         LR    R14,R9
         AHI   R14,4156   MAPFQHCVISITTBL
         ST    R14,60(R13)
         ST    R6,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LR    R14,R9
         AHI   R14,4168   MAPFQHCVISITTBL
         ST    R14,60(R13)
         LA    R14,5(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         LR    R1,R9
         AHI   R1,4180
         MVC   0(2,R1),10(R6)
AAB00209 ST    R5,108(R12)   RC
AAB00210 L     R2,108(R12)   RC
         CHI   R2,1
         JNL   AAB00218
*S53: if(key1=MapFQHCVisitTbl->Code1
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LR    R14,R9
         AHI   R14,4156   CODE1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAB00215
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LR    R14,R9
         AHI   R14,4168   CODE2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAB00215
*S54: and key2=MapFQHCVisitTbl->Code2) then {
*S55: if(base->Version < MapFQHCVisitTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4180
         TM    0(R1),128   LOVERSION
         JE    AAB00211
         LHI   R14,-1
AAB00211 LR    R1,R9
         AHI   R1,4180
         IC    R14,0(R1)   LOVERSION
         CR    R2,R14
         JL    AAB00213
         XR    R3,R3
         LR    R1,R9
         AHI   R1,4181
         TM    0(R1),128   HIVERSION
         JE    AAB00212
         LHI   R3,-1
AAB00212 LR    R1,R9
         AHI   R1,4181
         IC    R3,0(R1)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAB00214
*S56: or MapFQHCVisitTbl->HiVersion < base->Version) then continue;
AAB00213 J     AAB00216
*S57: return visitLine;
AAB00214 L     R2,60(R12)
         MVC   0(4,R2),80(R12)   VISITLINE
         J     AAB00223
*S58: }
*S59: break;
AAB00215 J     AAB00218
AAB00216 MVC   60(2,R13),34(R11)   7
         LR    R14,R9
         AHI   R14,4148   MAPFQHCVISITTBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAB00217
         L     R3,64(R13)
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4156   MAPFQHCVISITTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4168   MAPFQHCVISITTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         LR    R1,R9
         AHI   R1,4180
         MVC   0(2,R1),10(R3)
AAB00217 ST    R2,108(R12)   RC
         J     AAB00210
AAB00218 EQU   *
AAB00219 EQU   *
AAB00220 EQU   *
AAB00221 L     R2,80(R12)   VISITLINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00206
*S60: }
*S61: }
*S62: }
*S63: return base->NoLine;
AAB00222 L     R2,60(R12)
         MVC   0(4,R2),88(R9)   NOLINE
AAB00223 LA    R4,72(R12)
         ST    R4,60(R13)
         L     R15,24(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC004
**************************
GAPCC004 CSECT
GAPCC004 AMODE ANY
GAPCC004 RMODE ANY
*XREF - GAPCC004 GAPC.CheckFQHC770Edit006
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (16 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00303
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    F'6' @00008
         DC    A(GAPCC091) @00012
         DC    H'3'  0 3 @00016
         DC    H'10'  0 10 @00018
         DC    H'1120'  4 96 @00020
         DC    CL3'770' @00022
AAB00303 XC    64(16,R12),64(R12)
*V20.2. FQHC 770 BT is now applicable to edit 6 for invalid but not bl
*S70: if (base->FullBillType = "770") then {
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   770
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   3
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAB00311
*S71: loop( item:=base->lines->first; item and (line:=&item->line, lin
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAB00306 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAB00310
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),18(R11)   10
         MVC   66(2,R13),20(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAB00310
*S72: if(not (line->Bits->FoundHcpcs or line->Bits->BlankHcpcs)) then
         L     R2,64(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JNE   AAB00307
         L     R3,64(R12)   LINE
         TM    1076(R3),64   BLANKHCPCS
         JNE   AAB00307
*S73: do GAPC.SetEdit( Edit->InvalidHcpcs, line, base->NoDxp, base->No
         MVC   68(4,R12),8(R11)   6
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAB00307 EQU   *
AAB00308 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAB00309
         L     R2,8(R2)
AAB00309 ST    R2,4(R9)   ITEM
         J     AAB00306
AAB00310 EQU   *
AAB00311 EQU   *
AAB00312 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC005
**************************
GAPCC005 CSECT
GAPCC005 AMODE ANY
GAPCC005 RMODE ANY
*XREF - GAPCC005 GAPC.CheckFQHC
*  R11 + 0000 Literals        (256 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (112 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Reference len 4 (visit)
*        0084(R12)-> reference to Struct len 1120 (currentVisit)
*        0088(R12)-> reference to Struct len 1120 (previousVisit)
*        0092(R12)-> reference to Struct len 1120 (possibleVisit)
*        0096(R12)-> Integer len 4 (count)
*        0100(R12)-> Integer len 4 (i)
*        0104(R12)-> Integer len 4 (j)
*        0108(R12)-> Integer len 4 (telehealth)
*        0112(R12)-> Integer len 4 (onlyNonCoveredPresent)
*        0116(R12)-> Integer len 4 (isChronicCare)
*        0120(R12)-> Integer len 4 (grandfatheredTribalDone)
*        0124(R12)-> Integer len 4 (grandfatheredTribalFqhc)
*        0128(R12)-> Integer len 4 (advancedCarePlanningComponent)
*        0132(R12)-> reference to Struct len 1120 (medicalVisit)
*        0136(R12)-> reference to Struct len 1120 (mentalHealthVisit)
*        0140(R12)-> reference to Struct len 1120 (additionalVisit)
*        0144(R12)-> Integer len 4 (includeAdditionalMedicalVisit)
*        0148(R12)-> Unknown ()
*        0148(R12)-> Integer len 4 ()
*        0152(R12)-> Integer len 4 ()
*        0156(R12)-> Integer len 4 ()
*        0160(R12)-> Void ()
*        0172(R12)-> Void ()
*  R13 + 0000 Stack           (R12 + 184)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,184  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00403
         DC    A(DMNSCMP) @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNSTBL) @00008
         DC    F'2' @00012
         DC    F'3' @00016
         DC    F'1' @00020
         DC    F'4' @00024
         DC    F'5' @00028
         DC    F'6' @00032
         DC    A(GAPCC091) @00036
         DC    F'1120' @00040
         DC    A(DMNNEW) @00044
         DC    A(DMNINIT) @00048
         DC    F'11' @00052
         DC    A(GAPCC003) @00056
         DC    F'89' @00060
         DC    F'90' @00064
         DC    F'14' @00068
         DC    F'13' @00072
         DC    F'10' @00076
         DC    F'88' @00080
         DC    F'84' @00084
         DC    F'91' @00088
         DC    A(GAPCC119) @00092
         DC    F'12' @00096
         DC    A(DMNFREE) @00100
         DC    H'3'  0 3 @00104
         DC    H'1'  0 1 @00106
         DC    H'7'  0 7 @00108
         DC    H'5'  0 5 @00110
         DC    H'6'  0 6 @00112
         DC    XL16'04471C001C001C001C001C001C001C00' @00114
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C0004031C001C001C001C001C00'
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C00041B1C001C0004031C001C00'
         DC    XL16'1400000001E81C00045F000000000000'
         DC    XL4'00000000'
         DC    H'9'  0 9 @00214
         DC    H'2'  0 2 @00216
         DC    CL3'770' @00218
         DC    CL1'5' @00221
         DC    CL9'000000001' @00222
         DC    CL2'03' @00231
         DC    CL2'01' @00233
         DC    CL2'02' @00235
         DC    CL5'Q3014' @00237
         DC    CL5'G2025' @00242
         DC    CL1'E' @00247
         DC    CL2'E1' @00248
         DC    CL5'G0468' @00250
AAB00403 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(112,R12),72(R12)
*S98: grandfatheredTribalFqhc := ( 61 < base->Version and claim->Bits-
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAB00406
         TM    3001(R9),32   HASCCMG
         JE    AAB00406
         LHI   R2,1
         J     AAB00407
AAB00406 LHI   R2,0
AAB00407 ST    R2,124(R12)   GRANDFATHEREDTRIBALFQHC
*S100: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAB00408 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAB00533
*S102: count:=0;
         XC    96(4,R12),96(R12)   COUNT
*S103: telehealth:=0;
         XC    108(4,R12),108(R12)   TELEHEALTH
*S104: onlyNonCoveredPresent:=( 60 < base->Version )? 1 : 0;
         L     R2,1868(R9)   VERSION
         CHI   R2,60
         JH    AAB00409
         LHI   R2,0
         J     AAB00410
AAB00409 LHI   R2,1
AAB00410 ST    R2,112(R12)   ONLYNONCOVEREDPRESENT
*S105: grandfatheredTribalDone:=0;
         XC    120(4,R12),120(R12)   GRANDFATHEREDTRIBALDONE
*S107: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAB00411 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAB00435
* V16.3, EFFECTIVE 2015-10-01, SUPPRESS EDIT 88 FOR DAYS WHERE ALL LIN
* SET onlyNonCoveredPresent TO FALSE FOR THE FIRST NON-COVERED SERVICE
*S111: if( onlyNonCoveredPresent
         L     R15,112(R12)   ONLYNONCOVEREDPRESENT
         LTR   R15,R15
         JE    AAB00416
         L     R2,76(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAB00415
         L     R3,76(R12)   LINE
         TM    1096(R3),64   FQHCNONCOVERED
         JNE   AAB00414
         L     R4,76(R12)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,289
         JNH   AAB00412
         L     R6,76(R12)   LINE
         L     R7,464(R6)   REVENUECODE
         CHI   R7,300
         JL    AAB00414
AAB00412 L     R2,76(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,539
         JNH   AAB00413
         L     R4,76(R12)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,550
         JL    AAB00414
AAB00413 J     AAB00415
AAB00414 J     AAB00416
*S112: and not( line->Bits->FoundRevenue
*S113: and ( line->flags->FqhcNonCovered
*S114: or ( 289<line->RevenueCode and line->RevenueCode<300 )
*S115: or ( 539<line->RevenueCode and line->RevenueCode<550 ) ) ) ) th
*S116: onlyNonCoveredPresent:=0;
AAB00415 XC    112(4,R12),112(R12)   ONLYNONCOVEREDPRESENT
*S117: }
*S119: if( base->FullBillType="770" ) then {
AAB00416 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,218(R11)   770
         ST    R14,64(R13)
         MVC   70(2,R13),104(R11)   3
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAB00417
*S120: line->ActionFlag:="5";
         L     R3,76(R12)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,221(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),106(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         J     AAB00433
*V20.0 FQHC Non covered codes are now unpackaged under BT 770.
*if (line->flags->FqhcNonCovered) then {
*    line->PackagingFlag := 0;
*}
*S125: }
*S127: else if( line->ActionFlag<>"5"
AAB00417 L     R2,76(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,221(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),106(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAB00432
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAB00432
         L     R5,76(R12)   LINE
         TM    1081(R5),32   IGNOREINPAT
         JNE   AAB00432
*S128: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
*S130: if( line->Bits->FoundHcpcs ) then {
         L     R2,76(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAB00429
*S131: switch( line->Hcpcs ){
         L     R3,76(R12)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),108(R11)   7
         MVC   68(2,R13),110(R11)   5
         MVC   70(2,R13),112(R11)   6
         L     R15,8(R11)   DMNSTBL
         BASR  R14,R15
         J     AAB00418
         DC    CL5'G0466'
         DC    X'00'
         J     AAB00419
         DC    CL5'G0467'
         DC    X'00'
         J     AAB00420
         DC    CL5'G0468'
         DC    X'00'
         J     AAB00421
         DC    CL5'G0469'
         DC    X'00'
         J     AAB00422
         DC    CL5'G0470'
         DC    X'00'
         J     AAB00423
         DC    CL5'Q3014'
         DC    X'00'
         J     AAB00424
         DC    CL5'G2025'
         DC    X'00'
         J     AAB00425
*S132: case "G0466":%FQHC VISIT: MEDICAL, NEW PATIENT
*S133: line->fqhcRank:=2;
AAB00418 L     R2,76(R12)   LINE
         MVC   1064(4,R2),12(R11)   2
*S134: count+=1;
         LHI   R2,1
         A     R2,96(R12)   COUNT
         ST    R2,96(R12)   COUNT
*S135: break;
         J     AAB00427
*S136: case "G0467":%FQHC VISIT: MEDICAL, ESTABLISHED PATIENT
*S137: line->fqhcRank:=3;
AAB00419 L     R2,76(R12)   LINE
         MVC   1064(4,R2),16(R11)   3
*S138: count+=1;
         LHI   R2,1
         A     R2,96(R12)   COUNT
         ST    R2,96(R12)   COUNT
*S139: break;
         J     AAB00427
*S140: case "G0468":%FQHC VISIT: IPPE, OR AWV
*S141: line->fqhcRank:=1;
AAB00420 L     R2,76(R12)   LINE
         MVC   1064(4,R2),20(R11)   1
*S142: count+=1;
         LHI   R2,1
         A     R2,96(R12)   COUNT
         ST    R2,96(R12)   COUNT
*S143: break;
         J     AAB00427
*S144: case "G0469":%FQHC VISIT: MENTAL HEALTH, NEW PATIENT
*S145: line->fqhcRank:=4;
AAB00421 L     R2,76(R12)   LINE
         MVC   1064(4,R2),24(R11)   4
*S146: count+=1;
         LHI   R2,1
         A     R2,96(R12)   COUNT
         ST    R2,96(R12)   COUNT
*S147: break;
         J     AAB00427
*S148: case "G0470":%FQHC VISIT: MENTAL HEALTH, ESTABLISHED PATIENT
*S149: line->fqhcRank:=5;
AAB00422 L     R2,76(R12)   LINE
         MVC   1064(4,R2),28(R11)   5
*S150: count+=1;
         LHI   R2,1
         A     R2,96(R12)   COUNT
         ST    R2,96(R12)   COUNT
*S151: break;
         J     AAB00427
* V16.2, EFFECTIVE 2015-07-01, IF TELEHEALTH EXISTS ON
* THE CLAIM WITHOUT A FQHC VISIT CODE, SUPPRESS EDIT 88.
*S154: case "Q3014":
*S155: telehealth:=1;
AAB00423 MVC   108(4,R12),20(R11)   1
*S156: break;
         J     AAB00427
* V21.2 Added additional telehealth code
*S158: case "G2025":
*S159: telehealth:=1;
AAB00424 MVC   108(4,R12),20(R11)   1
*S160: break;
         J     AAB00427
*S161: default:
*S162: if( 61 < base->Version
AAB00425 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAB00426
         L     R3,76(R12)   LINE
         TM    1097(R3),16   ANNUALWELLNESSVISIT
         JE    AAB00426
*S163: and line->flags->AnnualWellnessVisit ) then
*S164: advancedCarePlanningComponent:=1;
         MVC   128(4,R12),20(R11)   1
*S165: break;
*S166: }
*S167: if( 61 < base->Version and line->flags->FqhcChronicCare ) then
AAB00426 EQU   *
AAB00427 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAB00428
         L     R3,76(R12)   LINE
         TM    1096(R3),8   FQHCCHRONICCARE
         JE    AAB00428
         MVC   116(4,R12),20(R11)   1
AAB00428 J     AAB00431
*S168: }
* Edit 6 - Invalid HCPCS Code, V15.3
*S170: else if( not line->Bits->BlankHcpcs ) then {
AAB00429 L     R2,76(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JNE   AAB00430
*S171: do GAPC.SetEdit( Edit->InvalidHcpcs, line, base->NoDxp, base->N
         MVC   148(4,R12),32(R11)   6
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
AAB00430 EQU   *
AAB00431 EQU   *
AAB00432 EQU   *
AAB00433 EQU   *
AAB00434 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00411
*S172: }
*S174: }
*S175: }
*S177: reset medicalVisit;
AAB00435 XC    132(4,R12),132(R12)
*S178: reset mentalHealthVisit;
         XC    136(4,R12),136(R12)
*S179: reset additionalVisit;
         XC    140(4,R12),140(R12)
* AT LEAST ONE FQHC VISIT IS REQUIRED
*S181: if( count ) then {
         L     R15,96(R12)   COUNT
         LTR   R15,R15
         JE    AAB00494
* STORE FQHC VISITS FOR CURRENT DAY IN DYNAMIC ARRAY
* SET ANY FQHC SERVICE WITH MORE THAN 1 UNIT TO 1
*S185: reset visit;
         XC    80(4,R12),80(R12)
*S186: visit:=new reference to struct LineItem[count];
         LA    R2,64(R12)
         MVC   60(4,R13),96(R12)   COUNT
         MVC   64(4,R13),40(R11)   1120
         ST    R2,68(R13)
         L     R15,44(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LR    R4,R3
         L     R5,96(R12)   COUNT
AAB00436 LA    R14,114(R11)
         ST    R14,60(R13)
         ST    R2,64(R13)
         ST    R4,68(R13)
         L     R15,48(R11)   DMNINIT
         BASR  R14,R15
         LA    R4,1120(R4)
         BRCT  R5,AAB00436
         ST    R3,80(R12)   VISIT
*S187: i:=0;
         XC    100(4,R12),100(R12)   I
*S188: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R6,72(R12)   DAY
         MVC   76(4,R12),8(R6)   FIRSTDAYSITEMS
AAB00437 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAB00442
*S189: if( 0 < line->fqhcRank and line->ActionFlag<>"5" ) then {
         L     R2,76(R12)   LINE
         L     R3,1064(R2)   FQHCRANK
         LTR   R3,R3
         JNH   AAB00440
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,221(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),106(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAB00440
*S190: if( 1 < line->ServiceUnits ) then {
         L     R2,76(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         CHI   R3,1
         JNH   AAB00439
*S191: line->ServiceUnitsInput :="000000001";
         L     R4,76(R12)   LINE
         LA    R14,232(R4)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,222(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),214(R11)   9
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S192: line->ServiceUnitsPay :=1;
         L     R5,76(R12)   LINE
         MVC   568(4,R5),20(R11)   1
* V16.2, EFFECTIVE 2015-07-01, PAF 11 INDICATES UNITS REDUCED TO 1
*S194: if( 59 < base->Version and not line->PayAdjFlag ) then {
         L     R6,1868(R9)   VERSION
         CHI   R6,59
         JNH   AAB00438
         L     R7,76(R12)   LINE
         L     R15,544(R7)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAB00438
*S195: line->PayAdjFlag :=11;
         L     R2,76(R12)   LINE
         MVC   544(4,R2),52(R11)   11
*S196: }
*S197: }
* NOT USING REDUCED UNITS FUNCTION BECAUSE THE EFFECTIVE DATE V60 DIFF
*do GAPC.ReduceUnits( line );
*S200: visit[i]:=line;
AAB00438 EQU   *
AAB00439 L     R2,80(R12)   VISIT
         L     R3,100(R12)   I
         MHI   R3,4
         AR    R2,R3
         MVC   0(4,R2),76(R12)   LINE
*S201: i+=1;
         LHI   R4,1
         A     R4,100(R12)   I
         ST    R4,100(R12)   I
AAB00440 EQU   *
AAB00441 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00437
*S202: }
*S203: }
* Edit 89 - FQHC Claim Lacks Required Qualifying Visit Code, V15.3
* ITERATE OVER FQHC VISITS
*S207: reset possibleVisit;
AAB00442 XC    92(4,R12),92(R12)
*S208: loop( i:=0; i<count; i+=1 ){
         XC    100(4,R12),100(R12)   I
AAB00443 L     R2,100(R12)   I
         C     R2,96(R12)   COUNT
         JNL   AAB00452
*S209: currentVisit:=visit[i];
         L     R3,80(R12)   VISIT
         L     R4,100(R12)   I
         MHI   R4,4
         AR    R3,R4
         MVC   84(4,R12),0(R3)   VISIT
*S210: L1: possibleVisit:=do GAPC.FindFQHCPair( day, currentVisit );
AAB00444 LA    R14,92(R12)   POSSIBLEVISIT
         ST    R14,60(R13)
         LA    R14,72(R12)   DAY
         ST    R14,64(R13)
         LA    R14,84(R12)   CURRENTVISIT
         ST    R14,68(R13)
         L     R15,56(R11)   GAPCC003
         BASR  R14,R15
* NO PAIR EXISTS
*S212: if( possibleVisit=base->NoLine ) then {
         L     R2,92(R12)   POSSIBLEVISIT
         C     R2,88(R9)   NOLINE
         JNE   AAB00449
* CHECK IF A PREVIOUS FQHC VISIT CAN PAIR WITH ANOTHER AVAILABLE QUALI
*S214: loop( j:=i-1; -1<j; j-=1 ){
         L     R3,100(R12)   I
         AHI   R3,-1
         ST    R3,104(R12)   J
AAB00445 L     R2,104(R12)   J
         CHI   R2,-1
         JNH   AAB00448
*S215: previousVisit:=visit[j];
         L     R3,80(R12)   VISIT
         L     R4,104(R12)   J
         MHI   R4,4
         AR    R3,R4
         MVC   88(4,R12),0(R3)   VISIT
*S216: possibleVisit:=do GAPC.FindFQHCPair( day, previousVisit );
         LA    R14,92(R12)   POSSIBLEVISIT
         ST    R14,60(R13)
         LA    R14,72(R12)   DAY
         ST    R14,64(R13)
         LA    R14,88(R12)   PREVIOUSVISIT
         ST    R14,68(R13)
         L     R15,56(R11)   GAPCC003
         BASR  R14,R15
* NO ALTERNATE PAIR EXISTS, TRY NEXT FQHC VISIT IF ONE EXISTS
*S218: if( possibleVisit=base->NoLine ) then continue;
         L     R5,92(R12)   POSSIBLEVISIT
         C     R5,88(R9)   NOLINE
         JNE   AAB00446
         J     AAB00447
* NEW PAIR FOUND FOR A PREVIOUS FQHC VISIT, REASSIGN, THEN RETEST CURR
*S220: previousVisit->fqhcLinePair->fqhcUnitsConsumed -=1;
AAB00446 L     R2,88(R12)   PREVIOUSVISIT
         L     R3,40(R2)   FQHCLINEPAIR
         L     R4,88(R12)   PREVIOUSVISIT
         L     R5,40(R4)   FQHCLINEPAIR
         L     R6,1060(R5)   FQHCUNITSCONSUMED
         AHI   R6,-1
         ST    R6,1060(R3)   FQHCUNITSCONSUMED
*S221: previousVisit->fqhcLinePair :=possibleVisit;
         L     R7,88(R12)   PREVIOUSVISIT
         MVC   40(4,R7),92(R12)   POSSIBLEVISIT
*S222: previousVisit->fqhcLinePair->fqhcUnitsConsumed +=1;
         L     R8,88(R12)   PREVIOUSVISIT
         L     R2,40(R8)   FQHCLINEPAIR
         AHI   R6,1
         ST    R6,1060(R2)   FQHCUNITSCONSUMED
*S223: goto L1;
         J     AAB00444
AAB00447 L     R2,104(R12)   J
         AHI   R2,-1
         ST    R2,104(R12)   J
         J     AAB00445
*S224: }
* ALL POSSIBILITIES EXHAUSTED, EDIT CURRENT FQHC VISIT
*S226: do GAPC.SetEdit( Edit->FqhcPairRequired, currentVisit, base->No
AAB00448 MVC   148(4,R12),60(R11)   89
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,84(R12)   CURRENTVISIT
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
*S227: currentVisit->Bits->FqhcEdit:=1;
         L     R2,84(R12)   CURRENTVISIT
         OI    1085(R2),32   FQHCEDIT
         J     AAB00450
*S228: }
* PAIR FOUND, ASSIGN AND DEDUCT FROM COUNT
*S230: else{
*S231: currentVisit->fqhcLinePair :=possibleVisit;
AAB00449 L     R2,84(R12)   CURRENTVISIT
         MVC   40(4,R2),92(R12)   POSSIBLEVISIT
*S232: currentVisit->fqhcLinePair->fqhcUnitsConsumed +=1;
         L     R3,84(R12)   CURRENTVISIT
         L     R4,40(R3)   FQHCLINEPAIR
         L     R5,84(R12)   CURRENTVISIT
         L     R6,40(R5)   FQHCLINEPAIR
         LHI   R7,1
         A     R7,1060(R6)   FQHCUNITSCONSUMED
         ST    R7,1060(R4)   FQHCUNITSCONSUMED
AAB00450 EQU   *
AAB00451 LHI   R2,1
         A     R2,100(R12)   I
         ST    R2,100(R12)   I
         J     AAB00443
*S233: }
*S234: }
* ORDER FQHC VISITS BY RANK, LOWEST HAS HIGHEST PRIORITY (STABLE SORT)
* THIS IS DONE AFTER PAIRING BECAUSE IT IS ASSUMED THAT PAIRED FQHC AN
* WILL BE IN CLOSER PROXIMITY (SAVES ON RECURSIVE CALLS)
*S239: loop( i:=1; i<count; i+=1 ){
AAB00452 MVC   100(4,R12),20(R11)   1
AAB00453 L     R2,100(R12)   I
         C     R2,96(R12)   COUNT
         JNL   AAB00459
*S240: loop( j:=0; j<count-1; j+=1 ){
         XC    104(4,R12),104(R12)   J
AAB00454 L     R2,96(R12)   COUNT
         AHI   R2,-1
         C     R2,104(R12)   J
         JNH   AAB00457
*S241: if( visit[j+1]->fqhcRank < visit[j]->fqhcRank ) then {
         LHI   R3,1
         A     R3,104(R12)   J
         L     R4,80(R12)   VISIT
         MHI   R3,4
         AR    R4,R3
         L     R5,0(R4)   VISIT
         L     R6,80(R12)   VISIT
         L     R7,104(R12)   J
         MHI   R7,4
         AR    R6,R7
         L     R8,0(R6)   VISIT
         L     R2,1064(R5)   FQHCRANK
         C     R2,1064(R8)   FQHCRANK
         JNL   AAB00455
*S242: currentVisit:=visit[j];
         L     R3,80(R12)   VISIT
         L     R4,104(R12)   J
         MHI   R4,4
         AR    R3,R4
         MVC   84(4,R12),0(R3)   VISIT
*S243: visit[j]:=visit[j+1];
         L     R5,80(R12)   VISIT
         L     R6,104(R12)   J
         MHI   R6,4
         AR    R5,R6
         LHI   R7,1
         A     R7,104(R12)   J
         L     R8,80(R12)   VISIT
         MHI   R7,4
         AR    R8,R7
         MVC   0(4,R5),0(R8)   VISIT
*S244: visit[j+1]:=currentVisit;
         LHI   R2,1
         A     R2,104(R12)   J
         L     R3,80(R12)   VISIT
         MHI   R2,4
         AR    R3,R2
         MVC   0(4,R3),84(R12)   CURRENTVISIT
AAB00455 EQU   *
AAB00456 LHI   R2,1
         A     R2,104(R12)   J
         ST    R2,104(R12)   J
         J     AAB00454
AAB00457 EQU   *
AAB00458 LHI   R2,1
         A     R2,100(R12)   I
         ST    R2,100(R12)   I
         J     AAB00453
*S245: }
*S246: }
*S247: }
* Edit 90 - Incorrect Revenue Code Reported for FQHC Payment Code, V15
* IDENTIFY WHICH FQHC VISITS TO PAY BASED ON RANK
* SET CAF 1 FOR MED, 2 FOR MH, AND 3 FOR MOD 59
* THE FIRST ENCOUNTERED NEW PATIENT ITEM PAYS WITH PI=13
*S253: includeAdditionalMedicalVisit :=0;
AAB00459 XC    144(4,R12),144(R12)   INCLUDEADDITIONALMEDICALVISIT
* includeAdditionalMentalHealthVisit :=FALSE;
*S255: j:=1;% REUSED AS "IS FIRST NEW PATIENT VISIT" FLAG
         MVC   104(4,R12),20(R11)   1
*S256: loop( i:=0; i<count; i+=1 ){
         XC    100(4,R12),100(R12)   I
AAB00460 L     R2,100(R12)   I
         C     R2,96(R12)   COUNT
         JNL   AAB00493
*S257: line:=visit[i];
         L     R3,80(R12)   VISIT
         L     R4,100(R12)   I
         MHI   R4,4
         AR    R3,R4
         MVC   76(4,R12),0(R3)   VISIT
* MEDICAL VISIT
*S259: if( line->fqhcRank < 4 ) then {
         L     R5,76(R12)   LINE
         L     R6,1064(R5)   FQHCRANK
         CHI   R6,4
         JNL   AAB00478
*S260: if( not grandfatheredTribalDone ) then {
         L     R15,120(R12)   GRANDFATHEREDTRIBALDONE
         LTR   R15,R15
         JNE   AAB00463
*S261: line->CompAdjFlag:=( line->Bits->Has59Modifier and not grandfat
         L     R7,76(R12)   LINE
         L     R8,76(R12)   LINE
         TM    1077(R8),16   HAS59MODIFIER
         JE    AAB00461
         L     R15,124(R12)   GRANDFATHEREDTRIBALFQHC
         LTR   R15,R15
         JNE   AAB00461
         LA    R2,231(R11)   03
         J     AAB00462
AAB00461 LA    R2,233(R11)   01
AAB00462 LA    R14,272(R7)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),216(R11)   2
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S262: }
*S263: if( line->Bits->FoundRevenue and (line->RevenueCode<519 or line
AAB00463 L     R2,76(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAB00465
         L     R3,76(R12)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,519
         JL    AAB00464
         L     R5,76(R12)   LINE
         L     R6,464(R5)   REVENUECODE
         CHI   R6,529
         JNH   AAB00465
*S264: do GAPC.SetEdit( Edit->FqhcRevenueCodeRequired, line, base->NoD
AAB00464 MVC   148(4,R12),64(R11)   90
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
         J     AAB00477
*S265: }
* DO NOT CONSIDER FQHC VISIT CODES WITH FQHC EDITS 89 OR 90
* V17.0, EFFECTIVE 2016-01-01 PAYABLE TRIBAL FQHCS GET DIFFERENT RATE
* AND NO ADDITIONAL PAYMENT OR AWE DISCOUNT
*S269: else if( not ( line->Bits->FqhcEdit or grandfatheredTribalDone
AAB00465 L     R2,76(R12)   LINE
         TM    1085(R2),32   FQHCEDIT
         JNE   AAB00476
         L     R15,120(R12)   GRANDFATHEREDTRIBALDONE
         LTR   R15,R15
         JNE   AAB00476
*S270: if( not medicalVisit ) then {
         L     R15,132(R12)   MEDICALVISIT
         LTR   R15,R15
         JNE   AAB00472
*S271: if( grandfatheredTribalFqhc ) then {
         L     R15,124(R12)   GRANDFATHEREDTRIBALFQHC
         LTR   R15,R15
         JE    AAB00466
*S272: medicalVisit :=line;
         MVC   132(4,R12),76(R12)   LINE
*S273: line->PaymentIndicator :=14;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),68(R11)   14
*S274: grandfatheredTribalDone :=1;
         MVC   120(4,R12),20(R11)   1
         J     AAB00470
*S275: }
*S276: else if( j and ( line->fqhcRank=1 or line->fqhcRank=2 ) ) then
AAB00466 L     R15,104(R12)   J
         LTR   R15,R15
         JE    AAB00468
         L     R2,76(R12)   LINE
         L     R3,1064(R2)   FQHCRANK
         CHI   R3,1
         JE    AAB00467
         L     R4,76(R12)   LINE
         L     R5,1064(R4)   FQHCRANK
         CHI   R5,2
         JNE   AAB00468
*S277: line->PaymentIndicator :=13;
AAB00467 L     R2,76(R12)   LINE
         MVC   204(4,R2),72(R11)   13
*S278: j :=0;
         XC    104(4,R12),104(R12)   J
         J     AAB00469
*S279: }
*S280: else line->PaymentIndicator :=10;
AAB00468 L     R2,76(R12)   LINE
         MVC   204(4,R2),76(R11)   10
*S282: medicalVisit:=line;
AAB00469 EQU   *
AAB00470 MVC   132(4,R12),76(R12)   LINE
*S283: if( line->Bits->Has59Modifier
         L     R2,76(R12)   LINE
         TM    1077(R2),16   HAS59MODIFIER
         JE    AAB00471
         L     R3,76(R12)   LINE
         L     R4,1064(R3)   FQHCRANK
         CHI   R4,3
         JNE   AAB00471
*S284: and line->fqhcRank=3 ) then {
*S285: includeAdditionalMedicalVisit:=1;
         MVC   144(4,R12),20(R11)   1
AAB00471 J     AAB00475
*S286: }
*S287: }
*S288: else if( not grandfatheredTribalFqhc
AAB00472 L     R15,124(R12)   GRANDFATHEREDTRIBALFQHC
         LTR   R15,R15
         JNE   AAB00474
         L     R15,140(R12)   ADDITIONALVISIT
         LTR   R15,R15
         JNE   AAB00474
         L     R15,144(R12)   INCLUDEADDITIONALMEDICALVISIT
         LTR   R15,R15
         JNE   AAB00473
         L     R2,76(R12)   LINE
         TM    1077(R2),16   HAS59MODIFIER
         JE    AAB00474
AAB00473 L     R2,76(R12)   LINE
         L     R3,1064(R2)   FQHCRANK
         CHI   R3,3
         JNE   AAB00474
*S289: and not additionalVisit
*S290: and ( ( includeAdditionalMedicalVisit or line->Bits->Has59Modif
*S291: line->PaymentIndicator :=10;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),76(R11)   10
*S292: additionalVisit:=line;
         MVC   140(4,R12),76(R12)   LINE
AAB00474 EQU   *
AAB00475 EQU   *
AAB00476 EQU   *
AAB00477 J     AAB00491
*S293: }
*S294: }
*S295: }
* MENTAL HEALTH VISIT
*S297: else if( line->fqhcRank < 6 ) then {
AAB00478 L     R2,76(R12)   LINE
         L     R3,1064(R2)   FQHCRANK
         CHI   R3,6
         JNL   AAB00490
*S298: if( not grandfatheredTribalDone ) then {
         L     R15,120(R12)   GRANDFATHEREDTRIBALDONE
         LTR   R15,R15
         JNE   AAB00481
*S299: line->CompAdjFlag:=( line->Bits->Has59Modifier and not grandfat
         L     R4,76(R12)   LINE
         L     R5,76(R12)   LINE
         TM    1077(R5),16   HAS59MODIFIER
         JE    AAB00479
         L     R15,124(R12)   GRANDFATHEREDTRIBALFQHC
         LTR   R15,R15
         JNE   AAB00479
         LA    R2,231(R11)   03
         J     AAB00480
AAB00479 LA    R2,235(R11)   02
AAB00480 LA    R14,272(R4)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),216(R11)   2
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S300: }
*S301: if( line->Bits->FoundRevenue and (line->RevenueCode<>519 and li
AAB00481 L     R2,76(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAB00482
         L     R3,76(R12)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,519
         JE    AAB00482
         L     R5,76(R12)   LINE
         L     R6,464(R5)   REVENUECODE
         CHI   R6,900
         JE    AAB00482
*S302: do GAPC.SetEdit( Edit->FqhcRevenueCodeRequired, line, base->NoD
         MVC   148(4,R12),64(R11)   90
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
         J     AAB00489
*S303: }
* DO NOT CONSIDER FQHC VISIT CODES WITH FQHC EDITS 89 OR 90
* V17.0, EFFECTIVE 2016-01-01 PAYABLE TRIBAL FQHCS GET DIFFERENT RATE
*S306: else if( not ( line->Bits->FqhcEdit or grandfatheredTribalDone
AAB00482 L     R2,76(R12)   LINE
         TM    1085(R2),32   FQHCEDIT
         JNE   AAB00488
         L     R15,120(R12)   GRANDFATHEREDTRIBALDONE
         LTR   R15,R15
         JNE   AAB00488
*S307: if( not mentalHealthVisit ) then {
         L     R15,136(R12)   MENTALHEALTHVISIT
         LTR   R15,R15
         JNE   AAB00487
*S308: if( grandfatheredTribalFqhc ) then {
         L     R15,124(R12)   GRANDFATHEREDTRIBALFQHC
         LTR   R15,R15
         JE    AAB00483
*S309: mentalHealthVisit :=line;
         MVC   136(4,R12),76(R12)   LINE
*S310: line->PaymentIndicator :=14;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),68(R11)   14
*S311: grandfatheredTribalDone :=1;
         MVC   120(4,R12),20(R11)   1
         J     AAB00486
*S312: }
*S313: else if( j and line->fqhcRank=4 ) then {
AAB00483 L     R15,104(R12)   J
         LTR   R15,R15
         JE    AAB00484
         L     R2,76(R12)   LINE
         L     R3,1064(R2)   FQHCRANK
         CHI   R3,4
         JNE   AAB00484
*S314: line->PaymentIndicator :=13;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),72(R11)   13
*S315: j:=0;
         XC    104(4,R12),104(R12)   J
         J     AAB00485
*S316: }
*S317: else line->PaymentIndicator :=10;
AAB00484 L     R2,76(R12)   LINE
         MVC   204(4,R2),76(R11)   10
*S318: mentalHealthVisit:=line;
AAB00485 EQU   *
AAB00486 MVC   136(4,R12),76(R12)   LINE
AAB00487 EQU   *
AAB00488 EQU   *
AAB00489 EQU   *
AAB00490 EQU   *
AAB00491 EQU   *
AAB00492 LHI   R2,1
         A     R2,100(R12)   I
         ST    R2,100(R12)   I
         J     AAB00460
AAB00493 J     AAB00498
*S319: }
*S320: }
*S321: }
*S322: }
*S324: }
* NO FQHC VISITS EXIST AND CLAIM IS NOT BILL TYPE 770, APPLY CLAIM LEV
* Edit 88 - FQHC Payment Code Not Reported for FQHC Claim, V15.3
* V16.2, EFFECTIVE 2015-07-01, SUPPRESS EDIT 88 FOR DAYS WITH TELEHEAL
* V16.3, EFFECTIVE 2015-10-01, SUPPRESS EDIT 88 FOR DAYS WHERE ALL LIN
* V17.0, EFFECTIVE 2016-01-01, SUPPRESS EDIT 88 FOR DAYS WITH CHRONIC
*S330: else if( not (
*S331: base->FullBillType="770"
AAB00494 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,218(R11)   770
         ST    R14,64(R13)
         MVC   70(2,R13),104(R11)   3
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAB00497
         L     R15,108(R12)   TELEHEALTH
         LTR   R15,R15
         JE    AAB00495
         L     R3,1868(R9)   VERSION
         CHI   R3,59
         JH    AAB00497
AAB00495 L     R15,112(R12)   ONLYNONCOVEREDPRESENT
         LTR   R15,R15
         JE    AAB00496
         L     R2,1868(R9)   VERSION
         CHI   R2,60
         JH    AAB00497
AAB00496 L     R15,116(R12)   ISCHRONICCARE
         LTR   R15,R15
         JNE   AAB00497
*S332: or ( telehealth and 59 < base->Version )
*S333: or ( onlyNonCoveredPresent and 60 < base->Version )
*S334: or ( isChronicCare )
*S335: ) ) then {
*S336: do GAPC.SetEdit( Edit->FqhcVisitRequired, base->NoLine, base->N
         MVC   148(4,R12),80(R11)   88
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
*S337: }
* IDENTIFY FQHC ADDON CODES THAT NEED TO BE PAIRED WITH A PRIMARY CODE
* IF THE PRIMARY CODE IS A QUALIFYING VISIT AND ALREADY PAIRED WITH FQ
* REUSED currentVisit FOR line2
* Edit 84 - Primary Code Required For Addon Code
* V16.1, DEACTIVATED 2015-04-01 (59)
*S344: if( base->Version < 59 ) then {
AAB00497 EQU   *
AAB00498 L     R2,1868(R9)   VERSION
         CHI   R2,59
         JNL   AAB00508
*S345: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAB00499 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAB00507
*S346: if( line->flags->FqhcAddon ) then {
         L     R2,76(R12)   LINE
         TM    1096(R2),32   FQHCADDON
         JE    AAB00505
*S347: loop( currentVisit:=day->firstDaysItems; currentVisit; currentV
         L     R3,72(R12)   DAY
         MVC   84(4,R12),8(R3)   FIRSTDAYSITEMS
AAB00500 L     R15,84(R12)   CURRENTVISIT
         LTR   R15,R15
         JE    AAB00503
*S348: if( currentVisit->flags->FqhcPrimary
         L     R2,84(R12)   CURRENTVISIT
         TM    1096(R2),16   FQHCPRIMARY
         JE    AAB00501
         L     R3,84(R12)   CURRENTVISIT
         L     R4,84(R12)   CURRENTVISIT
         L     R5,1060(R3)   FQHCUNITSCONSUMED
         C     R5,468(R4)   SERVICEUNITS
         JNL   AAB00501
*S349: and currentVisit->fqhcUnitsConsumed < currentVisit->ServiceUnit
*S350: currentVisit->fqhcUnitsConsumed+=1;
         L     R2,84(R12)   CURRENTVISIT
         L     R3,84(R12)   CURRENTVISIT
         LHI   R4,1
         A     R4,1060(R3)   FQHCUNITSCONSUMED
         ST    R4,1060(R2)   FQHCUNITSCONSUMED
*S351: break;
         J     AAB00503
AAB00501 EQU   *
AAB00502 L     R2,84(R12)   CURRENTVISIT
         MVC   84(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00500
*S352: }
*S353: }
*S354: if( not currentVisit ) then {
AAB00503 L     R15,84(R12)   CURRENTVISIT
         LTR   R15,R15
         JNE   AAB00504
*S355: do GAPC.SetEdit( Edit->PrimaryCodeRequired, line, base->NoDxp,
         MVC   148(4,R12),84(R11)   84
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
AAB00504 EQU   *
AAB00505 EQU   *
AAB00506 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00499
*S356: }
*S357: }
*S358: }
*S359: }
* SET OUTPUT FLAGS FOR FQHC
*S362: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAB00507 EQU   *
AAB00508 L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAB00509 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAB00531
*S363: if( line->ActionFlag<>"5" ) then {
         L     R2,76(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,221(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),106(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAB00529
* FQHC VISIT AND TELEHEALTH
*S365: if( line=medicalVisit
         L     R4,76(R12)   LINE
         C     R4,132(R12)   MEDICALVISIT
         JE    AAB00510
         L     R5,76(R12)   LINE
         C     R5,136(R12)   MENTALHEALTHVISIT
         JE    AAB00510
         L     R2,76(R12)   LINE
         C     R2,140(R12)   ADDITIONALVISIT
         JE    AAB00510
         L     R2,76(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,237(R11)   Q3014
         ST    R14,64(R13)
         MVC   70(2,R13),110(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAB00510
         L     R2,76(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,242(R11)   G2025
         ST    R14,64(R13)
         MVC   70(2,R13),110(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAB00511
AAB00510 J     AAB00528
*S366: or line=mentalHealthVisit
*S367: or line=additionalVisit
*S368: or line->Hcpcs="Q3014"
*S369: or line->Hcpcs="G2025") then {
* DO NOTHING, PI AND CAF ALREADY SET FOR FQHC VISITS
* DO NOTHING, PI VALUE IS DEFAULT VALUE FOR TELEHEALTH (Q3014) ALWAYS
*S372: }
* V17.0, EFFECTIVE 2016-01-01, PI VALUE CHANGED VALUE FOR CCM (99490),
* V19.0, ADDED ADDITIONAL FQHC FLAG CHECK, ADDED VERSION GUARD TO PREV
*S375: else if(line->flags->FqhcChronicCare and base->Version > 61) th
AAB00511 L     R2,76(R12)   LINE
         TM    1096(R2),8   FQHCCHRONICCARE
         JE    AAB00512
         L     R3,1868(R9)   VERSION
         CHI   R3,61
         JNH   AAB00512
*S376: line->PaymentIndicator :=2;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),12(R11)   2
         J     AAB00527
*S377: }
* Edit 91 - Item Or Service Not Covered under FQHC PPS, V15.3
*S379: else if( line->Bits->FoundRevenue
AAB00512 L     R2,76(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAB00519
         L     R3,76(R12)   LINE
         TM    1096(R3),64   FQHCNONCOVERED
         JNE   AAB00515
         L     R4,76(R12)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,289
         JNH   AAB00513
         L     R6,76(R12)   LINE
         L     R7,464(R6)   REVENUECODE
         CHI   R7,300
         JL    AAB00515
AAB00513 L     R2,76(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,539
         JNH   AAB00514
         L     R4,76(R12)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,550
         JL    AAB00515
AAB00514 J     AAB00519
*S380: and ( line->flags->FqhcNonCovered
*S381: or ( 289<line->RevenueCode and line->RevenueCode<300 )
*S382: or ( 539<line->RevenueCode and line->RevenueCode<550 ) ) ) then
*S383: do GAPC.SetEdit( Edit->FqhcNonCoveredService, line, base->NoDxp
AAB00515 MVC   148(4,R12),88(R11)   91
         LA    R14,148(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    152(4,R12),152(R12)
         LA    R14,152(R12)
         ST    R14,80(R13)
         XC    156(4,R12),156(R12)
         LA    R14,156(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
*S384: line->StatusIndicator := ( 65 < base->Version )? "E1" : "E";
         L     R2,76(R12)   LINE
         L     R3,1868(R9)   VERSION
         CHI   R3,65
         JH    AAB00516
         LA    R14,247(R11)   E
         ST    R14,160(R12)   E
         MVC   164(2,R12),106(R11)   1
         MVC   166(2,R12),106(R11)   1
         XC    168(4,R12),168(R12)   E
         LA    R3,160(R12)   E
         J     AAB00517
AAB00516 LA    R14,248(R11)   E1
         ST    R14,172(R12)   E1
         MVC   176(2,R12),216(R11)   2
         MVC   178(2,R12),216(R11)   2
         XC    180(4,R12),180(R12)   E1
         LA    R3,172(R12)   E1
AAB00517 LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S385: line->PaymentIndicator := 3;
         L     R4,76(R12)   LINE
         MVC   204(4,R4),16(R11)   3
*V20.0 We unpackage only FQHC non-covered codes here.
*S387: if (line->flags->FqhcNonCovered) then {
         L     R5,76(R12)   LINE
         TM    1096(R5),64   FQHCNONCOVERED
         JE    AAB00518
*S388: line->PackagingFlag := 0;
         L     R6,76(R12)   LINE
         XC    540(4,R6),540(R6)   PACKAGINGFLAG
AAB00518 J     AAB00526
*S389: }
*S390: }
* FLU/VACCINES ARE IDENTIFIED, BUT NOT PAID
*S392: else if( line->flags->FqhcFluPpv ) then {
AAB00519 L     R2,76(R12)   LINE
         TM    1096(R2),128   FQHCFLUPPV
         JE    AAB00520
*S393: line->PaymentIndicator :=11;
         L     R3,76(R12)   LINE
         MVC   204(4,R3),52(R11)   11
         J     AAB00525
*S394: }
* PACKAGE ALL ELSE, SET PF=6 FOR PREVENTIVE SERVICES
*S396: else {
*S398: do GAPC.PackageCode( line );
AAB00520 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,92(R11)   GAPCC119
         BASR  R14,R15
*S399: line->PaymentIndicator :=12;
         L     R2,76(R12)   LINE
         MVC   204(4,R2),96(R11)   12
* V17.0, IF AWE PAIRED WITH ADVANCED CARE PLANNING, SET PKG FLAG TO 6
*S402: if( line->flags->FqhcPreventive
         L     R3,76(R12)   LINE
         TM    1095(R3),1   FQHCPREVENTIVE
         JNE   AAB00522
         L     R4,76(R12)   LINE
         TM    1090(R4),16   DEDUCTIBLECOINSNA
         JNE   AAB00522
         L     R15,128(R12)   ADVANCEDCAREPLANNINGCOMPONENT
         LTR   R15,R15
         JE    AAB00521
         L     R2,76(R12)   LINE
         TM    1097(R2),32   ADVANCEDCAREPLANNING
         JE    AAB00521
         L     R15,132(R12)   MEDICALVISIT
         LTR   R15,R15
         JE    AAB00521
         L     R2,132(R12)   MEDICALVISIT
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,250(R11)   G0468
         ST    R14,64(R13)
         MVC   70(2,R13),110(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAB00522
AAB00521 J     AAB00523
*S403: or line->flags->DeductibleCoinsNa
*S404: or ( advancedCarePlanningComponent
*S405: and line->flags->AdvancedCarePlanning
*S406: and medicalVisit
*S407: and medicalVisit->Hcpcs="G0468"
*S408: ) ) then {
*S409: line->PackagingFlag:=6;
AAB00522 L     R2,76(R12)   LINE
         MVC   540(4,R2),32(R11)   6
         J     AAB00524
*S410: }
*S411: else line->PackagingFlag:=5;
AAB00523 L     R2,76(R12)   LINE
         MVC   540(4,R2),28(R11)   5
AAB00524 EQU   *
AAB00525 EQU   *
AAB00526 EQU   *
AAB00527 EQU   *
AAB00528 EQU   *
AAB00529 EQU   *
AAB00530 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00509
AAB00531 EQU   *
AAB00532 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAB00408
AAB00533 EQU   *
AAB00534 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,100(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC006
**************************
GAPCC006 CSECT
GAPCC006 AMODE ANY
GAPCC006 RMODE ANY
*XREF - GAPCC006 GAPC.RHCModifierEdits
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (24 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Integer len 4 (rc)
*        0076(R12)-> Unknown ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00603
         DC    A(DMNSCPY) @00000
         DC    A(DMNSEL) @00004
         DC    F'5' @00008
         DC    A(DMNSCPYX) @00012
         DC    A(DMNSCMP) @00016
         DC    F'104' @00020
         DC    A(GAPCC091) @00024
         DC    H'4'  0 4 @00028
         DC    H'1'  0 1 @00030
         DC    H'5'  0 5 @00032
         DC    H'7'  0 7 @00034
AAB00603 XC    64(24,R12),64(R12)
* Edit 104 V19.1
* For Opps claims V19.1 on, perform modifier edit processing.
*S425: if (not claim->Bits->Nopps
         TM    3004(R9),1   NOPPS
         JNE   AAB00621
         L     R2,1868(R9)   VERSION
         CHI   R2,71
         JL    AAB00621
*S426: and base->Version >= 71) then {
*S427: loop(day:=base->firstVisit; day; day:=day->nextVisit){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAB00606 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAB00620
*S428: loop(line:=day->firstDaysItems; line; line:=line->nextSameDay){
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAB00607 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAB00618
*S429: reset rc;
         XC    72(4,R12),72(R12)
* If the HCPCS map flag is set, the HCPCS code has CG mod, and the cod
* Note: We check the modifier before the loop to prevent going through
*S432: if (line->Bits->HasCGModifier and line->flags->RhcModifierConfl
         L     R2,68(R12)   LINE
         TM    1078(R2),64   HASCGMODIFIER
         JE    AAB00616
         L     R3,68(R12)   LINE
         TM    1096(R3),4   RHCMODIFIERCONFLICT
         JE    AAB00616
*S433: loop(rc:=select MapConflictRHCTbl using byHCPCS(line->Hcpcs); r
         MVC   60(2,R13),28(R11)   4
         MVC   62(2,R13),30(R11)   1
         LR    R14,R9
         AHI   R14,4184   MAPCONFLICTRHCTBL
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),32(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAB00608
         L     R5,64(R13)
         AHI   R13,80
         LR    R14,R9
         AHI   R14,4192   MAPCONFLICTRHCTBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LR    R14,R9
         AHI   R14,4204   MAPCONFLICTRHCTBL
         ST    R14,60(R13)
         LA    R14,5(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         LR    R1,R9
         AHI   R1,4216
         MVC   0(2,R1),10(R5)
AAB00608 ST    R4,72(R12)   RC
AAB00609 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAB00615
*S434: if(line->Hcpcs=MapConflictRHCTbl->HCPCS
         L     R3,68(R12)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LR    R14,R9
         AHI   R14,4192   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAB00612
         L     R5,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4216
         TM    0(R1),128   LOVERSION
         JE    AAB00610
         LHI   R14,-1
AAB00610 LR    R1,R9
         AHI   R1,4216
         IC    R14,0(R1)   LOVERSION
         CR    R5,R14
         JL    AAB00612
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4217
         TM    0(R1),128   HIVERSION
         JE    AAB00611
         LHI   R14,-1
AAB00611 LR    R1,R9
         AHI   R1,4217
         IC    R14,0(R1)   HIVERSION
         CR    R2,R14
         JH    AAB00612
*S435: and base->Version >= MapConflictRHCTbl->LoVersion
*S436: and base->Version <= MapConflictRHCTbl->HiVersion) then {
*S437: do GAPC.SetEdit(Edit->RHCServiceNotEligibleIncRate, line, base-
         MVC   76(4,R12),20(R11)   104
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,64(R12)   DAY
         ST    R14,76(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,80(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,84(R13)
         L     R15,24(R11)   GAPCC091
         BASR  R14,R15
AAB00612 EQU   *
AAB00613 MVC   60(2,R13),34(R11)   7
         LR    R14,R9
         AHI   R14,4184   MAPCONFLICTRHCTBL
         ST    R14,64(R13)
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAB00614
         L     R3,64(R13)
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4192   MAPCONFLICTRHCTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4204   MAPCONFLICTRHCTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         LR    R1,R9
         AHI   R1,4216
         MVC   0(2,R1),10(R3)
AAB00614 ST    R2,72(R12)   RC
         J     AAB00609
AAB00615 EQU   *
AAB00616 EQU   *
AAB00617 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAB00607
AAB00618 EQU   *
AAB00619 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAB00606
AAB00620 EQU   *
AAB00621 EQU   *
AAB00622 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC007
**************************
GAPCC007 CSECT
GAPCC007 AMODE ANY
GAPCC007 RMODE ANY
*XREF - GAPCC007 GAPC.FQHCPaymentMethodFlagOverride
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAB00703
         DC    A(DMNATFD) @00000
         DC    F'115348320' @00004
         DC    A(DMNSCPY) @00008
         DC    H'10'  0 10 @00012
         DC    H'1120'  4 96 @00014
         DC    H'1'  0 1 @00016
         DC    CL1'C' @00018
AAB00703 XC    64(4,R12),64(R12)
* V21.2. Added to add PMF C to HCPCS lines where a CS modifier is pres
*S448: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAB00706 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAB00710
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),12(R11)   10
         MVC   66(2,R13),14(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAB00710
* For the CS modifier, this is only valid for 03/18/2020 (inclusive) a
*S450: if line->ServiceDate >= 3/18/2020d
         L     R2,64(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,4(R11)   115348320
         JL    AAB00707
         L     R4,64(R12)   LINE
         TM    1078(R4),32   HASCSMODIFIER
         JE    AAB00707
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAB00707
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAB00707
         L     R2,64(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JNE   AAB00707
*S451: and line->Bits->HasCSModifier
*S452: and not (line->Bits->IgnoreLine
*S453: or line->Bits->IgnoreInpat
*S454: or line->Bits->BlankHcpcs) then {
*S455: line->PayMethFlag := "C";
         L     R2,64(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
AAB00707 EQU   *
AAB00708 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAB00709
         L     R2,8(R2)
AAB00709 ST    R2,4(R9)   ITEM
         J     AAB00706
AAB00710 EQU   *
AAB00711 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:36 2020
*^ IDENTS - GAPCC AAC
**************************
*    GAPCC008
**************************
GAPCC008 CSECT
GAPCC008 AMODE ANY
GAPCC008 RMODE ANY
*XREF - GAPCC008 GAPC.CheckLines
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00103
         DC    F'2' @00000
         DC    F'12' @00004
         DC    A(V40LJMP) @00008
* Return Claim Flag 2 if no line items appear on claim
*S6: if( base->NumLines<1 ) then {
AAC00103 L     R2,1892(R9)   NUMLINES
         CHI   R2,1
         JNL   AAC00106
*S7: base->OutClm_ClaimFlag:=2;/*v1.1 retro*/
         MVC   1884(4,R9),0(R11)   2
*S12: { return_code:=Error->RC_NoLineItems ; goto exit_now; };
         MVC   3016(4,R9),4(R11)   12
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   V40LJMP
         BASR  R14,R15
AAC00106 EQU   *
AAC00107 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC009
**************************
GAPCC009 CSECT
GAPCC009 AMODE ANY
GAPCC009 RMODE ANY
*XREF - GAPCC009 GAPC.CheckDates
*  R11 + 0000 Literals        (56 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (16 bytes)
*        0064(R12)-> Integer len 4 (rc)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00203
         DC    F'2' @00000
         DC    F'23' @00004
         DC    F'1' @00008
         DC    A(GAPCC091) @00012
         DC    F'3' @00016
         DC    A(DMNLONG) @00020
         DC    A(DMNBTWNX) @00024
         DC    A(DMNSEL) @00028
         DC    F'8' @00032
         DC    A(DMNSCPYX) @00036
         DC    A(DMNSCPY) @00040
         DC    F'24' @00044
         DC    H'5'  0 5 @00048
         DC    H'1'  0 1 @00050
         DC    H'7'  0 7 @00052
AAC00203 XC    64(16,R12),64(R12)
* Check from/through dates; use from date to determine version. Exit i
* Edits 23, 24
* Edit 23 - Invalid Date
*S22: if( base->FromDate<2 ) then {
         L     R2,96(R9)   FROMDATE
         CL    R2,0(R11)   2
         JNL   AAC00206
*S23: do GAPC.SetEdit( Edit->InvalidDate, base->NoLine, base->NoDxp, b
         MVC   68(4,R12),4(R11)   23
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   72(4,R12),8(R11)   1
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S24: }
*S25: if( base->ThruDate<2 ) then {
AAC00206 L     R2,104(R9)   THRUDATE
         CL    R2,0(R11)   2
         JNL   AAC00207
*S26: do GAPC.SetEdit( Edit->InvalidDate, base->NoLine, base->NoDxp, b
         MVC   68(4,R12),4(R11)   23
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   72(4,R12),0(R11)   2
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S27: }
*S28: if( base->ThruDate < base->FromDate ) then {
AAC00207 L     R2,104(R9)   THRUDATE
         CL    R2,96(R9)   FROMDATE
         JNL   AAC00208
*S29: do GAPC.SetEdit( Edit->InvalidDate, base->NoLine, base->NoDxp, b
         MVC   68(4,R12),4(R11)   23
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   72(4,R12),16(R11)   3
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S30: }
*S32: base->DaySpan:=DateBetween(base->FromDate,base->ThruDate ,2)+1;
AAC00208 XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,20(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,20(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),0(R11)   2
         L     R15,24(R11)   DMNBTWNX
         BASR  R14,R15
         L     R2,60(R13)
         AHI   R2,1
         ST    R2,1936(R9)   DAYSPAN
*S33: loop( rc:=select first VersionRangeTbl using byDate; rc<1; rc:=s
         MVC   60(2,R13),48(R11)   5
         MVC   62(2,R13),50(R11)   1
         LA    R14,4004(R9)   VERSIONRANGETBL
         ST    R14,64(R13)
         L     R15,28(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JH    AAC00209
         L     R4,64(R13)
         MVC   4012(1,R9),0(R4)
         MVC   4016(8,R9),1(R4)
         AHI   R13,72
         LA    R14,4024(R9)   VERSIONRANGETBL
         ST    R14,60(R13)
         LA    R14,9(R4)
         ST    R14,64(R13)
         MVC   68(4,R13),32(R11)   8
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
AAC00209 ST    R3,64(R12)   RC
AAC00210 L     R2,64(R12)   RC
         CHI   R2,1
         JNL   AAC00215
*S34: if( base->FromDate >= VersionRangeTbl->DateStarted
         L     R3,96(R9)   FROMDATE
         CL    R3,4016(R9)   DATESTARTED
         JL    AAC00212
         L     R4,96(R9)   FROMDATE
         CL    R4,4020(R9)   DATEENDED
         JH    AAC00212
*S35: and base->FromDate <= VersionRangeTbl->DateEnded ) then {
*S36: base->Version :=VersionRangeTbl->Version;
         XR    R2,R2
         TM    4012(R9),128   VERSION
         JE    AAC00211
         LHI   R2,-1
AAC00211 IC    R2,4012(R9)   VERSION
         ST    R2,1868(R9)   VERSION
*S37: base->VersionId :=VersionRangeTbl->VersionId;
         LA    R14,1856(R9)   VERSIONID
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4024(R9)   VERSIONID
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,40(R11)   DMNSCPY
         BASR  R14,R15
*S38: return;
         J     AAC00216
AAC00212 EQU   *
AAC00213 MVC   60(2,R13),52(R11)   7
         LA    R14,4004(R9)   VERSIONRANGETBL
         ST    R14,64(R13)
         L     R15,28(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC00214
         L     R3,64(R13)
         MVC   4012(1,R9),0(R3)
         MVC   4016(8,R9),1(R3)
         AHI   R13,72
         LA    R14,4024(R9)   VERSIONRANGETBL
         ST    R14,60(R13)
         LA    R14,9(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),32(R11)   8
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
AAC00214 ST    R2,64(R12)   RC
         J     AAC00210
*S39: }
*S40: }
* Edit 24 - Date Out of Range
*S43: do GAPC.SetEdit( Edit->DateOutOfRange, base->NoLine, base->NoDxp
AAC00215 MVC   68(4,R12),44(R11)   24
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAC00216 EQU   *
AAC00217 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC010
**************************
GAPCC010 CSECT
GAPCC010 AMODE ANY
GAPCC010 RMODE ANY
*XREF - GAPCC010 GAPC.CheckValueCodes
*  R11 + 0000 Literals        (64 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (24 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 (CPF_4)
*        0080(R12)-> String ()
*        0092(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00303
         DC    F'4' @00000
         DC    A(DMNSLOG) @00004
         DC    A(DMNSCMP) @00008
         DC    A(DMNSTBL) @00012
         DC    A(DMNSLEN) @00016
         DC    F'28' @00020
         DC    A(V40LJMP) @00024
         DC    F'1' @00028
         DC    A(DMNSUBS) @00032
         DC    A(GAPCC127) @00036
         DC    F'5' @00040
         DC    F'2' @00044
         DC    F'7' @00048
         DC    A(DMNFREE) @00052
         DC    H'2'  0 2 @00056
         DC    H'1'  0 1 @00058
         DC    CL2'  ' @00060
AAC00303 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(16,R12),72(R12)
         ST    R2,88(R12)
         XC    92(4,R12),92(R12)
* V20.0 Value code processing.
*S53: CPF_4 := 4;
         MVC   76(4,R12),0(R11)   4
*S54: loop(i:=0; i<24 + 12; i+=1){
         XC    72(4,R12),72(R12)   I
AAC00306 L     R2,72(R12)   I
         CHI   R2,36
         JNL   AAC00316
*S55: if(base->ValueCodes[i]->value and base->ValueCodes[i]->value<>"
         LA    R3,980(R9)   VALUECODES
         L     R4,72(R12)   I
         MHI   R4,24
         AR    R3,R4
         ST    R3,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,4(R11)   DMNSLOG
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAC00314
         LA    R6,980(R9)   VALUECODES
         L     R7,72(R12)   I
         MHI   R7,24
         AR    R6,R7
         ST    R6,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JE    AAC00314
*S56: switch (base->ValueCodes[i]->value) {
         LA    R2,980(R9)   VALUECODES
         L     R3,72(R12)   I
         MHI   R3,24
         AR    R2,R3
         ST    R2,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),58(R11)   1
         MVC   68(2,R13),56(R11)   2
         MVC   70(2,R13),56(R11)   2
         L     R15,12(R11)   DMNSTBL
         BASR  R14,R15
         J     AAC00307
         DC    CL2'QA'
         J     AAC00312
*S57: case "QA":
* V20.2 QA logic is only valid for July 2019 on.
*S59: if (base->Version >= 76) then {
AAC00307 L     R2,1868(R9)   VERSION
         CHI   R2,76
         JL    AAC00311
* If we have an incorrectly padded value code amount, exit.
*S61: if (not(StrLength(base->ValueCodes[i]->amount) = 9)) then {
         AHI   R13,80
         LA    R3,980(R9)   VALUECODES
         L     R4,72(R12)   I
         MHI   R4,24
         AR    R3,R4
         LA    R14,12(R3)   AMOUNT
         ST    R14,60(R13)
         L     R15,16(R11)   DMNSLEN
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-80
         CHI   R5,9
         JE    AAC00308
*S62: base->OutClm_ClaimFlag := CPF_4;
         L     R6,76(R12)   CPF_4
         ST    R6,1884(R9)   OUTCLM_CLAIMFLAG
*S63: { return_code:=Error->RC_InvalidValueCodeInput; goto exit_now; }
         MVC   3016(4,R9),20(R11)   28
         AHI   R13,80
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,24(R11)   V40LJMP
         BASR  R14,R15
         AHI   R13,-80
*S64: }
*S65: claim->HasQAValueCode := 1;
AAC00308 MVC   2980(4,R9),28(R11)   1
*S66: claim->QADays := do GAPC.stringToIntConversion(StrPartial(base->
         AHI   R13,80
         LA    R14,2984(R9)   QADAYS
         ST    R14,60(R13)
         LA    R2,980(R9)   VALUECODES
         L     R3,72(R12)   I
         MHI   R3,24
         AR    R2,R3
         AHI   R13,72
         LA    R14,80(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R2)   AMOUNT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),0(R11)   4
         MVC   76(4,R13),28(R11)   1
         L     R15,32(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,80(R12)
         ST    R14,64(R13)
         MVC   92(4,R12),20(R11)   28
         LA    R14,92(R12)
         ST    R14,68(R13)
         LA    R14,76(R12)   CPF_4
         ST    R14,72(R13)
         L     R15,36(R11)   GAPCC127
         BASR  R14,R15
         AHI   R13,-80
*S67: claim->QAHours := do GAPC.stringToIntConversion(StrPartial(base-
         AHI   R13,80
         LA    R14,2988(R9)   QAHOURS
         ST    R14,60(R13)
         LA    R4,980(R9)   VALUECODES
         L     R5,72(R12)   I
         MHI   R5,24
         AR    R4,R5
         AHI   R13,72
         LA    R14,80(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R4)   AMOUNT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),40(R11)   5
         MVC   76(4,R13),44(R11)   2
         L     R15,32(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,80(R12)
         ST    R14,64(R13)
         MVC   92(4,R12),20(R11)   28
         LA    R14,92(R12)
         ST    R14,68(R13)
         LA    R14,76(R12)   CPF_4
         ST    R14,72(R13)
         L     R15,36(R11)   GAPCC127
         BASR  R14,R15
         AHI   R13,-80
*S68: claim->QAPartialHours := do GAPC.stringToIntConversion(StrPartia
         AHI   R13,80
         LA    R14,2992(R9)   QAPARTIALHOURS
         ST    R14,60(R13)
         LA    R6,980(R9)   VALUECODES
         L     R7,72(R12)   I
         MHI   R7,24
         AR    R6,R7
         AHI   R13,72
         LA    R14,80(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R6)   AMOUNT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),48(R11)   7
         MVC   76(4,R13),44(R11)   2
         L     R15,32(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,80(R12)
         ST    R14,64(R13)
         MVC   92(4,R12),20(R11)   28
         LA    R14,92(R12)
         ST    R14,68(R13)
         LA    R14,76(R12)   CPF_4
         ST    R14,72(R13)
         L     R15,36(R11)   GAPCC127
         BASR  R14,R15
         AHI   R13,-80
* If we've made it this far but have a day value of 7,8,9 we need to r
*S70: if (claim->QADays >= 7 or claim->QADays = 0) then {
         L     R8,2984(R9)   QADAYS
         CHI   R8,7
         JNL   AAC00309
         L     R2,2984(R9)   QADAYS
         LTR   R2,R2
         JNE   AAC00310
*S71: claim->HasQAValueCode := 0;
AAC00309 XC    2980(4,R9),2980(R9)   HASQAVALUECODE
*S72: claim->QADays := 0;
         XC    2984(4,R9),2984(R9)   QADAYS
*S73: claim->QAHours := 0;
         XC    2988(4,R9),2988(R9)   QAHOURS
*S74: claim->QAPartialHours := 0;
         XC    2992(4,R9),2992(R9)   QAPARTIALHOURS
*S75: }
*S76: }
*S77: break;
AAC00310 EQU   *
AAC00311 J     AAC00313
*S78: default:
*S79: break;
AAC00312 EQU   *
AAC00313 EQU   *
AAC00314 EQU   *
AAC00315 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAC00306
AAC00316 EQU   *
AAC00317 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,52(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC011
**************************
GAPCC011 CSECT
GAPCC011 AMODE ANY
GAPCC011 RMODE ANY
*XREF - GAPCC011 GAPC.CheckConditionCodes
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> Integer len 4 (i)
*        0068(R12)-> Integer len 4 (len)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00403
         DC    A(DMNSCMP) @00000
         DC    A(DMNSLEN) @00004
         DC    A(DMNSTBL) @00008
         DC    F'10' @00012
         DC    A(GAPCC091) @00016
         DC    H'2'  0 2 @00020
         DC    H'16'  0 16 @00022
         DC    CL2'  ' @00024
AAC00403 XC    64(20,R12),64(R12)
*message "QADays[%i] =  '%i'", i, claim->QADays;
*message "QAHours[%i] =  '%i'", i, claim->QAHours;
*message "QAPartialHours[%i] =  '%i'", i, claim->QAPartialHours;
*message "ValueCode[%i] = '%s' '%i'", i, base->ValueCodes[i]->value, b
* Set condition code bits in claim workspace
* Edits 10
*S122: while( i<base->NumCc and base->CcCodes[i]<>"  " ){
AAC00406 L     R2,64(R12)   I
         C     R2,1900(R9)   NUMCC
         JNL   AAC00426
         LA    R3,140(R9)   CCCODES
         L     R4,64(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAC00426
*S123: /*v6.2 added this to be consistent with existing public domain
*S124: /*first blank will signal end of processing list for CCs*/
*S125: /*v11.0 this never did as commented above, effectively it does
*S126:    * since varcompute is not loading CCs if len=0, leaving it a
*S127: len:=StrLength( base->CcCodes[i] );
         LA    R2,140(R9)   CCCODES
         L     R3,64(R12)   I
         MHI   R3,12
         AR    R2,R3
         ST    R2,60(R13)
         L     R15,4(R11)   DMNSLEN
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,68(R12)   LEN
*S128: if( len=0 ) then break;
         LTR   R4,R4
         JNE   AAC00407
         J     AAC00426
*S129: if( len=2 ) then {
AAC00407 L     R2,68(R12)   LEN
         CHI   R2,2
         JNE   AAC00425
*S130: switch( base->CcCodes[i] ){
         LA    R3,140(R9)   CCCODES
         L     R4,64(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),22(R11)   16
         MVC   68(2,R13),20(R11)   2
         MVC   70(2,R13),20(R11)   2
         L     R15,8(R11)   DMNSTBL
         BASR  R14,R15
         J     AAC00408
         DC    CL2'07'
         J     AAC00409
         DC    CL2'20'
         J     AAC00410
         DC    CL2'21'
         J     AAC00411
         DC    CL2'41'
         J     AAC00412
         DC    CL2'45'
         J     AAC00413
         DC    CL2'49'
         J     AAC00414
         DC    CL2'50'
         J     AAC00415
         DC    CL2'53'
         J     AAC00416
         DC    CL2'65'
         J     AAC00417
         DC    CL2'66'
         J     AAC00418
         DC    CL2'G0'
         J     AAC00419
         DC    CL2'MA'
         J     AAC00420
         DC    CL2'MG'
         J     AAC00421
         DC    CL2'MW'
         J     AAC00422
         DC    CL2'MY'
         J     AAC00423
         DC    CL2'W2'
         J     AAC00424
*S131: case "07":
*S132: claim->Bits->HasCc07:=1;
AAC00408 OI    3000(R9),128   HASCC07
*S133: break;
         J     AAC00424
*S135: case "20":
*S136: claim->Bits->HasCc20:=1;
AAC00409 OI    3000(R9),64   HASCC20
*S137: break;
         J     AAC00424
*S141: case "21":
*Edit 10
*S143: do GAPC.SetEdit( Edit->NCserviceVerify, base->NoLine, base->NoD
AAC00410 AHI   R13,80
         MVC   72(4,R12),12(R11)   10
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
         AHI   R13,-80
*S145: case "41":
*S146: claim->Bits->HasCc41:=1;
AAC00411 OI    3000(R9),32   HASCC41
*S147: break;
         J     AAC00424
*S149: case "45":
*S150: claim->Bits->HasCc45:=1;
AAC00412 OI    3000(R9),16   HASCC45
*S151: break;
         J     AAC00424
*S153: case "49":
*S154: claim->Bits->HasCc49:=1;
AAC00413 OI    3000(R9),8   HASCC49
*S155: break;
         J     AAC00424
*S157: case "50":
*S158: claim->Bits->HasCc50:=1;
AAC00414 OI    3000(R9),4   HASCC50
*S159: break;
         J     AAC00424
*S161: case "53":
*S162: claim->Bits->HasCc53:=1;
AAC00415 OI    3000(R9),2   HASCC53
*S163: break;
         J     AAC00424
*S165: case "65":
*S166: claim->Bits->HasCc65:=1;/*V15.3, FQHC*/
AAC00416 OI    3000(R9),1   HASCC65
*S167: break;
         J     AAC00424
*S169: case "66":
*S170: claim->Bits->HasCc66:=1;
AAC00417 OI    3001(R9),8   HASCC66
*S171: break;
         J     AAC00424
*S173: case "G0":
*S174: claim->Bits->HasCcG0:=1;
AAC00418 OI    3001(R9),128   HASCCG0
*S175: break;
         J     AAC00424
*S177: case "MA":
*S178: claim->Bits->HasCcMA:=1;
AAC00419 OI    3001(R9),64   HASCCMA
*S179: break;
         J     AAC00424
*S181: case "MG":
*S182: claim->Bits->HasCcMG:=1;
AAC00420 OI    3001(R9),32   HASCCMG
*S183: break;
         J     AAC00424
*S189: case "MW":
*S190: claim->Bits->HasCcMW:=1;
AAC00421 OI    3001(R9),2   HASCCMW
*S191: break;
         J     AAC00424
*S193: case "MY":
*S194: claim->Bits->HasCcMY:=1;
AAC00422 OI    3001(R9),4   HASCCMY
*S195: break;
         J     AAC00424
*S197: case "W2":
*S198: claim->Bits->HasCcW2:=1;
AAC00423 OI    3001(R9),16   HASCCW2
*S199: break;
*S200: }
*S201: }
*S202: i+=1;
AAC00424 EQU   *
AAC00425 LHI   R2,1
         A     R2,64(R12)   I
         ST    R2,64(R12)   I
         J     AAC00406
AAC00426 EQU   *
AAC00427 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC012
**************************
GAPCC012 CSECT
GAPCC012 AMODE ANY
GAPCC012 RMODE ANY
*XREF - GAPCC012 GAPC.E46
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> Unknown ()
*        0064(R12)-> Integer len 4 ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00503
         DC    F'46' @00000
         DC    A(GAPCC091) @00004
AAC00503 XC    64(12,R12),64(R12)
* Edit 46 - Type Of Bill 12x or 14x with CC 41 (PBT is 1) - v2.0 onwar
* V6.1 Added other bill types later, 43x
* V6.1 changed criteria to look at if (control.billtype and HasCc41) i
*... to possibility of some bill types not wanting to exit, keeping ef
*S213: if( base->control->BillType
         TM    1969(R9),8   BILLTYPE
         JE    AAC00506
         TM    3000(R9),32   HASCC41
         JE    AAC00506
*S214: and claim->Bits->HasCc41 ) then {/*v3.1 */
*S215: do GAPC.SetEdit( Edit->Cc41NaTOB, base->NoLine, base->NoDxp, ba
         MVC   64(4,R12),0(R11)   46
         LA    R14,64(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    68(4,R12),68(R12)
         LA    R14,68(R12)
         ST    R14,80(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAC00506 EQU   *
AAC00507 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC013
**************************
GAPCC013 CSECT
GAPCC013 AMODE ANY
GAPCC013 RMODE ANY
*XREF - GAPCC013 GAPC.CheckLineDates
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (valid)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00603
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    F'23' @00008
         DC    F'4' @00012
         DC    A(GAPCC091) @00016
         DC    H'2'  0 2 @00020
         DC    H'10'  0 10 @00022
         DC    H'1120'  4 96 @00024
         DC    CL2'77' @00026
AAC00603 XC    64(20,R12),64(R12)
* Check line item dates
* Edits 23
*S226: valid := ( base->control->LineItemDate or ( 56 < base->Version
         TM    1968(R9),64   LINEITEMDATE
         JNE   AAC00607
         L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAC00606
         TM    3000(R9),1   HASCC65
         JNE   AAC00606
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC00607
AAC00606 XR    R2,R2
         J     AAC00608
AAC00607 LHI   R2,1
AAC00608 ST    R2,68(R12)   VALID
*S227: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC00609 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC00616
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),22(R11)   10
         MVC   66(2,R13),24(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC00616
*S228: if( line->ServiceDate < base->FromDate
         L     R2,64(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,96(R9)   FROMDATE
         JL    AAC00610
         L     R4,64(R12)   LINE
         L     R5,104(R9)   THRUDATE
         CL    R5,60(R4)   SERVICEDATE
         JNL   AAC00613
*S229: or base->ThruDate < line->ServiceDate ) then {
*S230: /*v8.0** Moved ignore test to here because we could have been l
*S231:    ignored lines having dates outside the day array and we now
*S232:    day index to ignored lines in makedayarray() for any day log
*S233:    of ignored lines, e.g., ConditionalAPCs() - v8.0
*S234:    All lines should then now be accounted for in the day array
*S235:    If we want the edit and it is not ignored, the edit is raise
*S236:    exit upon return and we don't worry about it in that situati
*S237: /*Added FQHC*/
*S238: if( valid and not line->Bits->IgnoreLine ) then {
AAC00610 L     R15,68(R12)   VALID
         LTR   R15,R15
         JE    AAC00611
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC00611
* Edit 23 - line item date invalid
*S240: do GAPC.SetEdit( Edit->InvalidDate, line, base->NoDxp, base->No
         MVC   72(4,R12),8(R11)   23
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   76(4,R12),12(R11)   4
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
         J     AAC00612
*S241: }
*S242: else line->ServiceDate:=base->LowestDate;
AAC00611 L     R2,64(R12)   LINE
         L     R3,108(R9)   LOWESTDATE
         ST    R3,60(R2)   SERVICEDATE
AAC00612 EQU   *
AAC00613 EQU   *
AAC00614 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC00615
         L     R2,8(R2)
AAC00615 ST    R2,4(R9)   ITEM
         J     AAC00609
AAC00616 EQU   *
AAC00617 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC014
**************************
GAPCC014 CSECT
GAPCC014 AMODE ANY
GAPCC014 RMODE ANY
*XREF - GAPCC014 GAPC.CheckIncidental
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (suppressed)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00703
         DC    A(DMNATFD) @00000
         DC    A(DMNSCMP) @00004
         DC    F'1' @00008
         DC    F'27' @00012
         DC    A(GAPCC091) @00016
         DC    H'10'  0 10 @00020
         DC    H'1120'  4 96 @00022
         DC    H'1'  0 1 @00024
         DC    CL1'N' @00026
         DC    CL1'0' @00027
AAC00703 XC    64(20,R12),64(R12)
*S252: if(claim->Bits->HadValidProc
         TM    3002(R9),32   HADVALIDPROC
         JE    AAC00713
         TM    3004(R9),128   HASDENREJ
         JNE   AAC00713
         TM    3006(R9),4   HASEDIT35
         JNE   AAC00713
*S253: and not claim->Bits->HasDenRej
*S254: and not claim->Bits->HasEdit35) then {
*V21.2 Moved edit 35 before edit 27 in processing. We want to RTP clai
*S256: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC00706 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC00711
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),20(R11)   10
         MVC   66(2,R13),22(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC00711
*S257: if(line->StatusIndicator<>"N"
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC00707
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,27(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAC00708
*S258: or line->ActionFlag<>"0"
*S262: ) then {
*S263: suppressed:=1;
AAC00707 MVC   68(4,R12),8(R11)   1
*S264: break;
         J     AAC00711
AAC00708 EQU   *
AAC00709 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC00710
         L     R2,8(R2)
AAC00710 ST    R2,4(R9)   ITEM
         J     AAC00706
*S265: }
*S266: }
*S268: if(not suppressed) then {
AAC00711 L     R15,68(R12)   SUPPRESSED
         LTR   R15,R15
         JNE   AAC00712
*S269: do GAPC.SetEdit( Edit->OnlyIncidental, base->NoLine, base->NoDx
         MVC   72(4,R12),12(R11)   27
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
AAC00712 EQU   *
AAC00713 EQU   *
AAC00714 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC015
**************************
GAPCC015 CSECT
GAPCC015 AMODE ANY
GAPCC015 RMODE ANY
*XREF - GAPCC015 GAPC.CheckComprehensiveApc
*  R11 + 0000 Literals        (100 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (28 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> Integer len 4 (rc)
*        0084(R12)-> Unknown ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00803
         DC    A(GAPCC119) @00000
         DC    A(DMNATFD) @00004
         DC    A(DMNSCMP) @00008
         DC    A(DMNSCPY) @00012
         DC    A(DMNSEL) @00016
         DC    F'5' @00020
         DC    A(DMNSCPYX) @00024
         DC    A(GAPCC123) @00028
         DC    F'11' @00032
         DC    F'1' @00036
         DC    F'0' @00040
         DC    A(DMNSUBS) @00044
         DC    A(GAPCC116) @00048
         DC    A(DMNFREE) @00052
         DC    H'10'  0 10 @00056
         DC    H'1120'  4 96 @00058
         DC    H'1'  0 1 @00060
         DC    H'4'  0 4 @00062
         DC    H'5'  0 5 @00064
         DC    H'7'  0 7 @00066
         DC    H'9'  0 9 @00068
         DC    H'2'  0 2 @00070
         DC    CL1'T' @00072
         DC    CL9'000000001' @00073
         DC    CL1'Q' @00082
         DC    CL1'B' @00083
         DC    CL1'E' @00084
         DC    CL2'E1' @00085
         DC    CL2'E2' @00087
         DC    CL1'F' @00089
         DC    CL1'G' @00090
         DC    CL1'H' @00091
         DC    CL1'L' @00092
         DC    CL1'M' @00093
         DC    CL1'N' @00094
         DC    CL1'U' @00095
         DC    CL1'C' @00096
         DC    CL2'00' @00097
AAC00803 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(24,R12),72(R12)
         ST    R2,96(R12)
* V16.1 ADDED CODE TO SUPRESS CAPC IF INPATIENT SUCCESSFUL CHECK, PACK
* V17.0, DEACTIVATED 2016-01-01, NEW INPATIENT COMPREHENSIVE APC IMPLE
*S283: if( base->Version < 62
         L     R2,1868(R9)   VERSION
         CHI   R2,62
         JNL   AAC00813
         TM    3005(R9),1   INPAPCSET
         JE    AAC00813
*S284: and claim->Bits->InpApcSet ) then {
*S285: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAC00806 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAC00812
*S286: if( not day->Bits->InpApcSet ) then {
         L     R2,72(R12)   DAY
         TM    626(R2),64   INPAPCSET
         JNE   AAC00810
*S287: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAC00807 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC00809
*S288: do GAPC.PackageCode( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,0(R11)   GAPCC119
         BASR  R14,R15
AAC00808 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC00807
AAC00809 EQU   *
AAC00810 EQU   *
AAC00811 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAC00806
AAC00812 J     AAC00856
*S289: }
*S290: }
*S291: }
*S292: }
* 2. RUN IF A PRIMARY COMPREHENSIVE SERVICE EXISTS.
*S294: else if( claim->PrimaryComprehensive ) then {
AAC00813 L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAC00855
* MUST RECHECK FOR T PROCEDURES THAT WERE CHANGED AFTER INITIAL CRITER
* FOR CAPC OBSERVATION J2. IF FOUND, DO NOT DO COMPREHENSIVE LOGIC.
*S298: if( 61 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC00819
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         TM    1085(R3),2   OBSERVATIONVISIT
         JE    AAC00819
*S299: and claim->PrimaryComprehensive->Bits->ObservationVisit ) then
*S300: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC00814 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC00818
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC00818
*S301: if( line->StatusIndicator="T" ) then {
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC00815
*S302: return;
         J     AAC00857
AAC00815 EQU   *
AAC00816 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC00817
         L     R2,8(R2)
AAC00817 ST    R2,4(R9)   ITEM
         J     AAC00814
*S303: }
*S304: }
*S305: }
* 2B. IF MODIFIER 52, 73, OR 74 EXISTS FOR ANY J1 PROCEDURE, DO NOT PE
* THE COMPLEXITY ADJUSTMENT LOGIC.
* V17.0, EFFECTIVE 2016-01-01, NO COMPLEXITY ADJUSTMENT FOR COMPREHENS
*S310: if( not claim->Bits->SuppressComplexityAdjustment
AAC00818 EQU   *
AAC00819 TM    3005(R9),2   SUPPRESSCOMPLEXITYADJUSTMENT
         JNE   AAC00837
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         TM    1100(R2),128   COMPLEXITYADJUSTMENT
         JE    AAC00837
*S311: and claim->PrimaryComprehensive->capcFlags->ComplexityAdjustmen
*S312: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC00820 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC00836
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC00836
* LOOKUP COMPLEXITY ADJUSTMENT PAIRS. THE TABLE ALSO INCLUDES COMPREHE
* PAIRED WITH THEMSELVES FOR LOOKING UP HCPCS WITH SERVICE UNITS GREAT
* V17.1, RETROACTIVE 2015-01-01, INCLUDE COMPLEXITY ADJUSTMENT FOR COM
*S316: if( line<>claim->PrimaryComprehensive
         L     R2,76(R12)   LINE
         C     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         JNE   AAC00821
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R4,468(R3)   SERVICEUNITS
         CHI   R4,1
         JH    AAC00821
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         TM    1077(R2),64   HAS50MODIFIER
         JE    AAC00833
*S317: or 1 < claim->PrimaryComprehensive->ServiceUnits
*S318: or claim->PrimaryComprehensive->Bits->Has50Modifier ) then {
* CHECK WITH PRIMARY IN CODE1 POSITION
*S321: loop(
*S322: rc:=select MapCAPCTbl using byPair( claim->PrimaryComprehensive
AAC00821 MVC   60(2,R13),62(R11)   4
         MVC   62(2,R13),60(R11)   1
         LA    R14,3576(R9)   MAPCAPCTBL
         ST    R14,64(R13)
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R4,76(R12)   LINE
         LA    R5,73(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC00822
         L     R7,64(R13)
         AHI   R13,88
         LA    R14,3584(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3596(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         LA    R14,5(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3608(2,R9),10(R7)
         AHI   R13,88
         LA    R14,3612(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         LA    R14,12(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
AAC00822 ST    R6,80(R12)   RC
AAC00823 L     R2,80(R12)   RC
         CHI   R2,1
         JNL   AAC00832
*S323: rc<1;
*S324: rc:=select next MapCAPCTbl ){
*S326: if( MapCAPCTbl->Code1 = claim->PrimaryComprehensive->Hcpcs
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R14,3584(R9)   CODE1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC00829
         L     R5,76(R12)   LINE
         LA    R14,3596(R9)   CODE2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R5)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAC00829
*S327: and MapCAPCTbl->Code2 = line->Hcpcs ) then {
*S329: if( base->Version < MapCAPCTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3608(R9),128   LOVERSION
         JE    AAC00824
         LHI   R14,-1
AAC00824 IC    R14,3608(R9)   LOVERSION
         CR    R2,R14
         JL    AAC00826
         XR    R3,R3
         TM    3609(R9),128   HIVERSION
         JE    AAC00825
         LHI   R3,-1
AAC00825 IC    R3,3609(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAC00827
*S330: or MapCAPCTbl->HiVersion < base->Version ) then continue;
AAC00826 J     AAC00830
* THE FIRST SUCCESSFUL COMPLEXITY ADJUSTED PAIRING ENCOUNTERED QUALIFI
* THE COMPLEXITY ADJUSTED APC VALUE IS THE SAME REGARDLESS OF THE CODE
* BECAUSE WE STORE ONE ADJUSTED APC VALUE WITH THE PROCEDURE IN THE HC
*S335: if( do GAPC.findApcData( MapCAPCTbl->Apc, base->Version ) ) the
AAC00827 LA    R14,84(R12)
         ST    R14,60(R13)
         LA    R14,3612(R9)   APC
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,28(R11)   GAPCC123
         BASR  R14,R15
         L     R15,84(R12)
         LTR   R15,R15
         JE    AAC00828
*S336: claim->PrimaryComprehensive->PaymentApc :=DataApcTbl->Apc;
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3072(R9)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S337: claim->PrimaryComprehensive->ApcPayment :=DataApcTbl->ApcPaymen
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R4,3116(R9)   APCPAYMENT
         ST    R4,528(R3)   APCPAYMENT
*S338: }
*S340: }
*S341: break;
AAC00828 EQU   *
AAC00829 J     AAC00832
AAC00830 MVC   60(2,R13),66(R11)   7
         LA    R14,3576(R9)   MAPCAPCTBL
         ST    R14,64(R13)
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC00831
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3584(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3596(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3608(2,R9),10(R3)
         AHI   R13,72
         LA    R14,3612(R9)   MAPCAPCTBL
         ST    R14,60(R13)
         LA    R14,12(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
AAC00831 ST    R2,80(R12)   RC
         J     AAC00823
AAC00832 EQU   *
AAC00833 EQU   *
AAC00834 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC00835
         L     R2,8(R2)
AAC00835 ST    R2,4(R9)   ITEM
         J     AAC00820
*S342: }
*S343: }
*S344: }
*S345: }
* 2C. PACKAGE ALL LINES, EXCLUDING THE PAYING COMPREHENSIVE APC AND AN
* V17.0, EFFECTIVE 2016-01-01, IF STEREOTACTIC RADIOSURGERY COMPREHENS
* DO NOT PACKAGE CODES FROM THE SRS PLANNING AND PREPARATION LIST.
*S351: loop( item:=base->lines->first; item and (line:=&item->line, li
AAC00836 EQU   *
AAC00837 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC00838 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC00854
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC00854
*S352: if( line=claim->PrimaryComprehensive ) then {
         L     R2,76(R12)   LINE
         C     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         JNE   AAC00840
* 2D. IF THE COMPREHENSIVE APC INCLUDES MULTIPLE UNITS, SET THE PAYMEN
* V16.1.0, RETROACTIVELY EFFECTIVE 2015-01-01, SET UNITS TO 1 AND PAF
*S355: if( 1 < claim->PrimaryComprehensive->ServiceUnits
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R4,468(R3)   SERVICEUNITS
         CHI   R4,1
         JNH   AAC00839
         L     R5,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R15,544(R5)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAC00839
*S356: and not claim->PrimaryComprehensive->PayAdjFlag ) then {
*S357: claim->PrimaryComprehensive->PayAdjFlag :=11;
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         MVC   544(4,R2),32(R11)   11
*S358: line->ServiceUnitsInput :="000000001";
         L     R3,76(R12)   LINE
         LA    R14,232(R3)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,73(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   9
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S359: line->ServiceUnitsPay :=1;
         L     R4,76(R12)   LINE
         MVC   568(4,R4),36(R11)   1
AAC00839 J     AAC00850
*S360: }
*S361: }
* V17.0 EFFECTIVE 2016-01-01, DO NOT PACKAGE PREP AND PLAN LINES IF ST
* SELECTED AS THE PRIMARY COMPREHENSIVE
*S364: else if( 61 < base->Version
AAC00840 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC00842
         L     R3,76(R12)   LINE
         TM    1094(R3),1   CAPCSRSPLANANDPREP
         JE    AAC00842
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         TM    1087(R2),16   CAPCSRS
         JE    AAC00842
*S365: and line->flags->CapcSrsPlanAndPrep
*S366: and claim->PrimaryComprehensive->Bits->CapcSrs ) then {
* CONVERT TO DEFAULT ASSIGNMENT IF Q CODE
*S368: if( StrPartial( line->StatusIndicator, 0, 1 )="Q" ) then {
         L     R2,76(R12)   LINE
         LA    R14,88(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),40(R11)   0
         MVC   76(4,R13),36(R11)   1
         L     R15,44(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,88(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,82(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC00841
*S369: do GAPC.SetDefaultAssignment( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,48(R11)   GAPCC116
         BASR  R14,R15
AAC00841 J     AAC00849
*S370: }
*S371: }
*S372: else if( not (
*S373: line->flags->CapcExclusion
AAC00842 L     R2,76(R12)   LINE
         TM    1094(R2),2   CAPCEXCLUSION
         JNE   AAC00848
         L     R3,76(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,83(R11)   B
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R11)   E
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAC00844
         L     R3,76(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,85(R11)   E1
         ST    R14,64(R13)
         MVC   70(2,R13),70(R11)   2
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC00843
         L     R5,76(R12)   LINE
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   E2
         ST    R14,64(R13)
         MVC   70(2,R13),70(R11)   2
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAC00844
AAC00843 J     AAC00848
AAC00844 L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,89(R11)   F
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,91(R11)   H
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,92(R11)   L
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,93(R11)   M
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,94(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,95(R11)   U
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00848
         L     R2,76(R12)   LINE
         TM    1087(R2),64   ISSOMETIMESTHERAPYPAYABLE
         JNE   AAC00848
         L     R2,76(R12)   LINE
         TM    1083(R2),8   HAS38X
         JE    AAC00846
         L     R3,76(R12)   LINE
         TM    1090(R3),1   PACKEDREDCELLS
         JNE   AAC00845
         L     R4,76(R12)   LINE
         TM    1091(R4),128   WHOLEBLOOD
         JE    AAC00846
AAC00845 J     AAC00848
AAC00846 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC00847
         L     R3,76(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC00848
*S374: or line->StatusIndicator="B"
*S375: or line->StatusIndicator="E"
*S376: or ( 65 < base->Version and ( line->StatusIndicator="E1" or lin
*S377: or line->StatusIndicator="F"
*S378: or line->StatusIndicator="G"
*S379: or line->StatusIndicator="H"
*S380: or line->StatusIndicator="L"
*S381: or line->StatusIndicator="M"
*S382: or line->StatusIndicator="N"
*S383: or line->StatusIndicator="U"
*S384: or line->Bits->isSometimesTherapyPayable
*S385: or ( line->Bits->Has38x and ( line->flags->PackedRedCells or li
*S386: or ( 61 < base->Version and line->StatusIndicator="C" ) ) ) the
*S387: do GAPC.PackageCode( line );
AAC00847 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,0(R11)   GAPCC119
         BASR  R14,R15
*S388: }
* V18.0, IF CAF ASSIGNED ON A COMPREHENSIVE CLAIM, CLEAR THE CAF
*S391: if( line->CompAdjFlag<>"00" ) then {
AAC00848 EQU   *
AAC00849 EQU   *
AAC00850 L     R2,76(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,97(R11)   00
         ST    R14,64(R13)
         MVC   70(2,R13),70(R11)   2
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC00851
*S392: line->CompAdjFlag:="00";
         L     R4,76(R12)   LINE
         LA    R14,272(R4)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,97(R11)   00
         ST    R14,64(R13)
         MVC   70(2,R13),70(R11)   2
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
AAC00851 EQU   *
AAC00852 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC00853
         L     R2,8(R2)
AAC00853 ST    R2,4(R9)   ITEM
         J     AAC00838
AAC00854 EQU   *
AAC00855 EQU   *
AAC00856 EQU   *
AAC00857 EQU   *
AAC00858 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,52(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC016
**************************
GAPCC016 CSECT
GAPCC016 AMODE ANY
GAPCC016 RMODE ANY
*XREF - GAPCC016 GAPC.CheckAgeSex
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> Unknown ()
*        0064(R12)-> Integer len 4 ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC00903
         DC    F'25' @00000
         DC    A(GAPCC091) @00004
         DC    F'26' @00008
AAC00903 XC    64(12,R12),64(R12)
* Edits 25, 26
* Check Valid Age (0-124)
*S401: if( base->Age < 0 or base->Age > 124 ) then {
         L     R2,1876(R9)   AGE
         LTR   R2,R2
         JL    AAC00906
         L     R3,1876(R9)   AGE
         CHI   R3,124
         JNH   AAC00907
*S402: do GAPC.SetEdit( Edit->InvalidAge, base->NoLine, base->NoDxp, b
AAC00906 MVC   64(4,R12),0(R11)   25
         LA    R14,64(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    68(4,R12),68(R12)
         LA    R14,68(R12)
         ST    R14,80(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S403: }
* Check Valid Sex
* V21.2 TRICARE added accepted value of 0 for sex.
*S407: if( base->Sex<0 or base->Sex>2 ) then {
AAC00907 L     R2,1880(R9)   SEX
         LTR   R2,R2
         JL    AAC00908
         L     R3,1880(R9)   SEX
         CHI   R3,2
         JNH   AAC00909
*S408: do GAPC.SetEdit( Edit->InvalidSex, base->NoLine, base->NoDxp, b
AAC00908 MVC   64(4,R12),8(R11)   26
         LA    R14,64(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    68(4,R12),68(R12)
         LA    R14,68(R12)
         ST    R14,80(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAC00909 EQU   *
AAC00910 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC017
**************************
GAPCC017 CSECT
GAPCC017 AMODE ANY
GAPCC017 RMODE ANY
*XREF - GAPCC017 GAPC.CheckDiagnoses
*  R11 + 0000 Literals        (116 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (60 bytes)
*        0072(R12)-> reference to Struct len 148 (dxp)
*        0076(R12)-> String (dxcode)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> Integer len 4 (pos)
*        0096(R12)-> Integer len 4 (fromMonth)
*        0100(R12)-> Integer len 4 (toMonth)
*        0104(R12)-> Integer len 4 (fromDay)
*        0108(R12)-> Unknown ()
*        0108(R12)-> Integer len 4 ()
*        0112(R12)-> Integer len 4 ()
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Void ()
*  R13 + 0000 Stack           (R12 + 136)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,136  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01003
         DC    A(DMNLONG) @00000
         DC    F'1' @00004
         DC    A(DMNGDATX) @00008
         DC    F'2' @00012
         DC    A(DMNSCMP) @00016
         DC    A(GAPCC091) @00020
         DC    A(DMNATFD) @00024
         DC    A(DMNSCPY) @00028
         DC    A(DMNTRMR) @00032
         DC    A(DMNSRCH) @00036
         DC    A(DMNSLAM) @00040
         DC    A(DMNSEL) @00044
         DC    F'7' @00048
         DC    A(DMNSCPYX) @00052
         DC    A(DMNZSTR) @00056
         DC    F'3' @00060
         DC    F'5' @00064
         DC    F'86' @00068
         DC    A(DMNFREE) @00072
         DC    H'2'  0 2 @00076
         DC    H'3'  0 3 @00078
         DC    H'6'  0 6 @00080
         DC    H'148'  0 148 @00082
         DC    H'7'  0 7 @00084
         DC    H'1'  0 1 @00086
         DC    H'4'  0 4 @00088
         DC    CL2'32' @00090
         DC    CL2'33' @00092
         DC    CL2'12' @00094
         DC    CL3'322' @00096
         DC    CL3'332' @00099
         DC    CL7'       ' @00102
         DC    CL1' ' @00109
         DC    CL1'.' @00110
         DC    CL1'0' @00111
         DC    CL2'81' @00112
         DC    CL2'82' @00114
AAC01003 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(12,R12),72(R12)
         ST    R2,84(R12)
         XC    88(44,R12),88(R12)
* Edits 1, 5, 2, 3, 4, 86
*S425: fromMonth :=gdate(base->FromDate ,1);
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),4(R11)   1
         L     R15,8(R11)   DMNGDATX
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,96(R12)   FROMMONTH
*S426: toMonth :=gdate(base->ThruDate ,1);
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         STD   F2,64(R13)
         MVC   60(4,R13),4(R11)   1
         L     R15,8(R11)   DMNGDATX
         BASR  R14,R15
         L     R3,60(R13)
         ST    R3,100(R12)   TOMONTH
*S427: fromDay :=gdate(base->FromDate ,2);
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F4,64(R13)
         STD   F4,64(R13)
         MVC   60(4,R13),12(R11)   2
         L     R15,8(R11)   DMNGDATX
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,104(R12)   FROMDAY
*S429: if( fromMonth<10
         CHI   R2,10
         JNL   AAC01007
         CHI   R3,10
         JL    AAC01007
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01006
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,92(R11)   33
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01006
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,94(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01007
*S430: and toMonth>=10
*S431: and (
*S432: base->BillType="32"
*S433: or base->BillType="33"
*S434: or base->BillType="12"
*S435: ) ) then {
*S436: claim->Bits->DxValidEditsExcl:=1;
AAC01006 OI    3004(R9),8   DXVALIDEDITSEXCL
         J     AAC01010
*S437: }
*S438: else if( fromMonth=9
AAC01007 L     R2,96(R12)   FROMMONTH
         CHI   R2,9
         JNE   AAC01009
         L     R3,104(R12)   FROMDAY
         CHI   R3,26
         JL    AAC01009
         L     R2,104(R12)   FROMDAY
         CHI   R2,30
         JH    AAC01009
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R11)   322
         ST    R14,64(R13)
         MVC   70(2,R13),78(R11)   3
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01008
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,99(R11)   332
         ST    R14,64(R13)
         MVC   70(2,R13),78(R11)   3
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01009
*S439: and fromDay>=26
*S440: and fromDay<=30
*S441: and ( base->FullBillType="322" or base->FullBillType="332" ) )
*S442: claim->Bits->DxValidEditsExcl:=1;
AAC01008 OI    3004(R9),8   DXVALIDEDITSEXCL
*S443: }
* Edit 1 - Principle Diagnosis Cannot Be Missing; No diagnosis on the
*S446: if( base->NumDx<4 ) then {
AAC01009 EQU   *
AAC01010 L     R2,1872(R9)   NUMDX
         CHI   R2,4
         JNL   AAC01011
*S447: /*was base->NumDx=0; v11.2 changed to correct behavior introduc
*S448: /* Note - we do not plop into dxp->Edits because the caller may
*S449: do GAPC.SetEdit( Edit->InvalidDx, base->NoLine, base->NoDxp, ba
         MVC   108(4,R12),4(R11)   1
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   112(4,R12),4(R11)   1
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S450: return;
         J     AAC01080
*S451: }
*S453: loop( dx:=base->dx->first; dx and (dxp:=&dx->Dx, dxp); dx+=1 )
AAC01011 L     R2,12(R9)   DX
         ST    R2,0(R9)   DX
AAC01012 L     R15,0(R9)   DX
         LTR   R15,R15
         JE    AAC01079
         MVC   60(4,R13),0(R9)   DX
         MVC   64(2,R13),80(R11)   6
         MVC   66(2,R13),82(R11)   148
         L     R15,24(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   DXP
         LTR   R2,R2   DX
         JE    AAC01079
*S455: /*DEG 41 upgrade: I changed this logic to follow the HPEGS and
*S456: if( dxp->dx<="       " ) then {
         L     R2,72(R12)   DXP
         LA    R14,4(R2)   DX
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),84(R11)   7
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JH    AAC01015
*S457: if( dxp->occurrence=3 ) then {/* 4th one (pdx) cannot be blank
         L     R4,72(R12)   DXP
         L     R5,0(R4)   OCCURRENCE
         CHI   R5,3
         JNE   AAC01013
*S458: do GAPC.SetEdit( Edit->InvalidDx, base->NoLine, dxp, base->NoDa
         MVC   108(4,R12),4(R11)   1
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   112(4,R12),12(R11)   2
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S459: }
*S460: if( dxp->occurrence>2 ) then break;/*DEG 41 upgrade*/
AAC01013 L     R2,72(R12)   DXP
         L     R3,0(R2)   OCCURRENCE
         CHI   R3,2
         JNH   AAC01014
         J     AAC01079
AAC01014 J     AAC01076
*S461: }
*S462: else {
* Strip off dots, if there are any
*S464: dxcode := dxp->dx;
AAC01015 L     R2,72(R12)   DXP
         LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R2)   DX
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
*S466: StrTrimRight( dxcode, " " );
         LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         LA    R14,109(R11)
         ST    R14,120(R12)
         MVC   124(2,R12),86(R11)   1
         MVC   126(2,R12),86(R11)   1
         XC    128(4,R12),128(R12)
         LA    R14,120(R12)
         ST    R14,64(R13)
         L     R15,32(R11)   DMNTRMR
         BASR  R14,R15
*S468: while( StrSearch( dxcode, ".", pos ) ){
AAC01016 LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         LA    R14,110(R11)   .
         ST    R14,120(R12)   .
         MVC   124(2,R12),86(R11)   1
         MVC   126(2,R12),86(R11)   1
         XC    128(4,R12),128(R12)   .
         LA    R14,120(R12)   .
         ST    R14,64(R13)
         LA    R14,92(R12)   POS
         ST    R14,68(R13)
         L     R15,36(R11)   DMNSRCH
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01017
*S469: StrSlam( dxcode, pos, 1 );
         LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         MVC   64(4,R13),92(R12)   POS
         MVC   68(4,R13),4(R11)   1
         L     R15,40(R11)   DMNSLAM
         BASR  R14,R15
         J     AAC01016
*S470: }
* Look up dx in DX table
*S473: if( claim->CodeType="0" ) then {
AAC01017 LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),86(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01027
*S474: loop( rc:=select DataDx10Tbl using byDiagnosis( dxcode ); rc<1;
         MVC   60(2,R13),88(R11)   4
         MVC   62(2,R13),86(R11)   1
         LA    R14,3244(R9)   DATADX10TBL
         ST    R14,64(R13)
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),84(R11)   7
         LA    R14,76(R12)   DXCODE
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,44(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAC01018
         L     R5,64(R13)
         L     R6,68(R13)
         AHI   R13,80
         LA    R14,3252(R9)   DATADX10TBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),48(R11)   7
         L     R15,52(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3264(2,R9),7(R5)
         AHI   R13,80
         ST    R6,60(R13)
         LA    R14,3268(R9)   DATADX10TBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,56(R11)   DMNZSTR
         BASR  R14,R15
         L     R6,60(R13)
         AHI   R13,-80
         MVC   3280(6,R9),9(R5)
AAC01018 ST    R4,88(R12)   RC
AAC01019 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAC01026
*S475: if( dxcode<>DataDx10Tbl->Diagnosis ) then {
         LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3252(R9)   DIAGNOSIS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01020
*S476: rc:=1;
         MVC   88(4,R12),4(R11)   1
*S477: break;
         J     AAC01026
*S478: }
*S479: if( base->Version>=DataDx10Tbl->LoVersion
AAC01020 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3264(R9),128   LOVERSION
         JE    AAC01021
         LHI   R14,-1
AAC01021 IC    R14,3264(R9)   LOVERSION
         CR    R2,R14
         JL    AAC01023
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3265(R9),128   HIVERSION
         JE    AAC01022
         LHI   R14,-1
AAC01022 IC    R14,3265(R9)   HIVERSION
         CR    R3,R14
         JH    AAC01023
*S480: and base->Version<=DataDx10Tbl->HiVersion ) then break;
         J     AAC01026
AAC01023 EQU   *
AAC01024 MVC   60(2,R13),84(R11)   7
         LA    R14,3244(R9)   DATADX10TBL
         ST    R14,64(R13)
         L     R15,44(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01025
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3252(R9)   DATADX10TBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),48(R11)   7
         L     R15,52(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3264(2,R9),7(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3268(R9)   DATADX10TBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,56(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         MVC   3280(6,R9),9(R3)
AAC01025 ST    R2,88(R12)   RC
         J     AAC01019
AAC01026 J     AAC01037
*S481: }
*S482: }
*S483: else {
*S484: loop( rc:=select DataDxTbl using byDiagnosis( dxcode ); rc<1; r
AAC01027 MVC   60(2,R13),88(R11)   4
         MVC   62(2,R13),86(R11)   1
         LA    R14,3200(R9)   DATADXTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         AHI   R13,80
         ST    R2,60(R13)
         MVC   68(2,R13),84(R11)   7
         LA    R14,76(R12)   DXCODE
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,44(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JH    AAC01028
         L     R4,64(R13)
         L     R5,68(R13)
         AHI   R13,80
         LA    R14,3208(R9)   DATADXTBL
         ST    R14,60(R13)
         ST    R4,64(R13)
         MVC   68(4,R13),48(R11)   7
         L     R15,52(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3220(2,R9),7(R4)
         AHI   R13,80
         ST    R5,60(R13)
         LA    R14,3224(R9)   DATADXTBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,56(R11)   DMNZSTR
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-80
         MVC   3236(6,R9),9(R4)
AAC01028 ST    R3,88(R12)   RC
AAC01029 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAC01036
*S485: if( dxcode<>DataDxTbl->Diagnosis ) then {
         LA    R14,76(R12)   DXCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3208(R9)   DIAGNOSIS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01030
*S486: rc:=1;
         MVC   88(4,R12),4(R11)   1
*S487: break;
         J     AAC01036
*S488: }
*S489: if( base->Version>=DataDxTbl->LoVersion
AAC01030 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3220(R9),128   LOVERSION
         JE    AAC01031
         LHI   R14,-1
AAC01031 IC    R14,3220(R9)   LOVERSION
         CR    R2,R14
         JL    AAC01033
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3221(R9),128   HIVERSION
         JE    AAC01032
         LHI   R14,-1
AAC01032 IC    R14,3221(R9)   HIVERSION
         CR    R3,R14
         JH    AAC01033
*S490: and base->Version<=DataDxTbl->HiVersion ) then break;
         J     AAC01036
AAC01033 EQU   *
AAC01034 MVC   60(2,R13),84(R11)   7
         LA    R14,3200(R9)   DATADXTBL
         ST    R14,64(R13)
         L     R15,44(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01035
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3208(R9)   DATADXTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),48(R11)   7
         L     R15,52(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3220(2,R9),7(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3224(R9)   DATADXTBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,56(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         MVC   3236(6,R9),9(R3)
AAC01035 ST    R2,88(R12)   RC
         J     AAC01029
*S491: }
*S492: }
*S494: if( not claim->Bits->DxValidEditsExcl ) then {
AAC01036 EQU   *
AAC01037 TM    3004(R9),8   DXVALIDEDITSEXCL
         JNE   AAC01068
* Edit 1 - Invalid Diagnosis; Diagnosis not in table
*S496: if( rc ) then {/* dx not found */
         L     R15,88(R12)   RC
         LTR   R15,R15
         JE    AAC01038
*S497: do GAPC.SetEdit( Edit->InvalidDx, base->NoLine, dxp, base->NoDa
         MVC   108(4,R12),4(R11)   1
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   112(4,R12),60(R11)   3
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S498: continue;/* everything else only for good Dx */
         J     AAC01077
*S499: }
* Edit 2 - Diagnosis/Age Conflict
*S502: /* Do only if age range in ROT is not 0-124 */
*S503: if( claim->CodeType="0" ) then {
AAC01038 LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),86(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01042
*S504: if( ( DataDx10Tbl->LoAge <> 0 or DataDx10Tbl->HiAge <> 124 )
         LH    R3,3280(R9)   LOAGE
         LTR   R3,R3
         JNE   AAC01039
         LH    R4,3282(R9)   HIAGE
         CHI   R4,124
         JE    AAC01041
AAC01039 L     R2,1876(R9)   AGE
         CH    R2,3280(R9)   LOAGE
         JL    AAC01040
         L     R3,1876(R9)   AGE
         CH    R3,3282(R9)   HIAGE
         JNH   AAC01041
*S505: and ( base->Age < DataDx10Tbl->LoAge or base->Age > DataDx10Tbl
*S506: do GAPC.SetEdit( Edit->InvalidDxAge, base->NoLine, dxp, base->N
AAC01040 MVC   108(4,R12),12(R11)   2
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01041 J     AAC01046
*S507: }
*S508: }
*S509: else if( ( DataDxTbl->LoAge <> 0 or DataDxTbl->HiAge <> 124 )
AAC01042 LH    R2,3236(R9)   LOAGE
         LTR   R2,R2
         JNE   AAC01043
         LH    R3,3238(R9)   HIAGE
         CHI   R3,124
         JE    AAC01045
AAC01043 L     R2,1876(R9)   AGE
         CH    R2,3236(R9)   LOAGE
         JL    AAC01044
         L     R3,1876(R9)   AGE
         CH    R3,3238(R9)   HIAGE
         JNH   AAC01045
*S510: and ( base->Age < DataDxTbl->LoAge or base->Age > DataDxTbl->Hi
*S511: do GAPC.SetEdit( Edit->InvalidDxAge, base->NoLine, dxp, base->N
AAC01044 MVC   108(4,R12),12(R11)   2
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S512: }
* Edit 3 - Diagnosis/Sex Conflict
*S515: if( claim->CodeType="0" ) then {
AAC01045 EQU   *
AAC01046 LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),86(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01049
*S516: if( DataDx10Tbl->Sex
         CLI   3284(R9),0   SEX
         JE    AAC01048
         L     R3,1880(R9)   SEX
         XR    R14,R14
         TM    3284(R9),128   SEX
         JE    AAC01047
         LHI   R14,-1
AAC01047 IC    R14,3284(R9)   SEX
         CR    R3,R14
         JE    AAC01048
         TM    3000(R9),16   HASCC45
         JNE   AAC01048
*S517: and base->Sex<>DataDx10Tbl->Sex
*S518: and not claim->Bits->HasCc45 ) then {
*S519: do GAPC.SetEdit( Edit->InvalidDxSex, base->NoLine, dxp, base->N
         MVC   108(4,R12),60(R11)   3
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01048 J     AAC01052
*S520: }
*S521: }
*S522: else if( DataDxTbl->Sex/* only check if not zero */
AAC01049 CLI   3240(R9),0   SEX
         JE    AAC01051
         L     R2,1880(R9)   SEX
         XR    R14,R14
         TM    3240(R9),128   SEX
         JE    AAC01050
         LHI   R14,-1
AAC01050 IC    R14,3240(R9)   SEX
         CR    R2,R14
         JE    AAC01051
         TM    3000(R9),16   HASCC45
         JNE   AAC01051
*S523: and base->Sex<>DataDxTbl->Sex/*v4.3 Dx edits exclusion*/
*S524: and not claim->Bits->HasCc45 ) then {/*v11.1 eff. 4/1/10 cc 45
*S525: do GAPC.SetEdit( Edit->InvalidDxSex, base->NoLine, dxp, base->N
         MVC   108(4,R12),60(R11)   3
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S526: }
* Edit 5 - ECode As Reason for Visit (Principle Diagnosis [pdx])
*S529: if( dxp->occurrence=3 ) then {/* Pdx - v4.0 */
AAC01051 EQU   *
AAC01052 L     R2,72(R12)   DXP
         L     R3,0(R2)   OCCURRENCE
         CHI   R3,3
         JNE   AAC01063
*S530: if( claim->CodeType="0" ) then {
         LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),86(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01058
*S531: claim->Bits->HadMentalHealthDx :=DataDx10Tbl->flags->MentalHeal
         TM    3285(R9),64   MENTALHEALTH
         JNE   AAC01053
         NI    3002(R9),251   HADMENTALHEALTHDX
         J     AAC01054
AAC01053 OI    3002(R9),4   HADMENTALHEALTHDX
*S532: claim->Bits->CodeFirst :=DataDx10Tbl->flags->CodeFirst;% V20.0
AAC01054 TM    3285(R9),16   CODEFIRST
         JNE   AAC01055
         NI    3006(R9),247   CODEFIRST
         J     AAC01056
AAC01055 OI    3006(R9),8   CODEFIRST
*S533: if( DataDx10Tbl->flags->ExternalCause ) then {
AAC01056 TM    3285(R9),128   EXTERNALCAUSE
         JE    AAC01057
*S534: do GAPC.SetEdit( Edit->DxEcode, base->NoLine, dxp, base->NoDay,
         MVC   108(4,R12),64(R11)   5
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01057 J     AAC01062
*S535: }
*S536: }
*S537: else{
*S538: claim->Bits->HadMentalHealthDx:=DataDxTbl->flags->MentalHealth;
AAC01058 TM    3241(R9),64   MENTALHEALTH
         JNE   AAC01059
         NI    3002(R9),251   HADMENTALHEALTHDX
         J     AAC01060
AAC01059 OI    3002(R9),4   HADMENTALHEALTHDX
*S539: if( DataDxTbl->flags->ExternalCause ) then {/*v4.3 Dx edits exc
AAC01060 TM    3241(R9),128   EXTERNALCAUSE
         JE    AAC01061
*S540: do GAPC.SetEdit( Edit->DxEcode, base->NoLine, dxp, base->NoDay,
         MVC   108(4,R12),64(R11)   5
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01061 EQU   *
AAC01062 J     AAC01067
*S541: }
*S542: }
*S543: }
* V20.0, IF SEX EXPLOITATION DX IN PDX POSITION, ALLOW MH DX IN FIRST
* TO SATISFY MENTAL HEALTH DX REQUIREMENTS.
*S546: else if( dxp->occurrence=4
AAC01063 L     R2,72(R12)   DXP
         L     R3,0(R2)   OCCURRENCE
         CHI   R3,4
         JNE   AAC01066
         TM    3006(R9),8   CODEFIRST
         JE    AAC01066
*S547: and claim->Bits->CodeFirst ) then {
*S548: claim->Bits->HadMentalHealthDx:=DataDx10Tbl->flags->MentalHealt
         TM    3285(R9),64   MENTALHEALTH
         JNE   AAC01064
         NI    3002(R9),251   HADMENTALHEALTHDX
         J     AAC01065
AAC01064 OI    3002(R9),4   HADMENTALHEALTHDX
*S549: }
*S550: }
* Edit 86 - Manifestation code not allowed as principal diagnosis, V14
* V15.2, EFFECTIVE 2014-07-01, EDIT 86 LOGIC EFFECTIVE DATE CHANGED FR
* V16.0, EFFECTIVE 2015-01-01, EDIT 86 LOGIC ADDED FOR HOME HEALTH BIL
*S558: if( rc<>1
AAC01065 EQU   *
AAC01066 EQU   *
AAC01067 EQU   *
AAC01068 L     R2,88(R12)   RC
         CHI   R2,1
         JE    AAC01075
         L     R3,72(R12)   DXP
         L     R4,0(R3)   OCCURRENCE
         CHI   R4,3
         JNE   AAC01075
         L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAC01075
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,112(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01070
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01070
         L     R2,1868(R9)   VERSION
         CHI   R2,57
         JNH   AAC01069
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   2
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01070
AAC01069 J     AAC01075
*S559: and dxp->occurrence=3
*S560: and 56 < base->Version
*S561: and ( base->BillType="81"
*S562: or base->BillType="82"
*S563: or ( 57 < base->Version and base->BillType="32" )
*S564: ) ) then {
*S565: if( claim->CodeType="0" ) then {
AAC01070 LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),86(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01072
*S566: if( DataDx10Tbl->flags->Manifestation ) then {
         TM    3285(R9),32   MANIFESTATION
         JE    AAC01071
*S567: do GAPC.SetEdit( Edit->Manifestation, base->NoLine, dxp, base->
         MVC   108(4,R12),68(R11)   86
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01071 J     AAC01074
*S568: }
*S569: }
*S570: else if( DataDxTbl->flags->Manifestation ) then {
AAC01072 TM    3241(R9),32   MANIFESTATION
         JE    AAC01073
*S571: do GAPC.SetEdit( Edit->Manifestation, base->NoLine, dxp, base->
         MVC   108(4,R12),68(R11)   86
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,72(R12)   DXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,80(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAC01073 EQU   *
AAC01074 EQU   *
AAC01075 EQU   *
AAC01076 EQU   *
AAC01077 L     R2,0(R9)   DX
         LTR   R2,R2
         JE    AAC01078
         L     R2,8(R2)
AAC01078 ST    R2,0(R9)   DX
         J     AAC01012
AAC01079 EQU   *
AAC01080 EQU   *
AAC01081 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,72(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC018
**************************
GAPCC018 CSECT
GAPCC018 AMODE ANY
GAPCC018 RMODE ANY
*XREF - GAPCC018 GAPC.RevenueEdits
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (16 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01103
         DC    A(DMNATFD) @00000
         DC    F'41' @00004
         DC    A(GAPCC091) @00008
         DC    F'44' @00012
         DC    F'65' @00016
         DC    H'10'  0 10 @00020
         DC    H'1120'  4 96 @00022
AAC01103 XC    64(16,R12),64(R12)
* Mark lines with bad revenue codes
* Edits 41, 44, 65
*S587: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01106 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01113
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),20(R11)   10
         MVC   66(2,R13),22(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01113
*S588: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01110
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC01110
* Edit 41 - Invalid Revenue Code; Not Found in Revenue Code Table
*S591: if( not line->Bits->FoundRevenue ) then {
         L     R2,64(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JNE   AAC01107
*S592: do GAPC.SetEdit( Edit->InvalidRevenueCode, line, base->NoDxp, b
         MVC   68(4,R12),4(R11)   41
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S593: }
*S594: /*
*S595:                message "E44 Check--";
*S596:                message "line flag? %i", ((line->Bits->HasRev762
*S597:                message "control flag? %i", ((base->control->Rev
*S598:                message "blank HCPCS flag? %i", ((line->Bits->Bl
*S599:                message "obs flag? %i", ((line->flags->Observati
*S600:             */
* Edit 44 - Revenue code 762 with Non-Observation HCPCS - new for v2.0
*S603: if( line->Bits->HasRev762
AAC01107 L     R2,64(R12)   LINE
         TM    1076(R2),1   HASREV762
         JE    AAC01108
         TM    1970(R9),4   REVEDITS2
         JE    AAC01108
         L     R2,64(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JNE   AAC01108
         L     R3,64(R12)   LINE
         TM    1091(R3),32   OBSERVATION
         JNE   AAC01108
*S604: and base->control->RevEdits2
*S605: and not ( line->Bits->BlankHcpcs or line->flags->Observation )
*S606: do GAPC.SetEdit( Edit->Rev762WOObs, line, base->NoDxp, base->No
         MVC   68(4,R12),12(R11)   44
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S607: }
* IF REVENUE CODE WAS ON ValidRevenue.NotRecognizedMCare LIST, GENERAT
* Edit 65 - Revenue Code Not Recognized by Medicare
*S611: if( line->Bits->BlankHcpcs
AAC01108 L     R2,64(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JE    AAC01109
         L     R3,64(R12)   LINE
         TM    1083(R3),32   REVNOTRECMCARE
         JE    AAC01109
*S612: and line->Bits->RevNotRecMcare ) then {/*v5.2*/
*S613: do GAPC.SetEdit( Edit->RevNotRecMcare, line, base->NoDxp, base-
         MVC   68(4,R12),16(R11)   65
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC01109 EQU   *
AAC01110 EQU   *
AAC01111 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01112
         L     R2,8(R2)
AAC01112 ST    R2,4(R9)   ITEM
         J     AAC01106
AAC01113 EQU   *
AAC01114 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC019
**************************
GAPCC019 CSECT
GAPCC019 AMODE ANY
GAPCC019 RMODE ANY
*XREF - GAPCC019 GAPC.CheckBiosimilars
*  R11 + 0000 Literals        (68 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (validMod)
*        0072(R12)-> Integer len 4 (rc)
*        0076(R12)-> Integer len 4 (foundHCPCS)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01203
         DC    A(DMNATFD) @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNSEL) @00008
         DC    F'5' @00012
         DC    A(DMNSCPYX) @00016
         DC    F'2' @00020
         DC    A(DMNSCMP) @00024
         DC    F'1' @00028
         DC    A(DMNSTBL) @00032
         DC    F'94' @00036
         DC    A(GAPCC091) @00040
         DC    F'110' @00044
         DC    F'111' @00048
         DC    H'10'  0 10 @00052
         DC    H'1120'  4 96 @00054
         DC    H'4'  0 4 @00056
         DC    H'1'  0 1 @00058
         DC    H'5'  0 5 @00060
         DC    H'3'  0 3 @00062
         DC    H'2'  0 2 @00064
         DC    H'7'  0 7 @00066
AAC01203 XC    64(28,R12),64(R12)
* Edits 94 - Biosimilar Must Be Reported with Appropriate Modifier, V1
* V19.0 Moved Biosimilars to new table
* V20.0 Edit 110 added
*S629: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01206 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01235
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),52(R11)   10
         MVC   66(2,R13),54(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01235
*S630: if(not (line->Bits->IgnoreLine or line->Bits->IgnoreInpat)) the
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01232
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC01232
*S631: if (line->flags->Biosimilar and base->Version <= 70) then {
         L     R2,64(R12)   LINE
         TM    1099(R2),32   BIOSIMILAR
         JE    AAC01227
         L     R3,1868(R9)   VERSION
         CHI   R3,70
         JH    AAC01227
*S632: reset rc;
         XC    72(4,R12),72(R12)
*S633: validMod := 0;
         XC    68(4,R12),68(R12)   VALIDMOD
*S634: foundHCPCS := 0;
         XC    76(4,R12),76(R12)   FOUNDHCPCS
*S635: loop(rc:=select MapBioSimilarTbl using byHCPCS(line->Hcpcs); rc
         MVC   60(2,R13),56(R11)   4
         MVC   62(2,R13),58(R11)   1
         LA    R14,3540(R9)   MAPBIOSIMILARTBL
         ST    R14,64(R13)
         L     R2,64(R12)   LINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),60(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAC01207
         L     R5,64(R13)
         AHI   R13,80
         LA    R14,3548(R9)   MAPBIOSIMILARTBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3560(R9)   MAPBIOSIMILARTBL
         ST    R14,60(R13)
         LA    R14,5(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3572(2,R9),7(R5)
AAC01207 ST    R4,72(R12)   RC
AAC01208 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAC01225
         L     R15,68(R12)   VALIDMOD
         LTR   R15,R15
         JNE   AAC01225
* If we have found a Biosimilar match in the table in the valid versio
* if the modifier exists on the line. Some Biosimilars can have one of
* to prevent the edit so we xor the flag.
*S639: if(line->Hcpcs=MapBioSimilarTbl->HCPCS
         L     R2,64(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3548(R9)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01222
         L     R4,1868(R9)   VERSION
         XR    R14,R14
         TM    3572(R9),128   LOVERSION
         JE    AAC01209
         LHI   R14,-1
AAC01209 IC    R14,3572(R9)   LOVERSION
         CR    R4,R14
         JL    AAC01222
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3573(R9),128   HIVERSION
         JE    AAC01210
         LHI   R14,-1
AAC01210 IC    R14,3573(R9)   HIVERSION
         CR    R2,R14
         JH    AAC01222
*S640: and base->Version >= MapBioSimilarTbl->LoVersion
*S641: and base->Version <= MapBioSimilarTbl->HiVersion) then {
* If we found the HCPCS then we may need to potentially edit the line.
* the line is not a candidate for editing.
*S644: foundHCPCS := 1;
         MVC   76(4,R12),28(R11)   1
*S645: switch (MapBioSimilarTbl->Modif) {
         LA    R14,3560(R9)   MODIF
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),62(R11)   3
         MVC   68(2,R13),64(R11)   2
         MVC   70(2,R13),64(R11)   2
         L     R15,32(R11)   DMNSTBL
         BASR  R14,R15
         J     AAC01211
         DC    CL2'ZA'
         J     AAC01214
         DC    CL2'ZB'
         J     AAC01217
         DC    CL2'ZC'
         J     AAC01220
*S646: case "ZA":
*S647: validMod |= line->Bits->HasZAModifier;
AAC01211 L     R2,64(R12)   LINE
         TM    1079(R2),1   HASZAMODIFIER
         JNE   AAC01212
         XR    R3,R3
         J     AAC01213
AAC01212 LHI   R3,1
AAC01213 O     R3,68(R12)   VALIDMOD
         ST    R3,68(R12)   VALIDMOD
*S648: break;
         J     AAC01221
*S649: case "ZB":
*S650: validMod |= line->Bits->HasZBModifier;
AAC01214 L     R2,64(R12)   LINE
         TM    1080(R2),128   HASZBMODIFIER
         JNE   AAC01215
         XR    R3,R3
         J     AAC01216
AAC01215 LHI   R3,1
AAC01216 O     R3,68(R12)   VALIDMOD
         ST    R3,68(R12)   VALIDMOD
*S651: break;
         J     AAC01221
*S652: case "ZC":
*S653: validMod |= line->Bits->HasZCModifier;
AAC01217 L     R2,64(R12)   LINE
         TM    1080(R2),64   HASZCMODIFIER
         JNE   AAC01218
         XR    R3,R3
         J     AAC01219
AAC01218 LHI   R3,1
AAC01219 O     R3,68(R12)   VALIDMOD
         ST    R3,68(R12)   VALIDMOD
*S654: break;
         J     AAC01221
*case "ZD":
*  validMod |= line->Bits->HasZDModifier;
*S657: default:
*S658: break;
AAC01220 EQU   *
AAC01221 EQU   *
AAC01222 EQU   *
AAC01223 MVC   60(2,R13),66(R11)   7
         LA    R14,3540(R9)   MAPBIOSIMILARTBL
         ST    R14,64(R13)
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01224
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3548(R9)   MAPBIOSIMILARTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3560(R9)   MAPBIOSIMILARTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3572(2,R9),7(R3)
AAC01224 ST    R2,72(R12)   RC
         J     AAC01208
*S659: }
*S660: }
*S661: }
* At this point the HCPCS on the line has been has been marked as a Bi
* but either no match was found in the modifier table or a match was f
* but the modifier was missing from the line.
*S665: if (not validMod and foundHCPCS) then {
AAC01225 L     R15,68(R12)   VALIDMOD
         LTR   R15,R15
         JNE   AAC01226
         L     R15,76(R12)   FOUNDHCPCS
         LTR   R15,R15
         JE    AAC01226
*S666: do GAPC.SetEdit(Edit->Biosimilar, line, base->NoDxp, base->NoDa
         MVC   80(4,R12),36(R11)   94
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,40(R11)   GAPCC091
         BASR  R14,R15
*S667: }
*S668: }
* HcpcsMap.ApprovalDt is the activation date for a code when activated
* other than the beginning of a quarter (in the rot source as 0 or yyy
* Edit 110 is split from the other edits as it has a different bill ty
*S672: if(line->ApprovalDtEdit
AAC01226 EQU   *
AAC01227 L     R2,64(R12)   LINE
         L     R15,524(R2)   APPROVALDTEDIT
         LTR   R15,R15
         JE    AAC01228
         L     R3,64(R12)   LINE
         L     R15,64(R3)   APPROVALDT
         LTR   R15,R15
         JE    AAC01228
         L     R2,64(R12)   LINE
         L     R3,64(R12)   LINE
         L     R4,60(R2)   SERVICEDATE
         CL    R4,64(R3)   APPROVALDT
         JNL   AAC01228
         L     R2,64(R12)   LINE
         L     R3,524(R2)   APPROVALDTEDIT
         CHI   R3,110
         JNE   AAC01228
*S673: and line->ApprovalDt
*S674: and line->ServiceDate < line->ApprovalDt
*S675: and line->ApprovalDtEdit = Edit->ReportedPriorToApprovalDate) t
*S676: do GAPC.SetEdit( Edit->ReportedPriorToApprovalDate, line, base-
         MVC   80(4,R12),44(R11)   110
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,40(R11)   GAPCC091
         BASR  R14,R15
*S677: }
*V20.2 Edit 111 Bundled biological reported on a line. If we have a va
* If we have a blank HCPCS, the Revenue code must be flagged.
*S681: if (base->Version >= 70
AAC01228 L     R2,1868(R9)   VERSION
         CHI   R2,70
         JL    AAC01231
         L     R3,64(R12)   LINE
         TM    1099(R3),16   BUNDLEDINBIOLOGICAL
         JNE   AAC01230
         L     R4,64(R12)   LINE
         TM    1087(R4),32   BUNDLEDINBIOLOGICALRC
         JE    AAC01229
         L     R5,64(R12)   LINE
         TM    1076(R5),64   BLANKHCPCS
         JNE   AAC01230
AAC01229 J     AAC01231
*S682: and ((line->flags->BundledInBiological)
*S683: or (line->Bits->BundledInBiologicalRC and line->Bits->BlankHcpc
*S684: do GAPC.SetEdit(Edit->BundledInBiological, line, base->NoDxp, b
AAC01230 MVC   80(4,R12),48(R11)   111
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,40(R11)   GAPCC091
         BASR  R14,R15
AAC01231 EQU   *
AAC01232 EQU   *
AAC01233 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01234
         L     R2,8(R2)
AAC01234 ST    R2,4(R9)   ITEM
         J     AAC01206
AAC01235 EQU   *
AAC01236 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC020
**************************
GAPCC020 CSECT
GAPCC020 AMODE ANY
GAPCC020 RMODE ANY
*XREF - GAPCC020 GAPC.CheckProcedures
*  R11 + 0000 Literals        (164 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (56 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (payableProcedure)
*        0080(R12)-> Integer len 4 (bypassHHA006Claim)
*        0084(R12)-> Integer len 4 (bypassHHA006Line)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> Integer len 4 (bypassHHA006FromBound)
*        0096(R12)-> Integer len 4 (bypassHHA006ThroughBound)
*        0100(R12)-> Integer len 4 (versionPlusOne)
*        0104(R12)-> String (si)
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Unknown ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01303
         DC    F'11' @00000
         DC    F'2' @00004
         DC    A(GAPCC113) @00008
         DC    A(DMNATFD) @00012
         DC    A(DMNSCPY) @00016
         DC    A(DMNSCMP) @00020
         DC    F'1' @00024
         DC    A(DMNLONG) @00028
         DC    F'0' @00032
         DC    A(DMNGDATX) @00036
         DC    F'69' @00040
         DC    A(GAPCC091) @00044
         DC    F'8' @00048
         DC    F'112' @00052
         DC    F'9' @00056
         DC    F'12' @00060
         DC    F'13' @00064
         DC    F'28' @00068
         DC    F'62' @00072
         DC    F'50' @00076
         DC    F'43' @00080
         DC    F'99' @00084
         DC    F'48' @00088
         DC    A(DMNSEL) @00092
         DC    F'5' @00096
         DC    A(DMNSCPYX) @00100
         DC    A(DMNZSTR) @00104
         DC    F'6' @00108
         DC    A(DMNFREE) @00112
         DC    H'10'  0 10 @00116
         DC    H'1120'  4 96 @00118
         DC    H'2'  0 2 @00120
         DC    H'1'  0 1 @00122
         DC    H'4'  0 4 @00124
         DC    H'5'  0 5 @00126
         DC    H'7'  0 7 @00128
         DC    CL2'J1' @00130
         DC    CL2'J2' @00132
         DC    CL1'P' @00134
         DC    CL2'Q1' @00135
         DC    CL2'Q2' @00137
         DC    CL2'Q3' @00139
         DC    CL1'R' @00141
         DC    CL1'S' @00142
         DC    CL1'T' @00143
         DC    CL1'U' @00144
         DC    CL1'V' @00145
         DC    CL2'32' @00146
         DC    CL2'33' @00148
         DC    CL2'13' @00150
         DC    CL2'85' @00152
         DC    CL2'E2' @00154
         DC    CL2'22' @00156
         DC    CL2'23' @00158
         DC    CL1'G' @00160
         DC    CL1'K' @00161
         DC    CL1'N' @00162
         DC    CL1'F' @00163
AAC01303 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(40,R12),72(R12)
         ST    R2,112(R12)
         XC    116(12,R12),116(R12)
* Check Procedures
* Simple procedure edits
* Edits 6, 48, 9, 50, 7, 69, 8, 9, 12, 13, 28, 62, 904 50 11 43 59
* This is done here so we can update these later when HHA moves to 30
*S702: bypassHHA006FromBound := 11;
         MVC   92(4,R12),0(R11)   11
*S703: bypassHHA006ThroughBound := 2;
         MVC   96(4,R12),4(R11)   2
* CHECK FOR OPPS PAYABLE PROCEDURES FOR E99
*S706: if( not claim->Bits->Nopps
         TM    3004(R9),1   NOPPS
         JNE   AAC01312
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC01312
         LA    R14,116(R12)
         ST    R14,60(R13)
         L     R15,8(R11)   GAPCC113
         BASR  R14,R15
         L     R15,116(R12)
         LTR   R15,R15
         JE    AAC01312
*S707: and 61 < base->Version
*S708: and do GAPC.BillTypeCompletesBuffer() ) then {
*S709: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01306 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01311
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),116(R11)   10
         MVC   66(2,R13),118(R11)   1120
         L     R15,12(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01311
*S710: si:=line->StatusIndicator;
         L     R2,72(R12)   LINE
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S711: if( si="J1" or si="J2" or si="P"
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,132(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,134(R11)   P
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,135(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,137(R11)   Q2
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,139(R11)   Q3
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,141(R11)   R
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,142(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,143(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R11)   U
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01307
         LA    R14,104(R12)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,145(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01308
*S712: or si="Q1" or si="Q2" or si="Q3"
*S713: or si="R" or si="S" or si="T"
*S714: or si="U" or si="V" ) then {
*S715: payableProcedure:=1;
AAC01307 MVC   76(4,R12),24(R11)   1
*S716: break;
         J     AAC01311
AAC01308 EQU   *
AAC01309 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01310
         L     R2,8(R2)
AAC01310 ST    R2,4(R9)   ITEM
         J     AAC01306
AAC01311 J     AAC01313
*S717: }
*S718: }
*S719: }
*S720: else payableProcedure:=1;
AAC01312 MVC   76(4,R12),24(R11)   1
* For HHA claims (32x/33x) we want to bypass edit 6 (invalid procedure
* consecutive years. Right now a HHA claim can go for 60 days (e.g Dec
* so we just check to see if we fall into this range with the extremes
*S725: if ((base->BillType = "32" or base->BillType ="33")
AAC01313 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,146(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01314
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,148(R11)   33
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01315
AAC01314 XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),32(R11)   0
         L     R15,36(R11)   DMNGDATX
         BASR  R14,R15
         L     R2,60(R13)
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         STD   F2,64(R13)
         MVC   60(4,R13),32(R11)   0
         L     R15,36(R11)   DMNGDATX
         BASR  R14,R15
         L     R3,60(R13)
         SR    R2,R3
         CHI   R2,1
         JNE   AAC01315
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),24(R11)   1
         L     R15,36(R11)   DMNGDATX
         BASR  R14,R15
         L     R2,60(R13)
         C     R2,92(R12)   BYPASSHHA006FROMBOUND
         JL    AAC01315
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),24(R11)   1
         L     R15,36(R11)   DMNGDATX
         BASR  R14,R15
         L     R2,60(R13)
         C     R2,96(R12)   BYPASSHHA006THROUGHBOUND
         JH    AAC01315
*S726: and ((gdate(base->ThruDate,0) - gdate(base->FromDate,0)) = 1)
*S727: and gdate(base->FromDate,1) >= bypassHHA006FromBound
*S728: and gdate(base->ThruDate,1) <= bypassHHA006ThroughBound) then {
*S729: bypassHHA006Claim := 1;
         MVC   80(4,R12),24(R11)   1
*S730: }
*S732: loop( item:=base->lines->first; item and (line:=&item->line, li
AAC01315 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01316 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01352
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),116(R11)   10
         MVC   66(2,R13),118(R11)   1120
         L     R15,12(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01352
*S734: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01349
         L     R3,72(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC01349
* HCPCS Found in Table
*S736: if( line->Bits->FoundHcpcs ) then {
         L     R2,72(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAC01333
* Edit 7 - not active
*S738: /*6.0 new begin-put this at start to match HPEGS Edit order on
*S739: /*NEW FOR V6.0, eff v17*/
* Edit 69 - HCPCS Coded Before Approval Date or After Termination Date
* HcpcsMap.ApprovalDt, TerminationDt Are Converted Dates That Are Not
* Codes - ONLY THOSE WHOSE APPROVAL, TERMINATION DATE IS SOMETIME OTHE
* A QUARTER. IT IS KEPT IN THE ROT SOURCE AS EITHER 0 OR DATE>0: IN YY
*S752: if( line->ApprovalDt
         L     R3,72(R12)   LINE
         L     R15,64(R3)   APPROVALDT
         LTR   R15,R15
         JE    AAC01318
         L     R4,72(R12)   LINE
         L     R15,68(R4)   TERMINATIONDT
         LTR   R15,R15
         JE    AAC01318
         L     R2,72(R12)   LINE
         L     R3,524(R2)   APPROVALDTEDIT
         CHI   R3,69
         JNE   AAC01318
         L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,60(R2)   SERVICEDATE
         CL    R4,64(R3)   APPROVALDT
         JL    AAC01317
         L     R5,72(R12)   LINE
         L     R6,72(R12)   LINE
         L     R7,60(R5)   SERVICEDATE
         CL    R7,68(R6)   TERMINATIONDT
         JNH   AAC01318
*S753: and line->TerminationDt
*S754: and line->ApprovalDtEdit=69
*S755: and (
*S756: line->ServiceDate<line->ApprovalDt
*S757: or line->ServiceDate>line->TerminationDt
*S758: ) ) then {
*S759: do GAPC.SetEdit( Edit->OutsideAppDt, line, base->NoDxp, base->N
AAC01317 MVC   116(4,R12),40(R11)   69
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S760: }
* Edit 8 - Procedure/Sex Conflict
*S763: if( line->validSex/*only check if not zero*/
AAC01318 L     R2,72(R12)   LINE
         L     R15,560(R2)   VALIDSEX
         LTR   R15,R15
         JE    AAC01319
         L     R3,72(R12)   LINE
         L     R4,1880(R9)   SEX
         C     R4,560(R3)   VALIDSEX
         JE    AAC01319
         TM    3000(R9),16   HASCC45
         JNE   AAC01319
*S764: and base->Sex<>line->validSex
*S765: and not claim->Bits->HasCc45 ) then {/*v11.1 eff. 4/1/10 cc 45
*S766: do GAPC.SetEdit( Edit->InvalidProcSex, line, base->NoDxp, base-
         MVC   116(4,R12),48(R11)   8
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S767: }
* For MEDICARE, codes cannot get edit 9 and 112. 112 trumps 9. 112 is
*V21.0 Edit 112 Lines that have this bit set do not get edit 9.
*S772: if (line->flags->InformationOnly
AAC01319 L     R2,72(R12)   LINE
         TM    1099(R2),2   INFORMATIONONLY
         JE    AAC01321
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,150(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01320
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,152(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01321
*S773: and (base->BillType="13" or base->BillType="85")) then {
*S774: do GAPC.SetEdit(Edit->InformationOnly, line, base->NoDxp, base-
AAC01320 MVC   116(4,R12),52(R11)   112
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),24(R11)   1
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
         J     AAC01323
*S775: }
* Edit 9 - Not Covered Under Any Medicare Outpatient Benefit (For reas
*S778: else if( line->Bits->NonCoveredService ) then {/*v7.2 now using
AAC01321 L     R2,72(R12)   LINE
         TM    1084(R2),32   NONCOVEREDSERVICE
         JE    AAC01322
*S779: /* 2 edit instances for edit 9 - proc here*/
*S783: do GAPC.SetEdit( Edit->NonCoveredService, line, base->NoDxp, ba
         MVC   116(4,R12),56(R11)   9
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),24(R11)   1
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S784: }
* Edit 12 - Questionable Covered Service
*S787: if( line->flags->Questionable ) then {
AAC01322 EQU   *
AAC01323 L     R2,72(R12)   LINE
         TM    1088(R2),128   QUESTIONABLE
         JE    AAC01324
*S788: do GAPC.SetEdit( Edit->Questionable, line, base->NoDxp,base->No
         MVC   116(4,R12),60(R11)   12
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S789: }
* Edit 13 - Not Paid by Medicare
* Changed to RTP in v2.2 (retro)
* Changed back to reject in v2.3 (retro)
*S794: /* 12x, 14x w.o cc 41 (pbt 2) */
*S795: /* 13x w cc 41 (pbt 3) */
*S796: /* 13x w.o cc 41 (pbt 4) */
*S797: /*(claim->PBT >= 2 and claim->PBT <= 4) removed hardcoding pbt
*S798: /*
*S799:     if( base->control->Hcpc
*S800:     and line->flags->ServiceNotPaidMcare
*S801:     and (
*S802:      base->BillType="12"
*S803:      or base->BillType="13"
*S804:      or base->BillType="14"
*S805:      or line->StatusIndicator<>"B"
*S806:     ) ) then {
*S807:      do GAPC.SetEdit( Edit->NotPaidMcare, line, base->NoDxp, ba
*S808:     }
*S809:     */
* v18.0 EFFECTIVE 2017-01-01, REDEFINED E13 AS ANY CODE WITH SI=E2
*S812: if( 65 < base->Version
AAC01324 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAC01325
         TM    1969(R9),4   HCPC
         JE    AAC01325
         TM    3004(R9),1   NOPPS
         JNE   AAC01325
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,154(R11)   E2
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01325
*S813: and base->control->Hcpc
*S814: and not claim->Bits->Nopps
*S815: and line->StatusIndicator="E2" ) then {
*S816: do GAPC.SetEdit( Edit->NotPaidMcare, line, base->NoDxp, base->N
         MVC   116(4,R12),64(R11)   13
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S817: }
* Edit 28 - Not Recognized by Medicare
*S820: if( base->control->NonMcare
AAC01325 TM    1969(R9),2   NONMCARE
         JE    AAC01326
         L     R2,72(R12)   LINE
         TM    1088(R2),64   NOTRECOGNIZEDMCARE
         JE    AAC01326
*S821: and line->flags->NotRecognizedMcare ) then {
*S822: do GAPC.SetEdit( Edit->NotRecogMcare, line, base->NoDxp, base->
         MVC   116(4,R12),68(R11)   28
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S823: }
* Edit 62 - Not Recognized by OPPS - Added 5.0, Effective 1/1/04
*S826: if( base->control->NonMcare
AAC01326 TM    1969(R9),2   NONMCARE
         JE    AAC01327
         L     R2,72(R12)   LINE
         TM    1088(R2),32   NOTRECOGNIZEDOPPS
         JE    AAC01327
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,156(R11)   22
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01327
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,158(R11)   23
         ST    R14,64(R13)
         MVC   70(2,R13),120(R11)   2
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01327
*S827: and line->flags->NotRecognizedOpps
*S828: and not ( base->BillType="22" or base->BillType="23" ) ) then {
*S829: do GAPC.SetEdit( Edit->NotRecogOPPS, line, base->NoDxp, base->N
         MVC   116(4,R12),72(R11)   62
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S830: }
* Edit 50 - Not Covered Under Any Medicare Outpatient Benefit (Statuto
*S845: if( line->flags->StatutoryExclusion ) then {/*v3.0 added eff v7
AAC01327 L     R2,72(R12)   LINE
         TM    1092(R2),4   STATUTORYEXCLUSION
         JE    AAC01328
*S846: /* 2 edit instances for edit 50 - proc here*/
*S847: do GAPC.SetEdit( Edit->StatutoryExcl, line, base->NoDxp, base->
         MVC   116(4,R12),76(R11)   50
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),24(R11)   1
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S848: }
* Edit 11 - Service Submitted for Review - v1.1 retro
*S851: if( claim->Bits->HasCc20 ) then {
AAC01328 TM    3000(R9),64   HASCC20
         JE    AAC01329
*S852: do GAPC.SetEdit( Edit->NCserviceReview, line, base->NoDxp, base
         MVC   116(4,R12),0(R11)   11
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S853: }
* Edit 43 - Blood Service with No Blood Product, V1.1
*S856: if( base->control->ProcMod
AAC01329 TM    1969(R9),1   PROCMOD
         JE    AAC01330
         L     R2,72(R12)   LINE
         TM    1090(R2),4   BLOODSERVICE
         JE    AAC01330
         TM    3003(R9),1   HADBLOODPROD
         JNE   AAC01330
*S857: and line->flags->BloodService
*S858: and not claim->Bits->HadBloodProd ) then {/*v1.1 */
*S859: do GAPC.SetEdit( Edit->BldSvcWOBldProd, line, base->NoDxp, base
         MVC   116(4,R12),80(R11)   43
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S860: }
* Edit 99 - Claim with drug or biological lacks OPPS payable procedure
* RETROACTIVE TO V62, 2016-01-01. NOTE: NO VERSION OR BILL TYPE CHECK
* ONLY REMAINS FALSE FOR VERSION 62 ONWARD FOR BILLTYPES WHERE THE BUF
* V18.0, ONLY APPLY TO BILL TYPES THAT COMPLETE THE BUFFER
*S866: if( not payableProcedure
AAC01330 L     R15,76(R12)   PAYABLEPROCEDURE
         LTR   R15,R15
         JNE   AAC01332
         L     R2,72(R12)   LINE
         TM    1098(R2),4   BYPASSE99
         JNE   AAC01332
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,160(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01331
         L     R4,72(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,161(R11)   K
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC01332
*S867: and not line->flags->BypassE99
*S868: and ( line->StatusIndicator="G" or line->StatusIndicator="K" )
*S869: do GAPC.SetEdit( Edit->DrugMissingProcedure, line, base->NoDxp,
AAC01331 MVC   116(4,R12),84(R11)   99
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
AAC01332 J     AAC01348
*S870: }
*S872: }
* HCPCS Not Found in Table But Is Blank
*S874: else if( line->Bits->BlankHcpcs ) then {
AAC01333 L     R2,72(R12)   LINE
         TM    1076(R2),64   BLANKHCPCS
         JE    AAC01337
* Edit 48 - Revenue Center Requires HCPCS
* Some revenue codes are exempt from this edit - see App. F
*S878: if( base->control->HcpcReq
         TM    1970(R9),128   HCPCREQ
         JE    AAC01334
         L     R3,72(R12)   LINE
         TM    1083(R3),64   HASINVREV
         JNE   AAC01334
         L     R4,72(R12)   LINE
         TM    1084(R4),64   BYP48
         JNE   AAC01334
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,162(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01334
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,163(R11)   F
         ST    R14,64(R13)
         MVC   70(2,R13),122(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01334
*S879: and not (
*S880: line->Bits->HasInvRev
*S881: or line->Bits->Byp48/*7.2 new flag for some codes recognized bu
*S882: or line->StatusIndicator="N"
*S888: or line->StatusIndicator="F"/*v4.1.1 correction*//*hasinvrev v4
*S890: ) ) then {
*S891: do GAPC.SetEdit( Edit->RevCntrReqHcpcs, line, base->NoDxp, base
         MVC   116(4,R12),88(R11)   48
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S892: }
* Edit 9 - Some Blank HCPCS with Revenue Code SI E get Edit 9
*S903: if( line->Bits->NonCoveredRC ) then {/*v9.0 some Blank Hcpcs E
AAC01334 L     R2,72(R12)   LINE
         TM    1082(R2),1   NONCOVEREDRC
         JE    AAC01335
*S904: /* 2 edit instances for edit 9 - rev here*/
*S905: do GAPC.SetEdit( Edit->NonCoveredService, line, base->NoDxp, ba
         MVC   116(4,R12),56(R11)   9
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),4(R11)   2
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
*S906: }
* Edit 50 - Some Blank HCPCS with rev code SI E will get Edit 50
*S909: if( line->Bits->NonCoveredRCStatExcl ) then {/*v9.0 some Blank
AAC01335 L     R2,72(R12)   LINE
         TM    1083(R2),128   NONCOVEREDRCSTATEXCL
         JE    AAC01336
*S910: /* 2 edit instances for edit 50 - rev here*/
*S911: do GAPC.SetEdit( Edit->StatutoryExcl, line, base->NoDxp, base->
         MVC   116(4,R12),76(R11)   50
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),4(R11)   2
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
AAC01336 J     AAC01347
*S912: }
*S915: }
* HCPCS Not Found in Table and is Not Blank
*S917: else{
* V20.1 Here we have a potential to bypass edit 6 based on the claim c
* we take a look at the rot to see if the code exists in the next vers
* When looking at the rot structure, new codes will always have the lo
* we need to check the lo version as it's "frozen".
*S922: reset bypassHHA006Line;
AAC01337 XC    84(4,R12),84(R12)
* NOTE: Need to do this for BAL.
*S924: versionPlusOne := 1 + base->Version;
         LHI   R2,1
         A     R2,1868(R9)   VERSION
         ST    R2,100(R12)   VERSIONPLUSONE
*S925: if (bypassHHA006Claim and gdate(line->ServiceDate,1) <= bypassH
         L     R15,80(R12)   BYPASSHHA006CLAIM
         LTR   R15,R15
         JE    AAC01345
         L     R3,72(R12)   LINE
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),24(R11)   1
         L     R15,36(R11)   DMNGDATX
         BASR  R14,R15
         L     R4,60(R13)
         C     R4,96(R12)   BYPASSHHA006THROUGHBOUND
         JH    AAC01345
*S926: loop(rc:=select DataHcpcsTbl using byHCPCS(line->Hcpcs); rc<1;
         MVC   60(2,R13),124(R11)   4
         MVC   62(2,R13),122(R11)   1
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R2,72(R12)   LINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),126(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,92(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAC01338
         L     R5,64(R13)
         L     R6,68(R13)
         AHI   R13,80
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),96(R11)   5
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3308(4,R9),5(R5)
         AHI   R13,80
         ST    R6,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,104(R11)   DMNZSTR
         BASR  R14,R15
         L     R6,60(R13)
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),96(R11)   5
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3336(5,R9),14(R5)
         AHI   R13,80
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   2
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3356(1,R9),21(R5)
         MVC   3358(23,R9),22(R5)
AAC01338 ST    R4,88(R12)   RC
AAC01339 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAC01344
*S927: if (DataHcpcsTbl -> HCPCS = line -> Hcpcs and DataHcpcsTbl->LoV
         L     R3,72(R12)   LINE
         LA    R14,3296(R9)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01341
         XR    R5,R5
         TM    3310(R9),128   LOVERSION
         JE    AAC01340
         LHI   R5,-1
AAC01340 IC    R5,3310(R9)   LOVERSION
         C     R5,100(R12)   VERSIONPLUSONE
         JNE   AAC01341
*S928: bypassHHA006Line := 1;
         MVC   84(4,R12),24(R11)   1
*S929: break;
         J     AAC01344
AAC01341 EQU   *
AAC01342 MVC   60(2,R13),128(R11)   7
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R15,92(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01343
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),96(R11)   5
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3308(4,R9),5(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,104(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),96(R11)   5
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3336(5,R9),14(R3)
         AHI   R13,72
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   2
         L     R15,100(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3356(1,R9),21(R3)
         MVC   3358(23,R9),22(R3)
AAC01343 ST    R2,88(R12)   RC
         J     AAC01339
*S930: }
*S931: }
*S932: }
* Edit 6 - Invalid HCPCS; HCPCS Not Found in HCPCS Table
* V19.2 Additional bill types were added to this edit however we do no
* V20.1 Additional bypass for edit 6 for HHA claims that span over yea
*S936: if(base->control->Hcpc and not line->Bits->isHIPPSCode and not
AAC01344 EQU   *
AAC01345 TM    1969(R9),4   HCPC
         JE    AAC01346
         L     R2,72(R12)   LINE
         TM    1086(R2),128   ISHIPPSCODE
         JNE   AAC01346
         L     R15,84(R12)   BYPASSHHA006LINE
         LTR   R15,R15
         JNE   AAC01346
*S937: do GAPC.SetEdit( Edit->InvalidHcpcs, line, base->NoDxp, base->N
         MVC   116(4,R12),108(R11)   6
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,44(R11)   GAPCC091
         BASR  R14,R15
AAC01346 EQU   *
AAC01347 EQU   *
AAC01348 EQU   *
AAC01349 EQU   *
AAC01350 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01351
         L     R2,8(R2)
AAC01351 ST    R2,4(R9)   ITEM
         J     AAC01316
AAC01352 EQU   *
AAC01353 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,112(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC021
**************************
GAPCC021 CSECT
GAPCC021 AMODE ANY
GAPCC021 RMODE ANY
*XREF - GAPCC021 GAPC.CorneaTransplant
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (transplant)
*        0076(R12)-> Integer len 4 (scanned)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01403
         DC    F'1' @00000
         DC    F'93' @00004
         DC    A(GAPCC091) @00008
AAC01403 XC    64(28,R12),64(R12)
*V17.0
* Check Cornea Transplant Edit
* Edit 93 - Corneal Tissue Processing Reported without Cornea Transpla
*S953: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC01406 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC01418
* CLEAR SCANNED FLAG FOR EACH DAY
*S955: if( scanned ) then reset scanned;
         L     R15,76(R12)   SCANNED
         LTR   R15,R15
         JE    AAC01407
         XC    76(4,R12),76(R12)
*S956: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAC01407 L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01408 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC01416
* CORNEA TISSUE PROCESSING CODE FOUND ON CURRENT DAY.
*S958: if( line->flags->CorneaTissueProcessing ) then {
         L     R2,68(R12)   LINE
         TM    1097(R2),64   CORNEATISSUEPROCESSING
         JE    AAC01414
* ATTEMPT TO FIND A CORNEA TRANSPLANT CODE FOR THE CURRENT DAY IF NOT
* THIS DOES DOUBLE DUTY: IF FOUND ON A PREVIOUS DAY, THIS WILL CLEAR T
*S961: if( not scanned ) then {
         L     R15,76(R12)   SCANNED
         LTR   R15,R15
         JNE   AAC01412
*S962: loop( transplant:=day->firstDaysItems; transplant and not trans
         L     R3,64(R12)   DAY
         MVC   72(4,R12),8(R3)   FIRSTDAYSITEMS
AAC01409 L     R15,72(R12)   TRANSPLANT
         LTR   R15,R15
         JE    AAC01411
         L     R2,72(R12)   TRANSPLANT
         TM    1097(R2),128   CORNEATRANSPLANT
         JNE   AAC01411
AAC01410 L     R2,72(R12)   TRANSPLANT
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01409
*S963: scanned:=1;
AAC01411 MVC   76(4,R12),0(R11)   1
*S964: }
* CORNEA TRANSPLANT CODE DOES NOT EXIST FOR CURRENT DAY, APPLY EDIT
*S966: if( not transplant ) then {
AAC01412 L     R15,72(R12)   TRANSPLANT
         LTR   R15,R15
         JNE   AAC01413
*S967: do GAPC.SetEdit( Edit->CorneaTransplant, line, base->NoDxp, bas
         MVC   80(4,R12),4(R11)   93
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC01413 EQU   *
AAC01414 EQU   *
AAC01415 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01408
AAC01416 EQU   *
AAC01417 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC01406
AAC01418 EQU   *
AAC01419 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC022
**************************
GAPCC022 CSECT
GAPCC022 AMODE ANY
GAPCC022 RMODE ANY
*XREF - GAPCC022 GAPC.AllogeneicTransplant
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (found)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01503
         DC    A(DMNATFD) @00000
         DC    F'1' @00004
         DC    F'100' @00008
         DC    A(GAPCC091) @00012
         DC    H'10'  0 10 @00016
         DC    H'1120'  4 96 @00018
AAC01503 XC    64(20,R12),64(R12)
*V18.0
*S980: if( claim->Bits->AllogeneicTransplant ) then {
         TM    3006(R9),32   ALLOGENEICTRANSPLANT
         JE    AAC01517
*S981: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01506 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01510
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01510
* REVENUE CODE 815 MUST BE ON A SEPARATE LINE WITH A VALID HCPCS AND N
* OTHERWISE, E100 WILL BE APPLIED TO ALL LINES FLAGGED AS ALLOGENEIC T
*S984: if( not line->flags->AllogeneicTransplant
         L     R2,64(R12)   LINE
         TM    1098(R2),8   ALLOGENEICTRANSPLANT
         JNE   AAC01507
         L     R3,64(R12)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,815
         JNE   AAC01507
*S985: and line->RevenueCode=815 ) then {
*S986: found:=1;
         MVC   68(4,R12),4(R11)   1
*S987: break;
         J     AAC01510
AAC01507 EQU   *
AAC01508 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01509
         L     R2,8(R2)
AAC01509 ST    R2,4(R9)   ITEM
         J     AAC01506
*S988: }
*S989: }
* Edit 100 - Claim for HSCT allogeneic transplantation lacks required
*S991: if( not found ) then {
AAC01510 L     R15,68(R12)   FOUND
         LTR   R15,R15
         JNE   AAC01516
*S992: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC01511 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01515
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01515
*S993: if( line->flags->AllogeneicTransplant ) then {
         L     R2,64(R12)   LINE
         TM    1098(R2),8   ALLOGENEICTRANSPLANT
         JE    AAC01512
*S994: do GAPC.SetEdit( Edit->RevenueCodeRequiredOnClaim, line, base->
         MVC   72(4,R12),8(R11)   100
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAC01512 EQU   *
AAC01513 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01514
         L     R2,8(R2)
AAC01514 ST    R2,4(R9)   ITEM
         J     AAC01511
AAC01515 EQU   *
AAC01516 EQU   *
AAC01517 EQU   *
AAC01518 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC023
**************************
GAPCC023 CSECT
GAPCC023 AMODE ANY
GAPCC023 RMODE ANY
*XREF - GAPCC023 GAPC.ImplantationEdits
*  R11 + 0000 Literals        (132 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (80 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> reference to Struct len 1120 (line2)
*        0080(R12)-> reference to Struct len 628 (day)
*        0084(R12)-> String (key1)
*        0096(R12)-> String (key2)
*        0108(R12)-> Integer len 4 (FoundDevice1)
*        0112(R12)-> Integer len 4 (FoundDevice2)
*        0116(R12)-> Integer len 4 (rc)
*        0120(R12)-> Integer len 4 (i)
*        0124(R12)-> Integer len 4 (FoundProc1)
*        0128(R12)-> Unknown ()
*        0128(R12)-> Integer len 4 ()
*        0132(R12)-> Integer len 4 ()
*        0136(R12)-> Integer len 4 ()
*        0140(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 152)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,152  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01603
         DC    A(DMNSCMP) @00000
         DC    F'38' @00004
         DC    A(GAPCC091) @00008
         DC    F'111877920' @00012
         DC    A(DMNSCPY) @00016
         DC    A(DMNATFD) @00020
         DC    A(DMNSEL) @00024
         DC    F'5' @00028
         DC    A(DMNSCPYX) @00032
         DC    F'1' @00036
         DC    F'71' @00040
         DC    F'77' @00044
         DC    A(GAPCC126) @00048
         DC    F'75' @00052
         DC    F'78' @00056
         DC    F'92' @00060
         DC    F'84' @00064
         DC    A(GAPCC119) @00068
         DC    A(GAPCC088) @00072
         DC    A(GAPCC089) @00076
         DC    F'82' @00080
         DC    A(DMNFREE) @00084
         DC    H'2'  0 2 @00088
         DC    H'1'  0 1 @00090
         DC    H'10'  0 10 @00092
         DC    H'1120'  4 96 @00094
         DC    H'4'  0 4 @00096
         DC    H'5'  0 5 @00098
         DC    H'7'  0 7 @00100
         DC    CL2'J2' @00102
         DC    CL1'H' @00104
         DC    CL1'U' @00105
         DC    CL2'12' @00106
         DC    CL1'S' @00108
         DC    CL1'T' @00109
         DC    CL1'V' @00110
         DC    CL1'X' @00111
         DC    CL2'Q3' @00112
         DC    CL2'FB' @00114
         DC    CL2'FC' @00116
         DC    CL5'33225' @00118
         DC    CL2'76' @00123
         DC    CL2'13' @00125
         DC    CL5'33249' @00127
AAC01603 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(20,R12),72(R12)
         ST    R2,92(R12)
         XC    96(8,R12),96(R12)
         ST    R2,104(R12)
         XC    108(40,R12),108(R12)
         ST    R2,148(R12)
* Check Implantation Devices and Procedures
* Edits 38, 71, 77, 75, 78, 82, 84, 92
*S1012: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   80(4,R12),60(R9)   FIRSTVISIT
AAC01606 L     R15,80(R12)   DAY
         LTR   R15,R15
         JE    AAC01721
*S1014: /*NOTE: that this logic (Edit 38) is a simplified version of w
*S1015: /*Moved Edit 38 inside day loop v6.1 due to other edits run, e
* Edit 38 - Implantation Device/Procedure Inconsistency
* V2.0, SI=H OR APC IS 987-997(Implant), AND NO SI S, T, OR X PROCEDUR
*  V3.0, ADDED CRITERIA TO EXCLUDE IGNORED LINES
* V6.1, RETROACTIVE, CHECK FOR S, T, OR X ACROSS CLAIM
* V10.1, EFFECTIVE 2009-01-01, ADDED SI U TO EDIT CRITERIA
* V16.2, EFFECTIVE 2015-01-01 (RETROACTIVE), ADDED EDIT 38 BYPASS IF S
* V19.2, Adjust the logic for suppressing E38 to not include SI = J2.
*S1023: if(not(claim->Bits->HadTypeSTX or
         TM    3004(R9),4   HADTYPESTX
         JNE   AAC01613
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAC01607
         L     R2,1868(R9)   VERSION
         CHI   R2,57
         JNH   AAC01607
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01613
*S1024: (claim->PrimaryComprehensive and 57 < base->Version
*S1025: and claim->PrimaryComprehensive->StatusIndicator<>"J2"))) then
*S1026: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAC01607 L     R2,80(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01608 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAC01612
*S1027: if( (
*S1028: line->StatusIndicator="H"
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,104(R11)   H
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01609
         L     R4,72(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   U
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC01610
AAC01609 L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01610
         L     R3,72(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC01610
*S1029: or line->StatusIndicator="U"
*S1030: )
*S1031: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1032: do GAPC.SetEdit( Edit->ImplantInconsist, line, base->NoDxp, ba
         MVC   128(4,R12),4(R11)   38
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC01610 EQU   *
AAC01611 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01608
*S1033: }
*S1034: }
*S1036: }
*S1038: /*using line2 first because of macro to loop all lines in some
*S1039: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSam
AAC01612 EQU   *
AAC01613 L     R2,80(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01614 L     R15,76(R12)   LINE2
         LTR   R15,R15
         JE    AAC01719
*S1041: if( not ( line2->Bits->IgnoreLine or line2->Bits->IgnoreInpat
         L     R2,76(R12)   LINE2
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01717
         L     R3,76(R12)   LINE2
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC01717
*S1043: /*V16.0.0, EFFECTIVED 2015-01-01 DEACTIVATED START*/
* V16.1 EFFECTIVE 2013-08-13, BYPASS EDIT 71/77 FOR THE GIVEN CODE PAI
*S1045: if( base->Version < 58
         L     R2,1868(R9)   VERSION
         CHI   R2,58
         JNL   AAC01660
         L     R3,96(R9)   FROMDATE
         CL    R3,12(R11)   111877920
         JH    AAC01615
         L     R4,76(R12)   LINE2
         TM    1096(R4),1   DEVPROCBYPASS
         JNE   AAC01660
*S1046: and ( 8/12/2013d < base->FromDate or not line2->flags->DevProc
* Edit 71 - Claim Lacks Required Device Code v6.1 eff. 4/1/05
*S1049: /*v6.3 table driven modifier exclusions*/
*S1050: if( line2->flags->HasDevicePair1
AAC01615 L     R2,76(R12)   LINE2
         TM    1093(R2),16   HASDEVICEPAIR1
         JE    AAC01641
         L     R3,76(R12)   LINE2
         TM    1080(R3),8   HASDEVICEREQEXCLUSIONMOD
         JNE   AAC01641
*S1051: and not line2->Bits->HasDeviceReqExclusionMod ) then {
*S1052: FoundDevice1:=0;
         XC    108(4,R12),108(R12)   FOUNDDEVICE1
*S1053: FoundDevice2:=0;
         XC    112(4,R12),112(R12)   FOUNDDEVICE2
*S1054: key1:=line2->Hcpcs;
         L     R2,76(R12)   LINE2
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1056: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC01616 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01636
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),92(R11)   10
         MVC   66(2,R13),94(R11)   1120
         L     R15,20(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01636
*S1061: key2:=line->Hcpcs;
         L     R2,72(R12)   LINE
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1062: if( key1<>key2 ) then {
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01629
*S1063: loop( rc:=select MapCodePairTbl using byCode( key1, key2 ); rc
         MVC   60(2,R13),96(R11)   4
         MVC   62(2,R13),90(R11)   1
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,84(R12)   KEY1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R5,73(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC01617
         L     R7,64(R13)
         AHI   R13,88
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3656(3,R9),10(R7)
AAC01617 ST    R6,116(R12)   RC
AAC01618 L     R2,116(R12)   RC
         CHI   R2,1
         JNL   AAC01628
*S1064: /* V12.2 2011-07-01 CHANGED TO INCLUSIVE LOGIC AND BUBBLED UP
*S1065: if( key1=MapCodePairTbl->Code1
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3632(R9)   CODE1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01624
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3644(R9)   CODE2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01624
*S1066: and key2=MapCodePairTbl->Code2 ) then {
*S1067: if( base->Version>=MapCodePairTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3656(R9),128   LOVERSION
         JE    AAC01619
         LHI   R14,-1
AAC01619 IC    R14,3656(R9)   LOVERSION
         CR    R2,R14
         JL    AAC01623
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3657(R9),128   HIVERSION
         JE    AAC01620
         LHI   R14,-1
AAC01620 IC    R14,3657(R9)   HIVERSION
         CR    R3,R14
         JH    AAC01623
*S1068: and base->Version<=MapCodePairTbl->HiVersion ) then {
*S1070: /*v6.1 phase 1 has possible 1st device requirement*/
*S1071: if( MapCodePairTbl->flags->DevicePair1 ) then {
         TM    3658(R9),128   DEVICEPAIR1
         JE    AAC01621
*S1072: FoundDevice1:=1;
         MVC   108(4,R12),36(R11)   1
*S1073: break;
         J     AAC01628
*S1074: }
*S1076: /*v6.3 phase 2 has possible 2nd device requirement, effective
*S1077: if( MapCodePairTbl->flags->DevicePair2 ) then {
AAC01621 TM    3658(R9),64   DEVICEPAIR2
         JE    AAC01622
*S1078: FoundDevice2:=1;
         MVC   112(4,R12),36(R11)   1
*S1079: break;
         J     AAC01628
AAC01622 EQU   *
AAC01623 J     AAC01625
*S1080: }
*S1082: }
*S1083: }
*S1084: else break;
AAC01624 J     AAC01628
AAC01625 EQU   *
AAC01626 MVC   60(2,R13),100(R11)   7
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01627
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3656(3,R9),10(R3)
AAC01627 ST    R2,116(R12)   RC
         J     AAC01618
*S1085: }
*S1086: }
*S1088: /*V12.2 2011-07-01 MADE DEVICE FOUND CHECKS CLEARER */
*S1089: if( FoundDevice1 ) then {
AAC01628 EQU   *
AAC01629 L     R15,108(R12)   FOUNDDEVICE1
         LTR   R15,R15
         JE    AAC01633
*S1090: if( line2->flags->HasDevicePair2 ) then {
         L     R2,76(R12)   LINE2
         TM    1093(R2),8   HASDEVICEPAIR2
         JE    AAC01631
*S1091: if( FoundDevice2 ) then break;
         L     R15,112(R12)   FOUNDDEVICE2
         LTR   R15,R15
         JE    AAC01630
         J     AAC01636
AAC01630 J     AAC01632
*S1092: }
*S1093: else break;
AAC01631 J     AAC01636
AAC01632 EQU   *
AAC01633 EQU   *
AAC01634 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01635
         L     R2,8(R2)
AAC01635 ST    R2,4(R9)   ITEM
         J     AAC01616
*S1094: }
*S1095: }/*all lines*/
*S1097: /* V12.2 2011-07-01 MADE DEVICE FOUND CHECKS CLEARER */
*S1098: if( not FoundDevice1
AAC01636 L     R15,108(R12)   FOUNDDEVICE1
         LTR   R15,R15
         JE    AAC01638
         L     R2,76(R12)   LINE2
         TM    1093(R2),8   HASDEVICEPAIR2
         JE    AAC01637
         L     R15,112(R12)   FOUNDDEVICE2
         LTR   R15,R15
         JE    AAC01638
AAC01637 J     AAC01640
*S1099: or ( line2->flags->HasDevicePair2 and not FoundDevice2 ) ) the
*S1100: /*V14.0, EFFECTIVE 2013-01-01 SUPPRESS EDIT WHERE DEVICE ISN'T
*TODO: FIX THIS LINE
*if( not line2->flags->DeviceReqExclusion ) then {
*S1103: if( not line2->Bits->DeviceReqExclusion ) then {
AAC01638 L     R2,76(R12)   LINE2
         TM    1087(R2),8   DEVICEREQEXCLUSION
         JNE   AAC01639
*S1104: do GAPC.SetEdit( Edit->DeviceCodeRequired, line2, base->NoDxp,
         MVC   128(4,R12),40(R11)   71
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,80(R12)   DAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1108: }
*S1109: }
*S1111: }
* Edit 77 - Claim Lacks Allowed Procedure Code V8.1 eff. 1/1/07
* Exception: Not Apply Edit 77 on BT 12x eff 1/1/07 w. v9.0
*S1115: /*BT 12x exclusion back to inception of edit, (1/1/07)*/
*S1116: if( line2->flags->HasDevReqProc
AAC01639 EQU   *
AAC01640 EQU   *
AAC01641 L     R2,76(R12)   LINE2
         TM    1092(R2),16   HASDEVREQPROC
         JE    AAC01659
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,106(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01659
*S1117: and base->BillType<>"12" ) then {
*S1118: FoundProc1:=0;
         XC    124(4,R12),124(R12)   FOUNDPROC1
*S1119: key1:=line2->Hcpcs;
         L     R2,76(R12)   LINE2
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1120: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC01642 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC01657
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),92(R11)   10
         MVC   66(2,R13),94(R11)   1120
         L     R15,20(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC01657
*S1125: key2:=line->Hcpcs;
         L     R2,72(R12)   LINE
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1126: if( key1<>key2 ) then {
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01653
*S1127: loop( rc:=select MapCodePairTbl using byCode( key1, key2 ); rc
         MVC   60(2,R13),96(R11)   4
         MVC   62(2,R13),90(R11)   1
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,84(R12)   KEY1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R5,73(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC01643
         L     R7,64(R13)
         AHI   R13,88
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3656(3,R9),10(R7)
AAC01643 ST    R6,116(R12)   RC
AAC01644 L     R2,116(R12)   RC
         CHI   R2,1
         JNL   AAC01652
*S1128: /*v6.1 phase 1 has possible 1st device requirement*/
*S1129: /* V12.2 2011-07-01 CHANGED TO INCLUSIVE LOGIC
*S1130:           AND BUBBLED UP THE VERSION CHECKS
*S1131:          */
*S1132: if( key1=MapCodePairTbl->Code1
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3632(R9)   CODE1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01648
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3644(R9)   CODE2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01648
*S1133: and key2=MapCodePairTbl->Code2 ) then {
*S1134: if( MapCodePairTbl->flags->DevReqProc
         TM    3658(R9),32   DEVREQPROC
         JE    AAC01647
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3656(R9),128   LOVERSION
         JE    AAC01645
         LHI   R14,-1
AAC01645 IC    R14,3656(R9)   LOVERSION
         CR    R2,R14
         JL    AAC01647
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3657(R9),128   HIVERSION
         JE    AAC01646
         LHI   R14,-1
AAC01646 IC    R14,3657(R9)   HIVERSION
         CR    R2,R14
         JH    AAC01647
*S1135: and base->Version>=MapCodePairTbl->LoVersion
*S1136: and base->Version<=MapCodePairTbl->HiVersion ) then {
*S1137: FoundProc1:=1;
         MVC   124(4,R12),36(R11)   1
*S1138: break;
         J     AAC01652
AAC01647 J     AAC01649
*S1139: }
*S1140: }
*S1141: else break;
AAC01648 J     AAC01652
AAC01649 EQU   *
AAC01650 MVC   60(2,R13),100(R11)   7
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01651
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3656(3,R9),10(R3)
AAC01651 ST    R2,116(R12)   RC
         J     AAC01644
*S1142: }
*S1143: }
*S1144: if( FoundProc1 ) then break;
AAC01652 EQU   *
AAC01653 L     R15,124(R12)   FOUNDPROC1
         LTR   R15,R15
         JE    AAC01654
         J     AAC01657
AAC01654 EQU   *
AAC01655 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC01656
         L     R2,8(R2)
AAC01656 ST    R2,4(R9)   ITEM
         J     AAC01642
*S1145: }
*S1147: if( not FoundProc1 ) then {
AAC01657 L     R15,124(R12)   FOUNDPROC1
         LTR   R15,R15
         JNE   AAC01658
*S1148: /* did not find a pair of Codes meeting requirement - RTP the
*S1149: do GAPC.SetEdit( Edit->ProcCodeRequired, line2, base->NoDxp, d
         MVC   128(4,R12),44(R11)   77
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,80(R12)   DAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1153: }
*S1154: }
*S1155: }
*S1156: /*V16.0.0, EFFECTIVE 2015-01-01 DEACTIVATED END*/
*S1158: /*V15.0.0, EFFECTIVE 2014-01-01 DEACTIVATED START*/
*S1159: if( base->Version < 54 ) then {
AAC01658 EQU   *
AAC01659 EQU   *
AAC01660 L     R2,1868(R9)   VERSION
         CHI   R2,54
         JNL   AAC01670
* Edit 75 - Incorrect Billing for Modifier FB or FC V8.0 eff. 1/1/07
* FB modifier must be on same line as SI S,T,V or X
* FC modifier must be on same line as SI S,T,V or X effective 1/1/08
*S1164: /*V13.0 REWRITTEN TO CONDENSE THE FB AND FC EDIT TESTS*/
*S1165: if( not (
*S1166: line2->StatusIndicator="S"
         L     R3,76(R12)   LINE2
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,108(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC01668
         L     R5,76(R12)   LINE2
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,109(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JE    AAC01668
         L     R2,76(R12)   LINE2
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,110(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01668
         L     R2,76(R12)   LINE2
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01661
         L     R4,1868(R9)   VERSION
         CHI   R4,58
         JL    AAC01668
AAC01661 L     R2,76(R12)   LINE2
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,112(R11)   Q3
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01668
*S1167: or line2->StatusIndicator="T"
*S1168: or line2->StatusIndicator="V"
*S1169: or ( line2->StatusIndicator="X" and base->Version < 58 )
*S1170: or line2->StatusIndicator="Q3"/*V13.0.0, EFFECTIVE 2012-01-01,
*S1171: )
*S1172: ) then {
*S1173: if( line2->Bits->HasFBModifier ) then {
         L     R2,76(R12)   LINE2
         TM    1078(R2),16   HASFBMODIFIER
         JE    AAC01664
*S1174: i:=0;
         XC    120(4,R12),120(R12)   I
*S1175: while( -1<(i:=do GAPC.indexOfModifier( line2, "FB", i )) ){
AAC01662 LA    R14,120(R12)   I
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,140(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   FB
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,140(R12)
         ST    R14,68(R13)
         LA    R14,120(R12)   I
         ST    R14,72(R13)
         L     R15,48(R11)   GAPCC126
         BASR  R14,R15
         L     R2,120(R12)   I
         CHI   R2,-1
         JNH   AAC01663
*S1176: do GAPC.SetEdit( Edit->FBnoSTVX, line2, base->NoDxp, base->NoD
         MVC   128(4,R12),52(R11)   75
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         LA    R14,120(R12)   I
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1177: i+=1;
         LHI   R3,1
         A     R3,120(R12)   I
         ST    R3,120(R12)   I
         J     AAC01662
*S1178: }
*S1179: }
*S1180: /*FIXME: THE VERSION CHECK EXISTS IN OCECLM (THIS FUNCTION IS
*S1181:       * THE FIRST LOCATION WILL NEVER EXECUTE THE FOLLOWING BL
*S1182:       */
*S1183: if( line2->Bits->HasFCModifier ) then {
AAC01663 EQU   *
AAC01664 L     R2,76(R12)   LINE2
         TM    1078(R2),8   HASFCMODIFIER
         JE    AAC01667
*S1184: i:=0;
         XC    120(4,R12),120(R12)   I
*S1185: while( -1<(i:=do GAPC.indexOfModifier( line2, "FC", i )) ){
AAC01665 LA    R14,120(R12)   I
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,140(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R11)   FC
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,140(R12)
         ST    R14,68(R13)
         LA    R14,120(R12)   I
         ST    R14,72(R13)
         L     R15,48(R11)   GAPCC126
         BASR  R14,R15
         L     R2,120(R12)   I
         CHI   R2,-1
         JNH   AAC01666
*S1186: do GAPC.SetEdit( Edit->FBnoSTVX, line2, base->NoDxp, base->NoD
         MVC   128(4,R12),52(R11)   75
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         LA    R14,120(R12)   I
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1187: i+=1;
         LHI   R3,1
         A     R3,120(R12)   I
         ST    R3,120(R12)   I
         J     AAC01665
*S1188: }
*S1189: }
*S1190: }
*S1192: /*FIXME: THE VERSION CHECK EXISTS IN OCECLM (THIS FUNCTION IS
*S1193:      * THE FIRST LOCATION WILL NEVER EXECUTE THE FOLLOWING BLO
*S1194:      */
*S1195: /*do other edits that are run on the same bill type*/
* Edit 78 - Radiopharmaceutical Needs Nuclear Medicine Edit V9.0 eff.
* v10.1 remove modifier bypass options, eff 1/1/08
*S1198: if( line2->flags->NuclearMed
AAC01666 EQU   *
AAC01667 EQU   *
AAC01668 L     R2,76(R12)   LINE2
         TM    1093(R2),64   NUCLEARMED
         JE    AAC01669
         TM    3005(R9),64   RADIOPHARM
         JNE   AAC01669
*S1199: and not claim->Bits->RadioPharm ) then {
*S1200: do GAPC.SetEdit( Edit->RadioPharmNuclear, line2, base->NoDxp,
         MVC   128(4,R12),56(R11)   78
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,80(R12)   DAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1201: }
*S1203: }
*S1204: /*V15.0.0, EFFECTIVE 2014-01-01 DEACTIVATED END*/
*S1206: if( 53 < base->Version and base->Version < 58 ) then {
AAC01669 EQU   *
AAC01670 L     R2,1868(R9)   VERSION
         CHI   R2,53
         JNH   AAC01677
         L     R3,1868(R9)   VERSION
         CHI   R3,58
         JNL   AAC01677
* Edit 75 - Incorrect Billing for Modifier FB or FC V15.0 eff. 1/1/14
*S1209: if( line2->Bits->HasFCModifier ) then {
         L     R2,76(R12)   LINE2
         TM    1078(R2),8   HASFCMODIFIER
         JE    AAC01673
*S1210: i:=0;
         XC    120(4,R12),120(R12)   I
*S1211: while( -1<(i:=do GAPC.indexOfModifier( line2, "FC", i )) ){
AAC01671 LA    R14,120(R12)   I
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,140(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R11)   FC
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,140(R12)
         ST    R14,68(R13)
         LA    R14,120(R12)   I
         ST    R14,72(R13)
         L     R15,48(R11)   GAPCC126
         BASR  R14,R15
         L     R2,120(R12)   I
         CHI   R2,-1
         JNH   AAC01672
*S1212: do GAPC.SetEdit( Edit->FBnoSTVX, line2, base->NoDxp, base->NoD
         MVC   128(4,R12),52(R11)   75
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         LA    R14,120(R12)   I
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1213: i+=1;
         LHI   R3,1
         A     R3,120(R12)   I
         ST    R3,120(R12)   I
         J     AAC01671
*S1214: }
*S1215: }
*S1216: if( line2->Bits->HasFBModifier ) then {
AAC01672 EQU   *
AAC01673 L     R2,76(R12)   LINE2
         TM    1078(R2),16   HASFBMODIFIER
         JE    AAC01676
*S1217: i:=0;
         XC    120(4,R12),120(R12)   I
*S1218: while( -1<(i:=do GAPC.indexOfModifier( line2, "FB", i )) ){
AAC01674 LA    R14,120(R12)   I
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,140(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   FB
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,140(R12)
         ST    R14,68(R13)
         LA    R14,120(R12)   I
         ST    R14,72(R13)
         L     R15,48(R11)   GAPCC126
         BASR  R14,R15
         L     R2,120(R12)   I
         CHI   R2,-1
         JNH   AAC01675
*S1219: do GAPC.SetEdit( Edit->FBnoSTVX, line2, base->NoDxp, base->NoD
         MVC   128(4,R12),52(R11)   75
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         LA    R14,120(R12)   I
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1220: i+=1;
         LHI   R3,1
         A     R3,120(R12)   I
         ST    R3,120(R12)   I
         J     AAC01674
*S1221: }
*S1222: }
*S1223: }
* Edit 92 - Device-dependent procedure without device code, V16.0.0, E
*S1226: if( line2->flags->DeviceProcedure
AAC01675 EQU   *
AAC01676 EQU   *
AAC01677 L     R2,76(R12)   LINE2
         TM    1095(R2),128   DEVICEPROCEDURE
         JE    AAC01684
         L     R3,1868(R9)   VERSION
         CHI   R3,57
         JNH   AAC01684
         L     R2,76(R12)   LINE2
         TM    1077(R2),32   HAS52MODIFIER
         JNE   AAC01684
         L     R3,76(R12)   LINE2
         TM    1077(R3),8   HAS73MODIFIER
         JNE   AAC01684
         L     R2,76(R12)   LINE2
         TM    1077(R2),4   HAS74MODIFIER
         JNE   AAC01684
*S1227: and 57 < base->Version
*S1228: and not (
*S1229: line2->Bits->Has52Modifier
*S1230: or line2->Bits->Has73Modifier
*S1231: or line2->Bits->Has74Modifier
*S1232: ) ) then {
*S1233: loop( line:=day->firstDaysItems; line and not line->flags->Dev
         L     R2,80(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01678 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAC01680
         L     R2,72(R12)   LINE
         TM    1095(R2),64   DEVICE
         JNE   AAC01680
AAC01679 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01678
*S1234: if( not line ) then {
AAC01680 L     R15,72(R12)   LINE
         LTR   R15,R15
         JNE   AAC01683
*S1235: if (not (base ->Version >= 74 and line2->Bits->HasCGModifier a
         L     R2,1868(R9)   VERSION
         CHI   R2,74
         JL    AAC01681
         L     R3,76(R12)   LINE2
         TM    1078(R3),64   HASCGMODIFIER
         JE    AAC01681
         L     R2,76(R12)   LINE2
         TM    1099(R2),8   EDIT92MODIFIERBYPASS
         JNE   AAC01682
*S1236: do GAPC.SetEdit( Edit->DeviceProcedure, line2, base->NoDxp, ba
AAC01681 MVC   128(4,R12),60(R11)   92
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1237: }
*S1238: }
*S1239: }
* Edit 84 - Primary Code Required For Addon Code, V13.0.0, EFFECTIVE 2
* V13.0 - V18.0
*S1243: if( 45 < base->Version
AAC01682 EQU   *
AAC01683 EQU   *
AAC01684 L     R2,1868(R9)   VERSION
         CHI   R2,45
         JNH   AAC01715
         L     R3,1868(R9)   VERSION
         CHI   R3,67
         JNL   AAC01715
         L     R2,76(R12)   LINE2
         TM    1094(R2),32   PHADDON
         JE    AAC01715
*S1244: and 67 > base->Version
*S1245: and line2->flags->PhAddon ) then {
*S1246: key1 :=line2->Hcpcs;
         L     R2,76(R12)   LINE2
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1247: FoundProc1 :=0;
         XC    124(4,R12),124(R12)   FOUNDPROC1
*S1248: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,80(R12)   DAY
         MVC   72(4,R12),8(R3)   FIRSTDAYSITEMS
AAC01685 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAC01703
*S1249: key2:=line->Hcpcs;
         L     R2,72(R12)   LINE
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1250: if( key1<>key2 ) then {
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01701
*S1251: loop( rc:=select MapPHAddonTbl using byPair( key1, key2 ); rc<
         MVC   60(2,R13),96(R11)   4
         MVC   62(2,R13),90(R11)   1
         LA    R14,3760(R9)   MAPPHADDONTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,84(R12)   KEY1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R5,73(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,96(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC01686
         L     R7,64(R13)
         AHI   R13,88
         LA    R14,3768(R9)   MAPPHADDONTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3780(R9)   MAPPHADDONTBL
         ST    R14,60(R13)
         LA    R14,5(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3792(2,R9),10(R7)
AAC01686 ST    R6,116(R12)   RC
AAC01687 L     R2,116(R12)   RC
         CHI   R2,1
         JNL   AAC01699
*S1252: if( key1=MapPHAddonTbl->Addon
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3768(R9)   ADDON
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01696
         LA    R14,96(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3780(R9)   ADDONPRIMARY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01696
*S1253: and key2=MapPHAddonTbl->AddonPrimary ) then {
*TODO: Check to see if we fixed this order
*S1256: /*WE REALLY SHOULD ONLY HAVE TO CHECK AGAINST THE LOW VERSION
*S1257: if( base->Version < MapPHAddonTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3792(R9),128   LOVERSION
         JE    AAC01688
         LHI   R14,-1
AAC01688 IC    R14,3792(R9)   LOVERSION
         CR    R2,R14
         JL    AAC01690
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3793(R9),128   HIVERSION
         JE    AAC01689
         LHI   R14,-1
AAC01689 IC    R14,3793(R9)   HIVERSION
         CR    R3,R14
         JNH   AAC01691
*S1258: or base->Version > MapPHAddonTbl->HiVersion ) then continue;
AAC01690 J     AAC01697
*S1259: /*V14.0, EFFECTIVE 2013-01-01. EDIT 84 ONLY APPLIED FOR CLAIMS
*S1260:            * 131 OR 76X OR ARE PAIRED WITH THE 33225 ADDON COD
*S1261: /*V16.0, EFFECTIVE 2015-01-01, DEACTIVATED 33225 PACKAGING*/
*S1262: if( ( base->Version < 58 and key1="33225" )
AAC01691 L     R2,1868(R9)   VERSION
         CHI   R2,58
         JNL   AAC01692
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,118(R11)   33225
         ST    R14,64(R13)
         MVC   70(2,R13),98(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01694
AAC01692 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,123(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01694
         TM    3000(R9),32   HASCC41
         JE    AAC01693
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,125(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01694
AAC01693 J     AAC01695
*S1264: or base->BillType="76"
*S1266: or ( claim->Bits->HasCc41 and base->BillType="13" ) ) then {
*S1267: FoundProc1:=1;
AAC01694 MVC   124(4,R12),36(R11)   1
*S1268: }
*S1269: }
*S1270: break;
AAC01695 EQU   *
AAC01696 J     AAC01699
AAC01697 MVC   60(2,R13),100(R11)   7
         LA    R14,3760(R9)   MAPPHADDONTBL
         ST    R14,64(R13)
         L     R15,24(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC01698
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3768(R9)   MAPPHADDONTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3780(R9)   MAPPHADDONTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   5
         L     R15,32(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3792(2,R9),10(R3)
AAC01698 ST    R2,116(R12)   RC
         J     AAC01687
*S1271: }
*S1272: if( FoundProc1 ) then break;
AAC01699 L     R15,124(R12)   FOUNDPROC1
         LTR   R15,R15
         JE    AAC01700
         J     AAC01703
AAC01700 EQU   *
AAC01701 EQU   *
AAC01702 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01685
*S1273: }
*S1274: }
*S1275: if( not FoundProc1 ) then {
AAC01703 L     R15,124(R12)   FOUNDPROC1
         LTR   R15,R15
         JNE   AAC01708
*S1276: /*V16.0, EFFECTIVE 2015-01-01, DEACTIVATED 33225 PACKAGING*/
*S1277: if( ( base->Version < 58 and key1="33225" )
         L     R2,1868(R9)   VERSION
         CHI   R2,58
         JNL   AAC01704
         LA    R14,84(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,118(R11)   33225
         ST    R14,64(R13)
         MVC   70(2,R13),98(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01706
AAC01704 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,123(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01706
         TM    3000(R9),32   HASCC41
         JE    AAC01705
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,125(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),88(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC01706
AAC01705 J     AAC01707
*S1279: or base->BillType="76"
*S1281: or ( claim->Bits->HasCc41 and base->BillType="13" ) ) then {
*S1282: do GAPC.SetEdit( Edit->PrimaryCodeRequired, line2, base->NoDxp
AAC01706 MVC   128(4,R12),64(R11)   84
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1283: }
*S1284: }
*S1286: /*THIS IS A SPECIAL COMPOSITE THAT ISN'T LISTED AS A COMPOSITE
*S1287:       * 33225 GETS PACKAGED WHEN USED IN CONJUNCTION WITH CODE
*S1288: /*V16.0, EFFECTIVE 2015-01-01, DEACTIVATED 33225 PACKAGING*/
*S1289: if( base->Version < 58 and line2->Hcpcs="33225" ) then {
AAC01707 EQU   *
AAC01708 L     R2,1868(R9)   VERSION
         CHI   R2,58
         JNL   AAC01714
         L     R3,76(R12)   LINE2
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,118(R11)   33225
         ST    R14,64(R13)
         MVC   70(2,R13),98(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC01714
*S1290: FoundProc1:=0;
         XC    124(4,R12),124(R12)   FOUNDPROC1
*S1291: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,80(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01709 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAC01712
*S1292: /* NOTE: IF ANOTHER ADDON CODE PAIR COMES INTO EXISTENCE, THEN
*S1293:        * THEY'LL NEED TO BE FLAGGED/PAIRED IN THE CODEPAIR TAB
*S1294:        */
*S1295: if( line->Hcpcs="33249" ) then {
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,127(R11)   33249
         ST    R14,64(R13)
         MVC   70(2,R13),98(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01710
*S1296: do GAPC.PackageCode( line2 );
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         L     R15,68(R11)   GAPCC119
         BASR  R14,R15
*S1297: line2->Bits->HasCardioDefibPacingPair :=1;
         L     R4,76(R12)   LINE2
         OI    1085(R4),64   HASCARDIODEFIBPACINGPAIR
*S1298: FoundProc1 |=1;
         LHI   R5,1
         O     R5,124(R12)   FOUNDPROC1
         ST    R5,124(R12)   FOUNDPROC1
AAC01710 EQU   *
AAC01711 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01709
*S1299: }
*S1300: }
*S1301: if( not FoundProc1 ) then {
AAC01712 L     R15,124(R12)   FOUNDPROC1
         LTR   R15,R15
         JNE   AAC01713
*S1302: line2->StatusIndicator:="T";
         L     R2,76(R12)   LINE2
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,109(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),90(R11)   1
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S1303: line2->PaymentIndicator:=1;/*V13.0.0 EFFECTIVE 2012-01-01, Q3
         L     R3,76(R12)   LINE2
         MVC   204(4,R3),36(R11)   1
*S1304: do GAPC.PrepPaymentMethodFlags( line2 );
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         L     R15,72(R11)   GAPCC088
         BASR  R14,R15
*S1305: do GAPC.SetAPCPay( line2 );
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         L     R15,76(R11)   GAPCC089
         BASR  R14,R15
*S1306: }
*S1307: }
*S1309: }
* Edit 82 - Charge Exceeds Token Charge ($1.01) V10.0, eff. 1/1/09
*S1312: if( line2->flags->TokenChargeOnly
AAC01713 EQU   *
AAC01714 EQU   *
AAC01715 L     R2,76(R12)   LINE2
         TM    1094(R2),16   TOKENCHARGEONLY
         JE    AAC01716
         L     R3,76(R12)   LINE2
         L     R4,564(R3)   LINECHARGES
         CHI   R4,101
         JNH   AAC01716
*S1313: and line2->LineCharges>101 ) then {
*S1314: do GAPC.SetEdit( Edit->TokenChargeOnly, line2, base->NoDxp, ba
         MVC   128(4,R12),80(R11)   82
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC01716 EQU   *
AAC01717 EQU   *
AAC01718 L     R2,76(R12)   LINE2
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01614
AAC01719 EQU   *
AAC01720 L     R2,80(R12)   DAY
         MVC   80(4,R12),0(R2)   NEXTVISIT
         J     AAC01606
AAC01721 EQU   *
AAC01722 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,84(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC024
**************************
GAPCC024 CSECT
GAPCC024 AMODE ANY
GAPCC024 RMODE ANY
*XREF - GAPCC024 GAPC.CheckSPNP
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 628 (day)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01803
         DC    F'45' @00000
         DC    A(GAPCC091) @00004
AAC01803 XC    64(20,R12),64(R12)
* Edit 45 - Separate Procedure Not Paid; V2.3
* FOR THE SAME DAY, ALL LINES WITH SI=C ARE ON THE SEPARATE PROCEDURE
* THERE IS AT LEAST ONE TYPE T ON SAME DAY OR ONE CAPC ON THE CLAIM
*S1329: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   68(4,R12),60(R9)   FIRSTVISIT
AAC01806 L     R15,68(R12)   DAY
         LTR   R15,R15
         JE    AAC01814
*S1330: if( day->Bits->HasSepProc
         L     R2,68(R12)   DAY
         TM    625(R2),128   HASSEPPROC
         JE    AAC01812
         L     R3,68(R12)   DAY
         TM    625(R3),32   HASTYPET
         JNE   AAC01807
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAC01812
AAC01807 L     R2,68(R12)   DAY
         TM    624(R2),8   DAYDENIEDE1849
         JNE   AAC01812
*S1331: and ( day->Bits->HasTypeT or claim->PrimaryComprehensive )
*S1332: and not ( day->Bits->DayDeniedE1849
*S1337: ) ) then {
*S1338: /*V7.1T added E1849 daydenial flag differentiation for past be
*S1339: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01808 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAC01811
*S1340: if( line->Bits->HasSepProc
         L     R2,64(R12)   LINE
         TM    1081(R2),1   HASSEPPROC
         JE    AAC01809
         L     R3,64(R12)   LINE
         C     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         JE    AAC01809
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC01809
*S1341: and line<>claim->PrimaryComprehensive
*S1342: and not line->Bits->IgnoreLine ) then {
*S1343: do GAPC.SetEdit( Edit->SepProcNotPaid, line, base->NoDxp, base
         MVC   72(4,R12),0(R11)   45
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAC01809 EQU   *
AAC01810 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01808
AAC01811 EQU   *
AAC01812 EQU   *
AAC01813 L     R2,68(R12)   DAY
         MVC   68(4,R12),0(R2)   NEXTVISIT
         J     AAC01806
AAC01814 EQU   *
AAC01815 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC025
**************************
GAPCC025 CSECT
GAPCC025 AMODE ANY
GAPCC025 RMODE ANY
*XREF - GAPCC025 GAPC.CheckCodeDependency
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> String (procedure)
*        0068(R12)-> String (device)
*        0072(R12)-> Integer len 4 (edit)
*  R12 + 0076 Locals & temps  (24 bytes)
*        0076(R12)-> reference to Struct len 628 (day)
*        0080(R12)-> reference to Struct len 1120 (line)
*        0084(R12)-> Integer len 4 (excluded)
*        0088(R12)-> BitString (exists)
*        0092(R12)-> Integer len 4 ()
*        0096(R12)-> Unknown ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC01903
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    A(GAPCC091) @00008
AAC01903 XC    76(24,R12),76(R12)
* CheckDependentCode, Code Dependency Required
* Edits 85
*S1363: if( procedure=device ) then return;
         MVC   60(4,R13),64(R12)   PROCEDURE
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   DEVICE
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC01906
         J     AAC01939
*S1364: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
AAC01906 MVC   76(4,R12),60(R9)   FIRSTVISIT
AAC01907 L     R15,76(R12)   DAY
         LTR   R15,R15
         JE    AAC01938
*S1365: exists->a:=0;
         NI    88(R12),127   A
*S1366: exists->b:=0;
         NI    88(R12),191   B
*S1367: /* FIND ANY CODE DEPENDENCIES, IGNORE ANY PROCEDURES WITH MODI
*S1368: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,76(R12)   DAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAC01908 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAC01923
*S1369: if( line->Hcpcs=procedure ) then {
         L     R2,80(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),64(R12)   PROCEDURE
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01918
*S1370: if( line->Bits->Has52Modifier
         L     R4,80(R12)   LINE
         TM    1077(R4),32   HAS52MODIFIER
         JNE   AAC01909
         XR    R5,R5
         J     AAC01910
AAC01909 LHI   R5,1
AAC01910 L     R6,80(R12)   LINE
         TM    1077(R6),8   HAS73MODIFIER
         JNE   AAC01911
         XR    R7,R7
         J     AAC01912
AAC01911 LHI   R7,1
AAC01912 OR    R5,R7
         L     R8,80(R12)   LINE
         TM    1077(R8),4   HAS74MODIFIER
         JNE   AAC01913
         XR    R2,R2
         J     AAC01914
AAC01913 LHI   R2,1
AAC01914 OR    R5,R2
         LTR   R5,R5
         JE    AAC01915
*S1371: | line->Bits->Has73Modifier
*S1372: | line->Bits->Has74Modifier ) then {
*S1373: excluded:=1;
         MVC   84(4,R12),4(R11)   1
         J     AAC01917
*S1374: }
*S1375: else{
*S1376: exists->a:=1;
AAC01915 OI    88(R12),128   A
*S1377: if( exists->b ) then break;
         TM    88(R12),64   B
         JE    AAC01916
         J     AAC01923
AAC01916 EQU   *
AAC01917 J     AAC01921
*S1378: }
*S1379: }
*S1380: else if( line->Hcpcs=device ) then {
AAC01918 L     R2,80(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   DEVICE
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC01920
*S1381: exists->b:=1;
         OI    88(R12),64   B
*S1382: if( exists->a ) then break;
         TM    88(R12),128   A
         JE    AAC01919
         J     AAC01923
AAC01919 EQU   *
AAC01920 EQU   *
AAC01921 EQU   *
AAC01922 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01908
*S1383: }
*S1384: }
* Edit 85 - Dependant Code Required, Effective 2012-01-01
*S1387: /* IF ONLY ONE IS FOUND, ASSIGN AN EDIT, IGNORING ANY PROCEDUR
*S1388: exists->a ^= exists->b;
AAC01923 TM    88(R12),128   A
         JNE   AAC01924
         XR    R2,R2
         J     AAC01925
AAC01924 LHI   R2,1
AAC01925 EQU   *
AAC01926 TM    88(R12),64   B
         JNE   AAC01927
         XR    R3,R3
         J     AAC01928
AAC01927 LHI   R3,1
AAC01928 ST    R3,92(R12)
         X     R2,92(R12)
         LTR   R2,R2
         JNE   AAC01929
         NI    88(R12),127   A
         J     AAC01930
AAC01929 OI    88(R12),128   A
*S1389: if( exists->a ) then {
AAC01930 TM    88(R12),128   A
         JE    AAC01936
*S1390: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,76(R12)   DAY
         MVC   80(4,R12),8(R3)   FIRSTDAYSITEMS
AAC01931 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAC01935
*S1391: if( (line->Hcpcs=procedure or line->Hcpcs=device)
         L     R2,80(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),64(R12)   PROCEDURE
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC01932
         L     R4,80(R12)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   DEVICE
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC01933
AAC01932 L     R15,84(R12)   EXCLUDED
         LTR   R15,R15
         JNE   AAC01933
*S1392: and not excluded ) then
*S1393: do GAPC.SetEdit( edit, line, base->NoDxp, base->NoDay, 0, 0 );
         MVC   64(4,R13),72(R12)   EDIT
         LA    R14,80(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC01933 EQU   *
AAC01934 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC01931
AAC01935 EQU   *
AAC01936 EQU   *
AAC01937 L     R2,76(R12)   DAY
         MVC   76(4,R12),0(R2)   NEXTVISIT
         J     AAC01907
AAC01938 EQU   *
AAC01939 EQU   *
AAC01940 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC026
**************************
GAPCC026 CSECT
GAPCC026 AMODE ANY
GAPCC026 RMODE ANY
*XREF - GAPCC026 GAPC.SkinSubstituteLogic
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02003
         DC    A(GAPCC119) @00000
AAC02003 XC    64(8,R12),64(R12)
* No Edit
*S1411: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC02006 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02016
*S1412: loop( line:=day->firstDaysItems; line and not line->flags->Ski
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02007 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02009
         L     R2,68(R12)   LINE
         TM    1094(R2),8   SKINSUBSTITUTESG
         JNE   AAC02009
AAC02008 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02007
*S1413: if( not line ) then {
AAC02009 L     R15,68(R12)   LINE
         LTR   R15,R15
         JNE   AAC02014
*S1414: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02010 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02013
*S1415: if( line->flags->SkinSubstitute
         L     R2,68(R12)   LINE
         TM    1094(R2),4   SKINSUBSTITUTE
         JE    AAC02011
*S1420: ) then {
*S1421: do GAPC.PackageCode( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,0(R11)   GAPCC119
         BASR  R14,R15
AAC02011 EQU   *
AAC02012 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02010
AAC02013 EQU   *
AAC02014 EQU   *
AAC02015 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC02006
AAC02016 EQU   *
AAC02017 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC027
**************************
GAPCC027 CSECT
GAPCC027 AMODE ANY
GAPCC027 RMODE ANY
*XREF - GAPCC027 GAPC.SkinSubstituteLogic2
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (24 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (line2)
*        0076(R12)-> Unknown ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02103
         DC    A(DMNSCMP) @00000
         DC    F'87' @00004
         DC    A(GAPCC091) @00008
         DC    H'1'  0 1 @00012
         DC    CL1'2' @00014
AAC02103 XC    64(24,R12),64(R12)
* Edit 87
*S1440: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC02106 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02132
*S1441: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02107 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02130
* Edit 87 - Skin substitute application procedure without appropriate
*S1443: if( line->flags->SkinSubstituteSgLo ) then {
         L     R2,68(R12)   LINE
         TM    1095(R2),32   SKINSUBSTITUTESGLO
         JE    AAC02117
*S1444: loop( line2:=day->firstDaysItems; line2 and not line2->flags->
         L     R3,64(R12)   DAY
         MVC   72(4,R12),8(R3)   FIRSTDAYSITEMS
AAC02108 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02110
         L     R2,72(R12)   LINE2
         TM    1095(R2),16   SKINSUBSTITUTELO
         JNE   AAC02110
AAC02109 L     R2,72(R12)   LINE2
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02108
* V16.3, EFFECTIVE 2015-10-01. SCAN ITEMS IGNORED WITH LIAF=2 FOR POTE
*S1446: if( not line2 and 60 < base->Version ) then {
AAC02110 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JNE   AAC02115
         L     R2,1868(R9)   VERSION
         CHI   R2,60
         JNH   AAC02115
*S1447: loop( line2:=day->firstDaysItemsIgnored; line2 and not ( line2
         L     R2,64(R12)   DAY
         MVC   72(4,R12),16(R2)   FIRSTDAYSITEMSIGNORED
AAC02111 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02114
         L     R2,72(R12)   LINE2
         TM    1095(R2),16   SKINSUBSTITUTELO
         JE    AAC02112
         L     R3,72(R12)   LINE2
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC02114
AAC02112 EQU   *
AAC02113 L     R2,72(R12)   LINE2
         MVC   72(4,R12),4(R2)   NEXTSAMEDAYIGNORED
         J     AAC02111
*S1448: }
*S1449: if( not line2 ) then {
AAC02114 EQU   *
AAC02115 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JNE   AAC02116
*S1450: do GAPC.SetEdit( Edit->SkinSubstitute, line, base->NoDxp, base
         MVC   76(4,R12),4(R11)   87
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,80(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC02116 J     AAC02128
*S1451: }
*S1452: }
*S1453: else if( line->flags->SkinSubstituteSgHi ) then {
AAC02117 L     R2,68(R12)   LINE
         TM    1095(R2),8   SKINSUBSTITUTESGHI
         JE    AAC02127
*S1454: loop( line2:=day->firstDaysItems; line2 and not line2->flags->
         L     R3,64(R12)   DAY
         MVC   72(4,R12),8(R3)   FIRSTDAYSITEMS
AAC02118 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02120
         L     R2,72(R12)   LINE2
         TM    1095(R2),4   SKINSUBSTITUTEHI
         JNE   AAC02120
AAC02119 L     R2,72(R12)   LINE2
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02118
* V16.3, EFFECTIVE 2015-10-01. SCAN ITEMS IGNORED WITH LIAF=2 FOR POTE
*S1456: if( not line2 and 60 < base->Version ) then {
AAC02120 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JNE   AAC02125
         L     R2,1868(R9)   VERSION
         CHI   R2,60
         JNH   AAC02125
*S1457: loop( line2:=day->firstDaysItemsIgnored; line2 and not ( line2
         L     R2,64(R12)   DAY
         MVC   72(4,R12),16(R2)   FIRSTDAYSITEMSIGNORED
AAC02121 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02124
         L     R2,72(R12)   LINE2
         TM    1095(R2),4   SKINSUBSTITUTEHI
         JE    AAC02122
         L     R3,72(R12)   LINE2
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC02124
AAC02122 EQU   *
AAC02123 L     R2,72(R12)   LINE2
         MVC   72(4,R12),4(R2)   NEXTSAMEDAYIGNORED
         J     AAC02121
*S1458: }
*S1459: if( not line2 ) then {
AAC02124 EQU   *
AAC02125 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JNE   AAC02126
*S1460: do GAPC.SetEdit( Edit->SkinSubstitute, line, base->NoDxp, base
         MVC   76(4,R12),4(R11)   87
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,80(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC02126 EQU   *
AAC02127 EQU   *
AAC02128 EQU   *
AAC02129 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02107
AAC02130 EQU   *
AAC02131 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC02106
AAC02132 EQU   *
AAC02133 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC028
**************************
GAPCC028 CSECT
GAPCC028 AMODE ANY
GAPCC028 RMODE ANY
*XREF - GAPCC028 GAPC.CheckModifiers
*  R11 + 0000 Literals        (88 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (56 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> Integer len 4 (rc)
*        0084(R12)-> String (m1)
*        0096(R12)-> String (m2)
*        0108(R12)-> Integer len 4 (j)
*        0112(R12)-> Integer len 4 (applied)
*        0116(R12)-> Unknown ()
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02203
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNSEL) @00012
         DC    F'2' @00016
         DC    A(DMNSCPYX) @00020
         DC    F'1' @00024
         DC    A(DMNZSTR) @00028
         DC    F'22' @00032
         DC    A(GAPCC091) @00036
         DC    F'103' @00040
         DC    F'102' @00044
         DC    A(DMNFREE) @00048
         DC    H'2'  0 2 @00052
         DC    H'10'  0 10 @00054
         DC    H'1120'  4 96 @00056
         DC    H'4'  0 4 @00058
         DC    H'1'  0 1 @00060
         DC    H'7'  0 7 @00062
         DC    CL2'32' @00064
         DC    CL2'72' @00066
         DC    CL2'74' @00068
         DC    CL2'75' @00070
         DC    CL2'76' @00072
         DC    CL2'78' @00074
         DC    CL2'81' @00076
         DC    CL2'82' @00078
         DC    CL2'83' @00080
         DC    CL2'84' @00082
         DC    CL2'89' @00084
         DC    CL2'  ' @00086
AAC02203 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(20,R12),72(R12)
         ST    R2,92(R12)
         XC    96(8,R12),96(R12)
         ST    R2,104(R12)
         XC    108(20,R12),108(R12)
* Check for Valid Modifiers
* Edits 22, 102, 103
* Bill types in this list are applicable to invalid modifier (edit 22)
* no other modifier related processing.
* Note: We set this here as this flag is used beyond this modifier
* frame in cases where the HCPCS map flag ModifierEdits is overloaded.
*S1481: claim->Bits->IsAuxModEditApp :=
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,64(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   72
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   74
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   75
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,74(R11)   78
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,76(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,78(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,80(R11)   83
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,82(R11)   84
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R11)   89
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02206
         OI    3006(R9),16   ISAUXMODEDITAPP
         J     AAC02207
AAC02206 NI    3006(R9),239   ISAUXMODEDITAPP
*S1482: base->BillType <> "32"
*S1483: and base->BillType <> "72"
*S1484: and base->BillType <> "74"
*S1485: and base->BillType <> "75"
*S1486: and base->BillType <> "76"
*S1487: and base->BillType <> "78"
*S1488: and base->BillType <> "81"
*S1489: and base->BillType <> "82"
*S1490: and base->BillType <> "83"
*S1491: and base->BillType <> "84"
*S1492: and base->BillType <> "89";
*S1494: loop( item:=base->lines->first; item and (line:=&item->line, l
AAC02207 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC02208 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC02248
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),54(R11)   10
         MVC   66(2,R13),56(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC02248
*S1495: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02245
         L     R3,72(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02245
*S1497: for (i:=0 until 5-1){
         XC    76(4,R12),76(R12)   I
AAC02209 L     R2,76(R12)   I
         CHI   R2,4
         JH    AAC02226
*S1498: if (line->Modifiers[i]<="  ") then break;
         L     R3,72(R12)   LINE
         LA    R4,84(R3)   MODIFIERS
         L     R5,76(R12)   I
         MHI   R5,12
         AR    R4,R5
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JH    AAC02210
         J     AAC02226
*S1499: loop(
*S1500: rc:=select DataModifierTbl using byModifier(line->Modifiers[i]
AAC02210 MVC   60(2,R13),58(R11)   4
         MVC   62(2,R13),60(R11)   1
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         L     R2,72(R12)   LINE
         LA    R3,84(R2)   MODIFIERS
         L     R4,76(R12)   I
         MHI   R4,12
         AR    R3,R4
         LA    R5,68(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),52(R11)   2
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC02211
         L     R7,64(R13)
         L     R8,68(R13)
         AHI   R13,80
         LA    R14,3392(R9)   DATAMODIFIERTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3404(2,R9),2(R7)
         AHI   R13,80
         ST    R8,60(R13)
         LA    R14,3408(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,28(R11)   DMNZSTR
         BASR  R14,R15
         L     R8,60(R13)
         AHI   R13,-80
         MVC   3420(5,R9),4(R7)
AAC02211 ST    R6,80(R12)   RC
AAC02212 L     R2,80(R12)   RC
         CHI   R2,1
         JNL   AAC02219
*S1501: rc<1;
*S1502: rc:=select next DataModifierTbl
*S1503: ){
*S1504: if(line->Modifiers[i]<>DataModifierTbl->Modif) then {
         L     R3,72(R12)   LINE
         LA    R4,84(R3)   MODIFIERS
         L     R5,76(R12)   I
         MHI   R5,12
         AR    R4,R5
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3392(R9)   MODIF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JE    AAC02213
*S1505: rc:=1;
         MVC   80(4,R12),24(R11)   1
*S1506: break;
         J     AAC02219
*S1507: }
*S1508: if (base->Version>=DataModifierTbl->LoVersion
AAC02213 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3404(R9),128   LOVERSION
         JE    AAC02214
         LHI   R14,-1
AAC02214 IC    R14,3404(R9)   LOVERSION
         CR    R2,R14
         JL    AAC02216
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3405(R9),128   HIVERSION
         JE    AAC02215
         LHI   R14,-1
AAC02215 IC    R14,3405(R9)   HIVERSION
         CR    R3,R14
         JH    AAC02216
*S1509: and base->Version<=DataModifierTbl->HiVersion) then break;
         J     AAC02219
AAC02216 EQU   *
AAC02217 MVC   60(2,R13),62(R11)   7
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC02218
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3392(R9)   DATAMODIFIERTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3404(2,R9),2(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3408(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,28(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         MVC   3420(5,R9),4(R3)
AAC02218 ST    R2,80(R12)   RC
         J     AAC02212
*S1510: }
* Edit 22 - Invalid Modifier; Not Found In Table
* Only generate if revenue code is not 540 from V3.0 ONWARD
* v7.0 added DateActivated check
* V19.0
* Edit 102 - Modifier conflict reported V20.0 Modified
* Edit 103 - Modifier in table but line item date beyond activation da
* V19.2 - Added additional bill types to this edit but omitting HIPPS
*S1519: if (rc and line->RevenueCode<>540 and line->Bits->FoundRevenue
AAC02219 L     R15,80(R12)   RC
         LTR   R15,R15
         JE    AAC02220
         L     R2,72(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,540
         JE    AAC02220
         L     R2,72(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAC02220
         L     R2,72(R12)   LINE
         TM    1086(R2),128   ISHIPPSCODE
         JNE   AAC02220
*S1520: do GAPC.SetEdit( Edit->InvalidModifier, line, base->NoDxp, bas
         MVC   116(4,R12),32(R11)   22
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         LA    R14,76(R12)   I
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
         J     AAC02224
*S1521: }
* Certain bill types are not applicable to these additional edits.
*S1523: else if( claim->Bits->IsAuxModEditApp ) then {
AAC02220 TM    3006(R9),16   ISAUXMODEDITAPP
         JE    AAC02223
* We only want to generate 103 if the claim is reported on or after th
* but before the activation date for the modifier.
*S1526: if (DataModifierTbl->DateActivated
         L     R15,3420(R9)   DATEACTIVATED
         LTR   R15,R15
         JE    AAC02222
         L     R2,72(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,3420(R9)   DATEACTIVATED
         JNL   AAC02222
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3404(R9),128   LOVERSION
         JE    AAC02221
         LHI   R14,-1
AAC02221 IC    R14,3404(R9)   LOVERSION
         CR    R2,R14
         JL    AAC02222
*S1527: and line->ServiceDate < DataModifierTbl->DateActivated
*S1528: and base->Version >= DataModifierTbl->LoVersion) then {
*S1529: do GAPC.SetEdit(Edit->MidquarterModifier, line, base->NoDxp, b
         MVC   116(4,R12),40(R11)   103
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         LA    R14,76(R12)   I
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
AAC02222 EQU   *
AAC02223 EQU   *
AAC02224 EQU   *
AAC02225 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAC02209
*S1530: }
*S1531: }
*S1532: }
* V20.0
* NOTE: NEED TWO OR MORE TO CONDUCT THE CHECK
* MAINTAINER NOTE: The conflict flag is used at this time in case this
* future with additional flags even though this table doesn't have any
* We want the same restrictions on this edit as we have on edit 22 (in
*S1539: if( 1 < line->ModCount and not line->Bits->isHIPPSCode ) then
AAC02226 L     R2,72(R12)   LINE
         L     R3,1032(R2)   MODCOUNT
         CHI   R3,1
         JNH   AAC02244
         L     R4,72(R12)   LINE
         TM    1086(R4),128   ISHIPPSCODE
         JNE   AAC02244
*S1540: if( applied ) then {
         L     R15,112(R12)   APPLIED
         LTR   R15,R15
         JE    AAC02227
*S1541: reset applied;
         XC    112(4,R12),112(R12)
*S1542: }
*S1543: loop( i:=line->ModCount-1; 0 < i and not applied; i-=1 ){
AAC02227 L     R2,72(R12)   LINE
         L     R3,1032(R2)   MODCOUNT
         AHI   R3,-1
         ST    R3,76(R12)   I
AAC02228 L     R2,76(R12)   I
         LTR   R2,R2
         JNH   AAC02243
         L     R15,112(R12)   APPLIED
         LTR   R15,R15
         JNE   AAC02243
*S1544: m1:=line->Modifiers[i];
         L     R2,72(R12)   LINE
         LA    R3,84(R2)   MODIFIERS
         L     R4,76(R12)   I
         MHI   R4,12
         AR    R3,R4
         LA    R14,84(R12)   M1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S1545: loop( j:=i-1; -1 < j and not applied; j-=1 ){
         L     R5,76(R12)   I
         AHI   R5,-1
         ST    R5,108(R12)   J
AAC02229 L     R2,108(R12)   J
         CHI   R2,-1
         JNH   AAC02241
         L     R15,112(R12)   APPLIED
         LTR   R15,R15
         JNE   AAC02241
*S1546: m2:=line->Modifiers[j];
         L     R2,72(R12)   LINE
         LA    R3,84(R2)   MODIFIERS
         L     R4,108(R12)   J
         MHI   R4,12
         AR    R3,R4
         LA    R14,96(R12)   M2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S1547: loop( rc:=select MapModifierConflictTbl using byPair( m1, m2 )
         MVC   60(2,R13),58(R11)   4
         MVC   62(2,R13),60(R11)   1
         LA    R14,3708(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,64(R13)
         LA    R5,68(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),52(R11)   2
         LA    R14,84(R12)   M1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R6,70(R13)
         AHI   R13,80
         ST    R6,60(R13)
         MVC   68(2,R13),52(R11)   2
         LA    R14,96(R12)   M2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
         CHI   R7,1
         JH    AAC02230
         L     R8,64(R13)
         AHI   R13,80
         LA    R14,3716(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,60(R13)
         ST    R8,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3728(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,60(R13)
         LA    R14,2(R8)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3740(2,R9),4(R8)
AAC02230 ST    R7,80(R12)   RC
AAC02231 L     R2,80(R12)   RC
         CHI   R2,1
         JNL   AAC02239
         L     R15,112(R12)   APPLIED
         LTR   R15,R15
         JNE   AAC02239
*S1548: if( m1 = MapModifierConflictTbl->Modifier1
         LA    R14,84(R12)   M1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3716(R9)   MODIFIER1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC02235
         LA    R14,96(R12)   M2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3728(R9)   MODIFIER2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02235
*S1549: and m2 = MapModifierConflictTbl->Modifier2 ) then {
*S1550: if( base->Version >= MapModifierConflictTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3740(R9),128   LOVERSION
         JE    AAC02232
         LHI   R14,-1
AAC02232 IC    R14,3740(R9)   LOVERSION
         CR    R2,R14
         JL    AAC02234
         XR    R3,R3
         TM    3741(R9),128   HIVERSION
         JE    AAC02233
         LHI   R3,-1
AAC02233 IC    R3,3741(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JL    AAC02234
*S1551: and MapModifierConflictTbl->HiVersion >= base->Version ) then
*S1552: do GAPC.SetEdit( Edit->ModifierConflict, line, base->NoDxp, ba
         MVC   116(4,R12),44(R11)   102
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,36(R11)   GAPCC091
         BASR  R14,R15
*S1553: applied:=1;
         MVC   112(4,R12),24(R11)   1
AAC02234 J     AAC02236
*S1554: }
*S1555: }
*S1556: else break;
AAC02235 J     AAC02239
AAC02236 EQU   *
AAC02237 MVC   60(2,R13),62(R11)   7
         LA    R14,3708(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC02238
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3716(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3728(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3740(2,R9),4(R3)
AAC02238 ST    R2,80(R12)   RC
         J     AAC02231
AAC02239 EQU   *
AAC02240 L     R2,108(R12)   J
         AHI   R2,-1
         ST    R2,108(R12)   J
         J     AAC02229
AAC02241 EQU   *
AAC02242 L     R2,76(R12)   I
         AHI   R2,-1
         ST    R2,76(R12)   I
         J     AAC02228
AAC02243 EQU   *
AAC02244 EQU   *
AAC02245 EQU   *
AAC02246 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC02247
         L     R2,8(R2)
AAC02247 ST    R2,4(R9)   ITEM
         J     AAC02208
AAC02248 EQU   *
AAC02249 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,48(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC029
**************************
GAPCC029 CSECT
GAPCC029 AMODE ANY
GAPCC029 RMODE ANY
*XREF - GAPCC029 GAPC.CheckBilaterals
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (36 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (firstBilat)
*        0076(R12)-> reference to Struct len 1120 (lastBilat)
*        0080(R12)-> reference to Struct len 1120 (biline)
*        0084(R12)-> Integer len 4 (bicondition)
*        0088(R12)-> Unknown ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02303
         DC    A(DMNSCMP) @00000
         DC    F'4' @00004
         DC    F'17' @00008
         DC    F'2' @00012
         DC    A(GAPCC091) @00016
         DC    H'1'  0 1 @00020
         DC    CL1'V' @00022
AAC02303 XC    64(36,R12),64(R12)
* Bilateral Procedure Logic
* Edits 16 and 17
*S1576: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC02306 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02342
*S1578: reset firstBilat;
         XC    72(4,R12),72(R12)
*S1579: reset lastBilat;
         XC    76(4,R12),76(R12)
*S1580: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02307 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02324
*S1582: if((line->flags->BilateralInherent)
         L     R2,68(R12)   LINE
         TM    1088(R2),1   BILATERALINHERENT
         JE    AAC02322
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAC02322
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAC02322
*S1583: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1584: {
*S1585: /* look at bilaterals already listed - see if this one is a re
*S1586: loop( biline:=firstBilat; biline; biline:=biline->nextEdit ){
         MVC   80(4,R12),72(R12)   FIRSTBILAT
AAC02308 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JE    AAC02311
*S1587: if( line->Hcpcs=biline->Hcpcs ) then break;
         L     R2,68(R12)   LINE
         L     R3,80(R12)   BILINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC02309
         J     AAC02311
AAC02309 EQU   *
AAC02310 L     R2,80(R12)   BILINE
         MVC   80(4,R12),8(R2)   NEXTEDIT
         J     AAC02308
*S1588: }
* NO OTHER PROCEDURE LIKE THIS ON THE LIST
*S1591: if( not biline ) then {
AAC02311 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JNE   AAC02317
*S1593: if( lastBilat ) then {
         L     R15,76(R12)   LASTBILAT
         LTR   R15,R15
         JE    AAC02312
*S1594: lastBilat->nextEdit:=line;
         L     R2,76(R12)   LASTBILAT
         MVC   8(4,R2),68(R12)   LINE
         J     AAC02313
*S1595: }
*S1596: else firstBilat:=line;
AAC02312 MVC   72(4,R12),68(R12)   LINE
*S1597: lastBilat:=line;
AAC02313 MVC   76(4,R12),68(R12)   LINE
*S1598: reset line->nextEdit;
         L     R2,68(R12)   LINE
         XC    8(4,R2),8(R2)
*S1600: if( line->ServiceUnits>1 ) then {/*v1.1 retro */
         L     R3,68(R12)   LINE
         L     R4,468(R3)   SERVICEUNITS
         CHI   R4,1
         JNH   AAC02314
*S1601: biline:=line;/*v1.1 retro */
         MVC   80(4,R12),68(R12)   LINE
         J     AAC02316
*S1602: }
*S1603: else{
*S1604: /*first line with only 1 unit*/
*S1605: /*mod 76 exempt: v10.1, eff 1/1/00; mod 77 exempt: v10.3, eff
*S1606: if( not ( line->Bits->Has76Modifier or line->Bits->Has77Modifi
AAC02314 L     R2,68(R12)   LINE
         TM    1077(R2),2   HAS76MODIFIER
         JNE   AAC02315
         L     R3,68(R12)   LINE
         TM    1077(R3),1   HAS77MODIFIER
         JNE   AAC02315
*S1614: ) then {
*S1615: line->bilinecnt_no_exempt+=line->ServiceUnits;
         L     R2,68(R12)   LINE
         L     R3,68(R12)   LINE
         L     R4,68(R12)   LINE
         L     R5,1028(R3)   BILINECNT_NO_EXEMPT
         A     R5,468(R4)   SERVICEUNITS
         ST    R5,1028(R2)   BILINECNT_NO_EXEMPT
*S1616: }
*S1617: }
*S1618: }
* THIS BILATERAL LINE EITHER HAS MORE THAN ONE UNIT OR HAS A HCPCS ALR
*S1621: if( biline ) then {/* either one with ServiceUnits > 1 or more
AAC02315 EQU   *
AAC02316 EQU   *
AAC02317 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JE    AAC02321
* Have two bilateral procedures with the same HCPCS code
*S1624: if( line->Bits->Has50Modifier ) then {
         L     R2,68(R12)   LINE
         TM    1077(R2),64   HAS50MODIFIER
         JE    AAC02318
*S1625: biline->Bits->HasOtherBilatWith50:=1;
         L     R3,80(R12)   BILINE
         OI    1080(R3),4   HASOTHERBILATWITH50
         J     AAC02319
*S1626: }
*S1627: else {
*S1628: biline->Bits->HasOtherBilatWO50:=1;
AAC02318 L     R2,80(R12)   BILINE
         OI    1080(R2),2   HASOTHERBILATWO50
*S1629: }
*S1631: /*mod 76 exempt: v10.1, eff 1/1/00; mod 77 exempt: v10.3, eff
*S1632: if( not ( line->Bits->Has76Modifier or line->Bits->Has77Modifi
AAC02319 L     R2,68(R12)   LINE
         TM    1077(R2),2   HAS76MODIFIER
         JNE   AAC02320
         L     R3,68(R12)   LINE
         TM    1077(R3),1   HAS77MODIFIER
         JNE   AAC02320
*S1640: ) then
*S1641: biline->bilinecnt_no_exempt+=line->ServiceUnits;
         L     R2,80(R12)   BILINE
         L     R3,80(R12)   BILINE
         L     R4,68(R12)   LINE
         L     R5,1028(R3)   BILINECNT_NO_EXEMPT
         A     R5,468(R4)   SERVICEUNITS
         ST    R5,1028(R2)   BILINECNT_NO_EXEMPT
AAC02320 EQU   *
AAC02321 EQU   *
AAC02322 EQU   *
AAC02323 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02307
*S1642: }
*S1644: }
*S1646: }
* Loop through list of bilateral procedure codes found
*S1649: loop( biline:=firstBilat; biline; biline:=biline->nextEdit ){
AAC02324 MVC   80(4,R12),72(R12)   FIRSTBILAT
AAC02325 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JE    AAC02340
*S1651: bicondition := Bilateral->OnlyOne;/* initially zero */
         XC    84(4,R12),84(R12)   BICONDITION
* Inherent bilateral - with or without mod 50
*S1654: if( biline->flags->BilateralInherent ) then {
         L     R2,80(R12)   BILINE
         TM    1088(R2),1   BILATERALINHERENT
         JE    AAC02329
*S1656: if( biline->Bits->HasOtherBilatWith50
         L     R3,80(R12)   BILINE
         TM    1080(R3),4   HASOTHERBILATWITH50
         JNE   AAC02326
         L     R4,80(R12)   BILINE
         TM    1080(R4),2   HASOTHERBILATWO50
         JE    AAC02328
*S1657: or biline->Bits->HasOtherBilatWO50 ) then {
* Exempt if 2nd and subsequent line or units without
* 10.3 mod 76; 10.3 mod 77 eff earliest date
*S1664: if( biline->bilinecnt_no_exempt>1 ) then {
AAC02326 L     R2,80(R12)   BILINE
         L     R3,1028(R2)   BILINECNT_NO_EXEMPT
         CHI   R3,1
         JNH   AAC02327
*S1665: bicondition := Bilateral->MultInherent;
         MVC   84(4,R12),4(R11)   4
*S1666: }
*S1668: }
*S1670: }
* Know what bilateral condition we have - now we set edits
*S1673: switch( bicondition )
AAC02327 EQU   *
AAC02328 EQU   *
AAC02329 L     R2,84(R12)   BICONDITION
         LTR   R2,R2
         JL    AAC02338
         CHI   R2,4
         JH    AAC02338
         SLL   R2,2(R0)
         BRAS  R14,AAC02337
         J     AAC02330
         J     AAC02338
         J     AAC02338
         J     AAC02338
         J     AAC02331
AAC02337 B     0(R2,R14)
*S1674: {
*S1675: case Bilateral->OnlyOne:
*S1676: break;
AAC02330 J     AAC02338
*S1677: case Bilateral->MultInherent:
*S1678: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAC02331 L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02332 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02336
*S1679: {
*S1680: if( line->Hcpcs=biline->Hcpcs
         L     R2,68(R12)   LINE
         L     R3,80(R12)   BILINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC02334
         L     R5,68(R12)   LINE
         TM    1081(R5),64   IGNORELINE
         JNE   AAC02334
         L     R6,68(R12)   LINE
         TM    1081(R6),32   IGNOREINPAT
         JNE   AAC02334
         L     R2,68(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02333
         TM    3001(R9),128   HASCCG0
         JNE   AAC02334
*S1681: and not (
*S1682: line->Bits->IgnoreLine
*S1683: or line->Bits->IgnoreInpat
*S1684: or ( line->StatusIndicator="V" and claim->Bits->HasCcG0 )/*v7.
*S1685: ) ) then {
* Edit 17 - multiple conditional or independent bilateral
* changed to RTP - v1.1 retro
*S1688: do GAPC.SetEdit( Edit->MultipleBilateral, line, base->NoDxp, b
AAC02333 MVC   88(4,R12),8(R11)   17
         LA    R14,88(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   92(4,R12),12(R11)   2
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
AAC02334 EQU   *
AAC02335 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02332
*S1689: }
*S1690: }
*S1691: break;
AAC02336 EQU   *
AAC02338 EQU   *
AAC02339 L     R2,80(R12)   BILINE
         MVC   80(4,R12),8(R2)   NEXTEDIT
         J     AAC02325
AAC02340 EQU   *
AAC02341 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC02306
AAC02342 EQU   *
AAC02343 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC030
**************************
GAPCC030 CSECT
GAPCC030 AMODE ANY
GAPCC030 RMODE ANY
*XREF - GAPCC030 GAPC.CheckTerminated
*  R11 + 0000 Literals        (32 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (bilateralWithModifier50)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02403
         DC    A(DMNATFD) @00000
         DC    F'37' @00004
         DC    A(GAPCC091) @00008
         DC    A(DMNSCMP) @00012
         DC    F'74' @00016
         DC    F'1' @00020
         DC    H'10'  0 10 @00024
         DC    H'1120'  4 96 @00026
         DC    H'2'  0 2 @00028
         DC    CL2'85' @00030
AAC02403 XC    64(20,R12),64(R12)
* Terminated procedure edits
* Edits 37, 74
* v7.3 Bilateral Unit edit
*S1705: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC02406 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC02418
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),24(R11)   10
         MVC   66(2,R13),26(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC02418
*S1707: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02415
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02415
*S1709: bilateralWithModifier50 := ( line->Bits->Has50Modifier and ( l
         L     R2,64(R12)   LINE
         TM    1077(R2),64   HAS50MODIFIER
         JE    AAC02408
         L     R3,64(R12)   LINE
         TM    1088(R3),4   BILATERALCONDITIONAL
         JNE   AAC02407
         L     R4,64(R12)   LINE
         TM    1088(R4),2   BILATERALINDEPENDENT
         JE    AAC02408
AAC02407 LHI   R2,1
         J     AAC02409
AAC02408 XR    R2,R2
AAC02409 ST    R2,68(R12)   BILATERALWITHMODIFIER50
* Edit 37 - Terminated Conditional or Independent Bilateral Procedure
*S1712: /*v3.0; eff 4/1/06, v7.1 add mod 52 to the test*/
*S1713: if( ( bilateralWithModifier50 or 1<line->ServiceUnits )
         LTR   R2,R2
         JNE   AAC02410
         L     R3,64(R12)   LINE
         L     R4,468(R3)   SERVICEUNITS
         CHI   R4,1
         JNH   AAC02412
AAC02410 L     R2,64(R12)   LINE
         TM    1077(R2),8   HAS73MODIFIER
         JNE   AAC02411
         L     R3,64(R12)   LINE
         TM    1077(R3),32   HAS52MODIFIER
         JE    AAC02412
*S1714: and ( line->Bits->Has73Modifier or line->Bits->Has52Modifier )
*S1715: do GAPC.SetEdit( Edit->TerminatedProcedure, line, base->NoDxp,
AAC02411 MVC   72(4,R12),4(R11)   37
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1716: }
* v7.3 eff 10/1/06
* Edit 74 - Units Greater Than 1 for Conditional/Independent Bilateral
*S1720: /*v11.0 Nopps 85x has different implementation see E74RollUp*/
*S1721: if( bilateralWithModifier50
AAC02412 L     R15,68(R12)   BILATERALWITHMODIFIER50
         LTR   R15,R15
         JE    AAC02414
         L     R2,64(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         CHI   R3,1
         JNH   AAC02414
         TM    3004(R9),1   NOPPS
         JE    AAC02413
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   2
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02414
*S1722: and 1<line->ServiceUnits
*S1723: and not ( claim->Bits->Nopps and base->BillType="85" ) ) then
*S1724: do GAPC.SetEdit( Edit->Modif50BilatUnits, line, base->NoDxp, b
AAC02413 MVC   72(4,R12),16(R11)   74
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   76(4,R12),20(R11)   1
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC02414 EQU   *
AAC02415 EQU   *
AAC02416 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC02417
         L     R2,8(R2)
AAC02417 ST    R2,4(R9)   ITEM
         J     AAC02406
AAC02418 EQU   *
AAC02419 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC031
**************************
GAPCC031 CSECT
GAPCC031 AMODE ANY
GAPCC031 RMODE ANY
*XREF - GAPCC031 GAPC.CheckCompComp
*  R11 + 0000 Literals        (32 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line1)
*        0072(R12)-> reference to Struct len 1120 (line2)
*        0076(R12)-> Integer len 4 (rc)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02503
         DC    A(DMNSEL) @00000
         DC    A(DMNSCMP) @00004
         DC    F'20' @00008
         DC    A(GAPCC091) @00012
         DC    F'40' @00016
         DC    H'4'  0 4 @00020
         DC    H'1'  0 1 @00022
         DC    H'2'  0 2 @00024
         DC    H'7'  0 7 @00026
         DC    CL2'85' @00028
AAC02503 XC    64(28,R12),64(R12)
* Check NCCI Comprehensive-Component
* Edits 20, 40
*S1740: loop( day:=base->firstVisit; day; day:=day->nextVisit )
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC02506 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02535
*S1741: {
*S1742: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSam
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02507 L     R15,68(R12)   LINE1
         LTR   R15,R15
         JE    AAC02533
*S1743: {
*S1744: if( line1->flags->NcciCode1
         L     R2,68(R12)   LINE1
         TM    1089(R2),128   NCCICODE1
         JE    AAC02531
         L     R3,68(R12)   LINE1
         TM    1081(R3),64   IGNORELINE
         JNE   AAC02531
         L     R4,68(R12)   LINE1
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAC02531
*S1745: and not (line1->Bits->IgnoreLine or line1->Bits->IgnoreInpat)
*S1746: {
*S1747: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSam
         L     R2,64(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02508 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02530
*S1748: {
*S1749: if( line2<>line1
         L     R2,72(R12)   LINE2
         C     R2,68(R12)   LINE1
         JE    AAC02528
         L     R3,72(R12)   LINE2
         TM    1089(R3),64   NCCICODE2
         JE    AAC02528
         L     R2,72(R12)   LINE2
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02528
         L     R3,72(R12)   LINE2
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02528
*S1750: and line2->flags->NcciCode2
*S1751: and not (line2->Bits->IgnoreLine or line2->Bits->IgnoreInpat)
*S1752: {
*S1753: loop( rc:=select MapNCCITbl using byCompComp( line1->Index, li
         MVC   60(2,R13),20(R11)   4
         MVC   62(2,R13),22(R11)   1
         LA    R14,3744(R9)   MAPNCCITBL
         ST    R14,64(R13)
         L     R2,68(R12)   LINE1
         LA    R3,68(R13)
         L     R4,444(R2)   INDEX
         STH   R4,0(R3)
         L     R5,72(R12)   LINE2
         LA    R6,70(R13)
         L     R7,444(R5)   INDEX
         STH   R7,0(R6)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R8,60(R13)
         CHI   R8,1
         JH    AAC02509
         L     R2,64(R13)
         MVC   3752(7,R9),0(R2)
AAC02509 ST    R8,76(R12)   RC
AAC02510 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAC02527
*S1754: rc<1;
*S1755: rc:=select next MapNCCITbl
*S1756: ){
*S1757: /*DOES INDEXED CODE PAIR EXIST, IF NOT BREAK AND TRY NEXT ITEM
*S1758: if( line1->Index=MapNCCITbl->Index1
         L     R3,68(R12)   LINE1
         L     R4,444(R3)   INDEX
         CH    R4,3752(R9)   INDEX1
         JNE   AAC02524
         L     R5,72(R12)   LINE2
         L     R6,444(R5)   INDEX
         CH    R6,3754(R9)   INDEX2
         JNE   AAC02524
*S1759: and line2->Index=MapNCCITbl->Index2 ) then {
*S1760: /*IS INDEXED CODE PAIR VALID FOR VERSION, IF NOT LOOKUP NEXT I
* V19.3 We don't want to edit an NCCI pair across revenue code groups
*S1762: if((base->Version < MapNCCITbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3756(R9),128   LOVERSION
         JE    AAC02511
         LHI   R14,-1
AAC02511 IC    R14,3756(R9)   LOVERSION
         CR    R2,R14
         JL    AAC02518
         XR    R3,R3
         TM    3757(R9),128   HIVERSION
         JE    AAC02512
         LHI   R3,-1
AAC02512 IC    R3,3757(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JL    AAC02518
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC02517
         L     R3,68(R12)   LINE1
         TM    1084(R3),1   HASPROFSERVICERC
         JNE   AAC02513
         XR    R4,R4
         J     AAC02514
AAC02513 LHI   R4,1
AAC02514 L     R5,72(R12)   LINE2
         TM    1084(R5),1   HASPROFSERVICERC
         JNE   AAC02515
         XR    R6,R6
         J     AAC02516
AAC02515 LHI   R6,1
AAC02516 XR    R4,R6
         LTR   R4,R4
         JNE   AAC02518
AAC02517 J     AAC02519
*S1763: or MapNCCITbl->HiVersion < base->Version)
*S1764: or ( base->BillType = "85" and ( line1->Bits->HasProfServiceRC
*S1765: continue;
AAC02518 J     AAC02525
         J     AAC02523
*S1766: }
* Edit 20 - have comp/comp pair; modifier not relevant
*S1768: else if( not MapNCCITbl->ModIndicator ) then {
AAC02519 CLI   3758(R9),0   MODINDICATOR
         JNE   AAC02520
*S1769: do GAPC.SetEdit( Edit->CompCompMod0, line2, base->NoDxp, base-
         MVC   80(4,R12),8(R11)   20
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
         J     AAC02522
*S1773: }
* Edit 40 - have comp/comp pair; no valid NCCI modifier
*S1775: else if( MapNCCITbl->ModIndicator
AAC02520 CLI   3758(R9),0   MODINDICATOR
         JE    AAC02521
         L     R2,68(R12)   LINE1
         TM    1079(R2),16   HASNCCIMODIFIER
         JNE   AAC02521
         L     R3,72(R12)   LINE2
         TM    1079(R3),16   HASNCCIMODIFIER
         JNE   AAC02521
*S1776: and not ( line1->Bits->HasNcciModifier or line2->Bits->HasNcci
*S1777: do GAPC.SetEdit( Edit->CompCompMod1, line2, base->NoDxp, base-
         MVC   80(4,R12),16(R11)   40
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE2
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S1781: }
*S1782: }
*S1783: break;
AAC02521 EQU   *
AAC02522 EQU   *
AAC02523 EQU   *
AAC02524 J     AAC02527
AAC02525 MVC   60(2,R13),26(R11)   7
         LA    R14,3744(R9)   MAPNCCITBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC02526
         L     R3,64(R13)
         MVC   3752(7,R9),0(R3)
AAC02526 ST    R2,76(R12)   RC
         J     AAC02510
AAC02527 EQU   *
AAC02528 EQU   *
AAC02529 L     R2,72(R12)   LINE2
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02508
AAC02530 EQU   *
AAC02531 EQU   *
AAC02532 L     R2,68(R12)   LINE1
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02507
AAC02533 EQU   *
AAC02534 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC02506
AAC02535 EQU   *
AAC02536 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC032
**************************
GAPCC032 CSECT
GAPCC032 AMODE ANY
GAPCC032 RMODE ANY
*XREF - GAPCC032 GAPC.CheckMedSurgSameDay
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Integer len 4 (hasSiST)
*        0076(R12)-> Integer len 4 (hasSiVandNoModifier25)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02603
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    F'21' @00008
         DC    A(GAPCC091) @00012
         DC    H'1'  0 1 @00016
         DC    CL1'T' @00018
         DC    CL1'S' @00019
         DC    CL1'V' @00020
AAC02603 XC    64(28,R12),64(R12)
* Medical and Procedure visits on the same day
* Edits 21
*S1799: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC02606 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02621
*S1800: hasSiST :=0;
         XC    72(4,R12),72(R12)   HASSIST
*S1801: hasSiVandNoModifier25 :=0;
         XC    76(4,R12),76(R12)   HASSIVANDNOMODIFIER25
*S1802: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02607 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02614
*S1803: if( line->Bits->FoundHcpcs
         L     R2,68(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAC02612
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAC02612
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAC02612
*S1804: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1805: if( line->StatusIndicator="T"
         L     R2,68(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC02608
         L     R4,68(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,19(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC02609
*S1806: or line->StatusIndicator="S" ) then {
*S1812: hasSiST:=1;
AAC02608 MVC   72(4,R12),4(R11)   1
         J     AAC02611
*S1813: }
*S1814: else if( line->StatusIndicator="V"
AAC02609 L     R2,68(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02610
         L     R4,68(R12)   LINE
         TM    1077(R4),128   HAS25MODIFIER
         JNE   AAC02610
*S1815: and not line->Bits->Has25Modifier ) then {
*S1816: hasSiVandNoModifier25:=1;
         MVC   76(4,R12),4(R11)   1
AAC02610 EQU   *
AAC02611 EQU   *
AAC02612 EQU   *
AAC02613 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02607
*S1817: }
*S1818: }
*S1819: }
* Edit 21 - Medical Visit and Major Procedure on Same Day without Modi
*S1822: if( hasSiST and hasSiVandNoModifier25 ) then {
AAC02614 L     R15,72(R12)   HASSIST
         LTR   R15,R15
         JE    AAC02619
         L     R15,76(R12)   HASSIVANDNOMODIFIER25
         LTR   R15,R15
         JE    AAC02619
*S1823: /*NOW RELOCATE SI=V LINE(S) WITHOUT MODIFIER 25 AND APPLY EDIT
*S1824: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02615 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC02618
*S1825: if( line->Bits->FoundHcpcs
         L     R2,68(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAC02616
         L     R3,68(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC02616
         L     R2,68(R12)   LINE
         TM    1077(R2),128   HAS25MODIFIER
         JNE   AAC02616
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAC02616
         L     R2,68(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAC02616
*S1826: and line->StatusIndicator="V"
*S1827: and not (line->Bits->Has25Modifier or line->Bits->IgnoreLine o
*S1828: do GAPC.SetEdit( Edit->VisitAndSurgNo25, line, base->NoDxp, ba
         MVC   80(4,R12),8(R11)   21
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAC02616 EQU   *
AAC02617 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02615
AAC02618 EQU   *
AAC02619 EQU   *
AAC02620 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC02606
AAC02621 EQU   *
AAC02622 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC033
**************************
GAPCC033 CSECT
GAPCC033 AMODE ANY
GAPCC033 RMODE ANY
*XREF - GAPCC033 GAPC.CheckMultMedSameDay
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 1120 (gdup)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> Integer len 4 (RevCount)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02703
         DC    A(GAPCC112) @00000
         DC    A(DMNSCMP) @00004
         DC    F'42' @00008
         DC    F'1' @00012
         DC    A(GAPCC091) @00016
         DC    F'2' @00020
         DC    H'1'  0 1 @00024
         DC    CL1'V' @00026
AAC02703 XC    64(28,R12),64(R12)
* Multiple Medical Visits on Same day
* Edits 42
*S1848: do GAPC.resetDoneWithThisEdit();
         L     R15,0(R11)   GAPCC112
         BASR  R14,R15
*S1850: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAC02706 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAC02722
*S1851: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02707 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAC02720
* Find all HCPCS that have service unit maximums; total up the units f
*S1853: if( line->StatusIndicator="V"
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02717
         L     R4,64(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAC02717
         L     R5,64(R12)   LINE
         TM    1081(R5),4   DONE_WITH_THIS_EDIT
         JNE   AAC02717
*S1854: and not (
*S1855: line->Bits->IgnoreLine
*S1856: or line->Bits->done_with_this_edit
*S1857: ) ) then {
*S1858: RevCount :=0;
         XC    76(4,R12),76(R12)   REVCOUNT
*S1862: loop( gdup:=day->firstDaysItems; gdup; gdup:=gdup->nextSameDay
         L     R2,72(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC02708 L     R15,68(R12)   GDUP
         LTR   R15,R15
         JE    AAC02711
*S1863: if( gdup->StatusIndicator="V"
         L     R2,68(R12)   GDUP
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02709
         L     R4,68(R12)   GDUP
         L     R5,64(R12)   LINE
         L     R6,464(R4)   REVENUECODE
         C     R6,464(R5)   REVENUECODE
         JNE   AAC02709
         L     R2,68(R12)   GDUP
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02709
         L     R3,68(R12)   GDUP
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02709
*S1864: and gdup->RevenueCode=line->RevenueCode/*v2.0 retro*/
*S1865: and not (gdup->Bits->IgnoreLine or gdup->Bits->IgnoreInpat) )
*S1866: RevCount+=gdup->ServiceUnitsPay;
         L     R2,68(R12)   GDUP
         L     R3,76(R12)   REVCOUNT
         A     R3,568(R2)   SERVICEUNITSPAY
         ST    R3,76(R12)   REVCOUNT
AAC02709 EQU   *
AAC02710 L     R2,68(R12)   GDUP
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02708
*S1871: }
*S1872: }
*S1874: /* RevCount will be g.t 1 if a) two or more lines have the sam
*S1875: /* or      b) one or more lines have multiple units */
*S1876: if( 1 < RevCount
AAC02711 L     R2,76(R12)   REVCOUNT
         CHI   R2,1
         JNH   AAC02716
*S1881: ) then {
*S1882: loop( gdup:=day->firstDaysItems; gdup; gdup:=gdup->nextSameDay
         L     R3,72(R12)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAC02712 L     R15,68(R12)   GDUP
         LTR   R15,R15
         JE    AAC02715
*S1883: if( gdup->StatusIndicator="V"
         L     R2,68(R12)   GDUP
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC02713
         L     R4,68(R12)   GDUP
         L     R5,64(R12)   LINE
         L     R6,464(R4)   REVENUECODE
         C     R6,464(R5)   REVENUECODE
         JNE   AAC02713
         L     R2,68(R12)   GDUP
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02713
         L     R3,68(R12)   GDUP
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02713
*S1884: and gdup->RevenueCode=line->RevenueCode
*S1885: and not (gdup->Bits->IgnoreLine or gdup->Bits->IgnoreInpat) )
* Edit 42 - two or more E&M with same revenue code
*S1887: do GAPC.SetEdit( Edit->DupEmSameRevCode, gdup, base->NoDxp, ba
         MVC   80(4,R12),8(R11)   42
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   GDUP
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   84(4,R12),12(R11)   1
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
*S1888: gdup->Bits->done_with_this_edit:=1;
         L     R2,68(R12)   GDUP
         OI    1081(R2),4   DONE_WITH_THIS_EDIT
AAC02713 EQU   *
AAC02714 L     R2,68(R12)   GDUP
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02712
*S1889: }
*S1890: }
*S1891: do GAPC.SetEdit( Edit->DupEmSameRevCode, base->NoLine, base->N
AAC02715 MVC   80(4,R12),8(R11)   42
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   84(4,R12),20(R11)   2
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
AAC02716 J     AAC02718
*S1892: }
*S1893: }
*S1894: else{
*S1895: line->Bits->done_with_this_edit:=1;
AAC02717 L     R2,64(R12)   LINE
         OI    1081(R2),4   DONE_WITH_THIS_EDIT
AAC02718 EQU   *
AAC02719 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02707
AAC02720 EQU   *
AAC02721 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAC02706
AAC02722 EQU   *
AAC02723 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC034
**************************
GAPCC034 CSECT
GAPCC034 AMODE ANY
GAPCC034 RMODE ANY
*XREF - GAPCC034 GAPC.DoOthObsPbtEdits
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (32 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (line2)
*        0076(R12)-> Integer len 4 (traumaRevenueCodeFound)
*        0080(R12)-> Integer len 4 (criticalCareFound)
*        0084(R12)-> Unknown ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02803
         DC    A(DMNATFD) @00000
         DC    F'66' @00004
         DC    A(GAPCC091) @00008
         DC    F'67' @00012
         DC    F'68' @00016
         DC    F'83' @00020
         DC    F'1' @00024
         DC    F'76' @00028
         DC    H'10'  0 10 @00032
         DC    H'1120'  4 96 @00034
AAC02803 XC    64(32,R12),64(R12)
* Edits 66, 67, 68, 83, 905, 76
*S1909: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC02806 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC02827
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),32(R11)   10
         MVC   66(2,R13),34(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC02827
*S1911: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
         L     R2,68(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02824
         L     R3,68(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC02824
* Edit 66 - Code Requires Manual Pricing
* VERSION 14+
* - RETRO to 1/1/04 (V14/5.0): NEW FOR V5.2
*S1916: if( line->flags->UnclassifiedDrug ) then {
         L     R2,68(R12)   LINE
         TM    1092(R2),1   UNCLASSIFIEDDRUG
         JE    AAC02807
*S1917: do GAPC.SetEdit( Edit->ReqManPricing, line, base->NoDxp, base-
         MVC   84(4,R12),4(R11)   66
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1918: }
* HcpcsMap.ApprovalDt is the activation date for a code when activated
* other than the beginning of a quarter (in the rot source as 0 or yyy
*S1922: if( line->ApprovalDtEdit
AAC02807 L     R2,68(R12)   LINE
         L     R15,524(R2)   APPROVALDTEDIT
         LTR   R15,R15
         JE    AAC02812
         L     R3,68(R12)   LINE
         L     R15,64(R3)   APPROVALDT
         LTR   R15,R15
         JE    AAC02812
         L     R2,68(R12)   LINE
         L     R3,68(R12)   LINE
         L     R4,60(R2)   SERVICEDATE
         CL    R4,64(R3)   APPROVALDT
         JNL   AAC02812
*S1923: and line->ApprovalDt
*S1924: and line->ServiceDate < line->ApprovalDt ) then {
*S1926: switch( line->ApprovalDtEdit ){
         L     R2,68(R12)   LINE
         L     R3,524(R2)   APPROVALDTEDIT
         CHI   R3,67
         JE    AAC02808
         CHI   R3,68
         JE    AAC02809
         J     AAC02810
* Edit 67 - Service Provided Prior to FDA Approval Date
*S1929: case Edit->BeforeApprDt:
*S1930: do GAPC.SetEdit( Edit->BeforeApprDt, line, base->NoDxp, base->
AAC02808 MVC   84(4,R12),12(R11)   67
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1931: break;
         J     AAC02811
* Edit 68 - Service Provided Prior to NDA Approval Date
*S1934: case Edit->NotNCDApproved:
*S1935: do GAPC.SetEdit( Edit->NotNCDApproved, line, base->NoDxp, base
AAC02809 MVC   84(4,R12),16(R11)   68
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1936: break;
         J     AAC02811
*S1945: default: break;
*S1947: }
*S1949: }
*S1951: /*v10.0 new EDIT 83 Let ROT values indicate effective dates of
* Edit 83 - Service Provided After NCD Termination Date, v10.0
*S1954: if( line->TerminationDt
AAC02810 EQU   *
AAC02811 EQU   *
AAC02812 L     R2,68(R12)   LINE
         L     R15,68(R2)   TERMINATIONDT
         LTR   R15,R15
         JE    AAC02813
         L     R3,68(R12)   LINE
         L     R4,524(R3)   APPROVALDTEDIT
         CHI   R4,83
         JNE   AAC02813
         L     R2,68(R12)   LINE
         L     R3,68(R12)   LINE
         L     R4,60(R2)   SERVICEDATE
         CL    R4,68(R3)   TERMINATIONDT
         JNH   AAC02813
*S1955: and line->ApprovalDtEdit = Edit->NCDTermination
*S1956: and line->ServiceDate > line->TerminationDt ) then {
*S1957: do GAPC.SetEdit( Edit->NCDTermination, line, base->NoDxp, base
         MVC   84(4,R12),20(R11)   83
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1958: }
*S1959: /*
* Edit 76 - Trauma Response Code Requires Specific Trauma RC and CPT
* v8.0, eff 1/1/07
*S1962:    if( line->flags->TraumaRevenueCode ) then {
*S1963:     day:=base->DayArray+line->DayIndex;
*S1964:     if( not ( day->Bits->HasTraumaRC and day->Bits->HasCCReqdW
*S1965:      do GAPC.SetEdit( Edit->TraumaActReqd, line, base->NoDxp,
*S1966:     }
*S1967:    }
*S1968:    */
* Edit 76 - Trauma Response Code Requires Specific Trauma RC and CPT
* v8.0, eff 1/1/07
*S1973: if( line->flags->TraumaRevenueCode ) then {
AAC02813 L     R2,68(R12)   LINE
         TM    1091(R2),2   TRAUMAREVENUECODE
         JE    AAC02823
*S1974: if( not day
         L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC02814
         L     R3,68(R12)   LINE
         L     R4,64(R9)   DAYARRAY
         L     R5,448(R3)   DAYINDEX
         MHI   R5,628
         AR    R4,R5
         C     R4,64(R12)   DAY
         JE    AAC02820
*S1975: or day<>( &base->DayArray[line->DayIndex] ) ) then {
*S1976: reset traumaRevenueCodeFound;
AAC02814 XC    76(4,R12),76(R12)
*S1977: reset criticalCareFound;
         XC    80(4,R12),80(R12)
*S1978: day:=base->DayArray+line->DayIndex;
         L     R2,68(R12)   LINE
         L     R3,448(R2)   DAYINDEX
         MHI   R3,628
         A     R3,64(R9)   DAYARRAY
         ST    R3,64(R12)   DAY
*S1979: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSam
         L     R4,64(R12)   DAY
         MVC   72(4,R12),8(R4)   FIRSTDAYSITEMS
AAC02815 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAC02819
*S1980: if( line2->RevenueCode>=680 and line2->RevenueCode<=689 ) then
         L     R2,72(R12)   LINE2
         L     R3,464(R2)   REVENUECODE
         CHI   R3,680
         JL    AAC02816
         L     R4,72(R12)   LINE2
         L     R5,464(R4)   REVENUECODE
         CHI   R5,689
         JH    AAC02816
*S1981: traumaRevenueCodeFound:=1;
         MVC   76(4,R12),24(R11)   1
*S1982: }
*S1983: if( line2->flags->TraumaCriticalCare ) then {
AAC02816 L     R2,72(R12)   LINE2
         TM    1091(R2),1   TRAUMACRITICALCARE
         JE    AAC02817
*S1984: criticalCareFound:=1;
         MVC   80(4,R12),24(R11)   1
AAC02817 EQU   *
AAC02818 L     R2,72(R12)   LINE2
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC02815
*S1985: }
*S1986: }
*S1987: }
*S1988: if( not ( traumaRevenueCodeFound and criticalCareFound ) ) the
AAC02819 EQU   *
AAC02820 L     R15,76(R12)   TRAUMAREVENUECODEFOUND
         LTR   R15,R15
         JE    AAC02821
         L     R15,80(R12)   CRITICALCAREFOUND
         LTR   R15,R15
         JNE   AAC02822
*S1989: do GAPC.SetEdit( Edit->TraumaActReqd, line, base->NoDxp, base-
AAC02821 MVC   84(4,R12),28(R11)   76
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC02822 EQU   *
AAC02823 EQU   *
AAC02824 EQU   *
AAC02825 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC02826
         L     R2,8(R2)
AAC02826 ST    R2,4(R9)   ITEM
         J     AAC02806
AAC02827 EQU   *
AAC02828 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC035
**************************
GAPCC035 CSECT
GAPCC035 AMODE ANY
GAPCC035 RMODE ANY
*XREF - GAPCC035 GAPC.E53
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (bypass)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC02903
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    F'53' @00008
         DC    A(GAPCC091) @00012
         DC    H'2'  0 2 @00016
         DC    H'10'  0 10 @00018
         DC    H'1120'  4 96 @00020
         DC    CL2'13' @00022
         DC    CL2'85' @00024
AAC02903 XC    64(20,R12),64(R12)
*S2002: bypass := (
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC02907
         TM    3004(R9),1   NOPPS
         JE    AAC02906
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC02907
AAC02906 LHI   R2,0
         J     AAC02908
AAC02907 LHI   R2,1
AAC02908 ST    R2,68(R12)   BYPASS
*S2003: base->BillType="13"
*S2004: or ( claim->Bits->Nopps
*S2005: and ( base->BillType="85"
*S2011: )
*S2012: )
*S2013: )? 1 : 0;
*S2015: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC02909 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC02914
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),18(R11)   10
         MVC   66(2,R13),20(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC02914
* Edit 53 - Codes Can Only Be Used With Bill Type 13X
*S2018: /* NOTE THAT THERE ARE THREE CODES THAT THIS APPLIES TO, BUT O
*S2019:    ON FOR VERSIONS 4.0 AND 4.1, SO WE ALSO TEST FOR 'HasObs2'
*S2020: if( ( line->flags->ObservationHospitalOnly or line->Bits->HasO
         L     R2,64(R12)   LINE
         TM    1091(R2),4   OBSERVATIONHOSPITALONLY
         JNE   AAC02910
         L     R3,64(R12)   LINE
         TM    1082(R3),16   HASOBS2
         JE    AAC02911
AAC02910 L     R15,68(R12)   BYPASS
         LTR   R15,R15
         JNE   AAC02911
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC02911
         L     R2,64(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAC02911
*S2021: and not ( bypass or line->Bits->IgnoreLine or line->Bits->Igno
*S2022: do GAPC.SetEdit( Edit->ObsBTNot13x, line, base->NoDxp, base->N
         MVC   72(4,R12),8(R11)   53
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAC02911 EQU   *
AAC02912 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC02913
         L     R2,8(R2)
AAC02913 ST    R2,4(R9)   ITEM
         J     AAC02909
AAC02914 EQU   *
AAC02915 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC036
**************************
GAPCC036 CSECT
GAPCC036 AMODE ANY
GAPCC036 RMODE ANY
*XREF - GAPCC036 GAPC.HardcodedHcpcsChecks
*  R11 + 0000 Literals        (60 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (16 bytes)
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03003
         DC    A(DMNSCPY) @00000
         DC    A(GAPCC120) @00004
         DC    A(DMNFREE) @00008
         DC    H'5'  0 5 @00012
         DC    CL5'Q3014' @00014
         DC    CL5'G2025' @00019
         DC    CL5'33225' @00024
         DC    CL5'33249' @00029
         DC    CL5'G0466' @00034
         DC    CL5'G0467' @00039
         DC    CL5'G0468' @00044
         DC    CL5'G0469' @00049
         DC    CL5'G0470' @00054
AAC03003 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(12,R12),72(R12)
         ST    R2,84(R12)
*S2031: do GAPC.SetHcpcsMapPointer( "Q3014", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   Q3014
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
* V21.2
*S2034: if( base->Version >= 78 ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,78
         JL    AAC03006
*S2035: do GAPC.SetHcpcsMapPointer( "G2025", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,19(R11)   G2025
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2036: }
*S2038: if( base->Version < 59 ) then {
AAC03006 L     R2,1868(R9)   VERSION
         CHI   R2,59
         JNL   AAC03007
*S2039: do GAPC.SetHcpcsMapPointer( "33225", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   33225
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2040: do GAPC.SetHcpcsMapPointer( "33249", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,29(R11)   33249
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2041: }
* CMS ONLY HCPCS
*S2045: if( 56 < base->Version ) then {
AAC03007 L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAC03008
*S2046: do GAPC.SetHcpcsMapPointer( "G0466", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,34(R11)   G0466
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2047: do GAPC.SetHcpcsMapPointer( "G0467", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,39(R11)   G0467
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2048: do GAPC.SetHcpcsMapPointer( "G0468", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,44(R11)   G0468
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2049: do GAPC.SetHcpcsMapPointer( "G0469", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,49(R11)   G0469
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
*S2050: do GAPC.SetHcpcsMapPointer( "G0470", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,54(R11)   G0470
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC120
         BASR  R14,R15
AAC03008 EQU   *
AAC03009 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,8(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC037
**************************
GAPCC037 CSECT
GAPCC037 AMODE ANY
GAPCC037 RMODE ANY
*XREF - GAPCC037 GAPC.HardcodedApcChecks
*  R11 + 0000 Literals        (172 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (224 bytes)
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> String ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> String ()
*        0104(R12)-> Integer len 4 ()
*        0108(R12)-> String ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> String ()
*        0136(R12)-> Integer len 4 ()
*        0140(R12)-> String ()
*        0152(R12)-> Integer len 4 ()
*        0156(R12)-> String ()
*        0168(R12)-> Integer len 4 ()
*        0172(R12)-> String ()
*        0184(R12)-> Integer len 4 ()
*        0188(R12)-> String ()
*        0200(R12)-> Integer len 4 ()
*        0204(R12)-> String ()
*        0216(R12)-> Integer len 4 ()
*        0220(R12)-> String ()
*        0232(R12)-> Integer len 4 ()
*        0236(R12)-> String ()
*        0248(R12)-> Integer len 4 ()
*        0252(R12)-> String ()
*        0264(R12)-> Integer len 4 ()
*        0268(R12)-> String ()
*        0280(R12)-> Integer len 4 ()
*        0284(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 296)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,296  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03103
         DC    A(DMNSCPY) @00000
         DC    A(GAPCC122) @00004
         DC    A(GAPCC123) @00008
         DC    F'9' @00012
         DC    F'8' @00016
         DC    A(V40LJMP) @00020
         DC    A(DMNFREE) @00024
         DC    H'5'  0 5 @00028
         DC    CL5'05881' @00030
         DC    CL5'08011' @00035
         DC    CL5'05041' @00040
         DC    CL5'00375' @00045
         DC    CL5'05853' @00050
         DC    CL5'05863' @00055
         DC    CL5'05851' @00060
         DC    CL5'05852' @00065
         DC    CL5'05861' @00070
         DC    CL5'05862' @00075
         DC    CL5'00175' @00080
         DC    CL5'00176' @00085
         DC    CL5'08010' @00090
         DC    CL5'00034' @00095
         DC    CL5'04001' @00100
         DC    CL5'04002' @00105
         DC    CL5'04003' @00110
         DC    CL5'04004' @00115
         DC    CL5'04005' @00120
         DC    CL5'04006' @00125
         DC    CL5'04007' @00130
         DC    CL5'04008' @00135
         DC    CL5'04009' @00140
         DC    CL5'04010' @00145
         DC    CL5'04011' @00150
         DC    CL5'04012' @00155
         DC    CL5'04013' @00160
         DC    CL5'04014' @00165
AAC03103 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(12,R12),72(R12)
         ST    R2,84(R12)
         XC    88(12,R12),88(R12)
         ST    R2,100(R12)
         XC    104(12,R12),104(R12)
         ST    R2,116(R12)
         XC    120(12,R12),120(R12)
         ST    R2,132(R12)
         XC    136(12,R12),136(R12)
         ST    R2,148(R12)
         XC    152(12,R12),152(R12)
         ST    R2,164(R12)
         XC    168(12,R12),168(R12)
         ST    R2,180(R12)
         XC    184(12,R12),184(R12)
         ST    R2,196(R12)
         XC    200(12,R12),200(R12)
         ST    R2,212(R12)
         XC    216(12,R12),216(R12)
         ST    R2,228(R12)
         XC    232(12,R12),232(R12)
         ST    R2,244(R12)
         XC    248(12,R12),248(R12)
         ST    R2,260(R12)
         XC    264(12,R12),264(R12)
         ST    R2,276(R12)
         XC    280(12,R12),280(R12)
         ST    R2,292(R12)
*S2058: if( 61 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC03106
*S2059: do GAPC.SetApcDataPointer( "05881", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   05881
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2060: do GAPC.SetApcDataPointer( "08011", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,35(R11)   08011
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2061: do GAPC.SetApcDataPointer( "05041", base->Version );
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,40(R11)   05041
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
         J     AAC03107
*S2062: }
*S2063: else {
*S2064: do GAPC.SetApcDataPointer( "00375", base->Version );
AAC03106 LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   00375
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2065: }
* Get payment amount for PH APC - save for MH logic
* v10.0, EFFECTIVE 1/1/09 USE LEVEL II PH APC TO LOOKUP AND STORE PAYM
* ALSO LOOK UP AND STORE MH APC SI AND PI, WHICH IS DIFFERENT BASED ON
*S2070: if( 65 < base->Version ) then {%V18.0, EFFECTIVE 2017-01-01
AAC03107 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAC03109
*S2071: do GAPC.SetApcDataPointer( "05853", base->Version );%CHECK THA
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   05853
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2072: if( do GAPC.SetApcDataPointer( "05863", base->Version ) ) then
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   05863
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAC03108
*S2073: base->SumPhPay:=DataApcTbl->ApcPayment;
         L     R3,3116(R9)   APCPAYMENT
         ST    R3,1888(R9)   SUMPHPAY
AAC03108 J     AAC03114
*S2074: }
*S2075: }
*S2076: else if( 61 < base->Version ) then {%V17.0, EFFECTIVE 2016-01-
AAC03109 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC03111
*S2077: do GAPC.SetApcDataPointer( "05851", base->Version );%CHECK THA
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   05851
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2078: do GAPC.SetApcDataPointer( "05852", base->Version );%CHECK THA
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,65(R11)   05852
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2079: do GAPC.SetApcDataPointer( "05861", base->Version );%CHECK THA
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   05861
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2080: if( do GAPC.SetApcDataPointer( "05862", base->Version ) ) then
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,75(R11)   05862
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAC03110
*S2081: base->SumPhPay:=DataApcTbl->ApcPayment;
         L     R3,3116(R9)   APCPAYMENT
         ST    R3,1888(R9)   SUMPHPAY
AAC03110 J     AAC03113
*S2082: }
*S2083: }
*S2084: else {%V12.0, EFFECTIVE 2011-01-01
*S2085: do GAPC.SetApcDataPointer( "00175", base->Version );%CHECK THA
AAC03111 LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,80(R11)   00175
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2086: if( do GAPC.SetApcDataPointer( "00176", base->Version ) ) then
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,85(R11)   00176
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAC03112
*S2087: base->SumPhPay:=DataApcTbl->ApcPayment;
         L     R2,3116(R9)   APCPAYMENT
         ST    R2,1888(R9)   SUMPHPAY
*S2088: }
*S2089: }
*LOAD SI AND PI FOR MH APC FOR OCE VERSION
*S2092: if( 61 < base->Version ) then {
AAC03112 EQU   *
AAC03113 EQU   *
AAC03114 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC03115
*S2093: do GAPC.SetApcDataPointer( "08010", base->Version );%CHECK THA
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   08010
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
         J     AAC03116
*S2094: }
*S2095: else {
*S2096: do GAPC.SetApcDataPointer( "00034", base->Version );%CHECK THA
AAC03115 LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,95(R11)   00034
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,4(R11)   GAPCC122
         BASR  R14,R15
*S2097: }
*CMS APCS ONLY
*ENSURE THAT SECTION 603 ALTERNATIVE RADIATION APCS ARE AVAILABLE
*S2118: if( 65 < base->Version
AAC03116 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAC03118
         LA    R14,72(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,76(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,100(R11)   04001
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,88(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   04002
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,104(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,108(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,110(R11)   04003
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,104(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,120(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,124(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,115(R11)   04004
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,124(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,120(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,136(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,140(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R11)   04005
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,140(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,136(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,152(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,156(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,125(R11)   04006
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,156(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,152(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,168(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,172(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)   04007
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,172(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,168(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,184(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,188(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,135(R11)   04008
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,188(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,184(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,200(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,204(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,140(R11)   04009
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,204(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,200(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,216(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,220(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,145(R11)   04010
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,220(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,216(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,232(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,236(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,150(R11)   04011
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,236(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,232(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,248(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,252(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,155(R11)   04012
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,252(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,248(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,264(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,268(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,160(R11)   04013
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,268(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,264(R12)
         LTR   R15,R15
         JE    AAC03117
         LA    R14,280(R12)
         ST    R14,60(R13)
         AHI   R13,72
         LA    R14,284(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,165(R11)   04014
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,284(R12)
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,280(R12)
         LTR   R15,R15
         JNE   AAC03118
*S2119: and not (
*S2120: do GAPC.findApcData( "04001", base->Version )
*S2121: and do GAPC.findApcData( "04002", base->Version )
*S2122: and do GAPC.findApcData( "04003", base->Version )
*S2123: and do GAPC.findApcData( "04004", base->Version )
*S2124: and do GAPC.findApcData( "04005", base->Version )
*S2125: and do GAPC.findApcData( "04006", base->Version )
*S2126: and do GAPC.findApcData( "04007", base->Version )
*S2127: and do GAPC.findApcData( "04008", base->Version )
*S2128: and do GAPC.findApcData( "04009", base->Version )
*S2129: and do GAPC.findApcData( "04010", base->Version )
*S2130: and do GAPC.findApcData( "04011", base->Version )
*S2131: and do GAPC.findApcData( "04012", base->Version )
*S2132: and do GAPC.findApcData( "04013", base->Version )
*S2133: and do GAPC.findApcData( "04014", base->Version )
*S2134: ) ) then {
*S2135: base->OutClm_ClaimFlag:=9;
AAC03117 MVC   1884(4,R9),12(R11)   9
*S2136: { return_code:=Error->RC_RotCorrupt ; goto exit_now; };
         MVC   3016(4,R9),16(R11)   8
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   V40LJMP
         BASR  R14,R15
AAC03118 EQU   *
AAC03119 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,24(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC038
**************************
GAPCC038 CSECT
GAPCC038 AMODE ANY
GAPCC038 RMODE ANY
*XREF - GAPCC038 GAPC.FindAddonEdit
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (addonChain)
*        0068(R12)-> Integer len 4 (edit)
*  R12 + 0072 Locals & temps  (8 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03203
         DC    F'106' @00000
         DC    F'108' @00004
         DC    A(GAPCC038) @00008
AAC03203 XC    72(8,R12),72(R12)
* CODES THAT ARE ALONE (NOT PART OF CHAIN FOR ITS OWN ADDON TYPE) RECE
* TYPE TWO CODES CANNOT BE RESOLVED SO THEY GET EDITED REGARDLESS.
*S2156: if( addonChain->count=0 ) then {
         L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,196(R3)   COUNT
         LTR   R4,R4
         JNE   AAC03211
*S2162: if( addonChain->line->flags->AddonType1
         L     R5,64(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         L     R7,0(R6)   LINE
         TM    1098(R7),1   ADDONTYPE1
         JE    AAC03207
         L     R8,64(R12)   ADDONCHAIN
         L     R2,0(R8)   ADDONCHAIN
         L     R3,0(R2)   LINE
         TM    1086(R3),64   TYPEONESATISFIED
         JE    AAC03206
         L     R4,64(R12)   ADDONCHAIN
         L     R5,0(R4)   ADDONCHAIN
         L     R6,0(R5)   LINE
         TM    1086(R6),1   HASE106
         JE    AAC03207
*S2163: and ( not addonChain->line->Bits->TypeOneSatisfied
*S2164: or addonChain->line->Bits->hasE106 ) ) then {
*S2170: edit:=Edit->AddonTypeOneMissingPrimary;
AAC03206 L     R2,68(R12)   EDIT
         MVC   0(4,R2),0(R11)   106
         J     AAC03210
*S2171: }
*S2172: else if( addonChain->line->flags->AddonType3
AAC03207 L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,0(R3)   LINE
         TM    1099(R4),64   ADDONTYPE3
         JE    AAC03209
         L     R5,64(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         L     R7,0(R6)   LINE
         TM    1086(R7),32   TYPETHREESATISFIED
         JE    AAC03208
         L     R8,64(R12)   ADDONCHAIN
         L     R2,0(R8)   ADDONCHAIN
         L     R3,0(R2)   LINE
         TM    1087(R3),128   HASE108
         JE    AAC03209
*S2173: and ( not addonChain->line->Bits->TypeThreeSatisfied
*S2174: or addonChain->line->Bits->hasE108 ) ) then {
*S2180: edit:=Edit->AddonTypeThreeMissingPrimary;
AAC03208 L     R2,68(R12)   EDIT
         MVC   0(4,R2),4(R11)   108
AAC03209 EQU   *
AAC03210 J     AAC03218
*S2181: }
*S2194: }
*S2195: else {
* RECURSIVELY CHECK WHICH PART OF THE CHAIN HAS THE FLAG SET THAT THE
* IS NOT SATISFIED. WHATEVER THE ADDON CODE TYPE IS FOR THIS CODE DETE
* THE EDIT IS FOR THE CHAIN. THIS CODE IS THE TOP OF THE CHAIN BY DEFI
* THIS ADDON CODE PLUS ALL CHILDREN WILL GET THIS EDIT.
*S2205: loop( i:=0; i<addonChain->count and edit=0; i+=1 ){
AAC03211 XC    72(4,R12),72(R12)   I
AAC03212 L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,72(R12)   I
         C     R4,196(R3)   COUNT
         JNL   AAC03217
         L     R5,68(R12)   EDIT
         L     R6,0(R5)   EDIT
         LTR   R6,R6
         JNE   AAC03217
* Type two codes cannot be satisfied so there is no chaining and we do
*if( not addonChain->line->Bits->TypeOneSatisfied and not addonChain->
*S2209: if( not ( addonChain->line->Bits->TypeOneSatisfied or addonCha
         L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,0(R3)   LINE
         TM    1086(R4),64   TYPEONESATISFIED
         JNE   AAC03213
         L     R5,64(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         L     R7,0(R6)   LINE
         TM    1086(R7),1   HASE106
         JNE   AAC03213
*S2215: edit:=Edit->AddonTypeOneMissingPrimary;
         L     R2,68(R12)   EDIT
         MVC   0(4,R2),0(R11)   106
*addonChain->has106:=TRUE;
*S2217: addonChain->line->Bits->hasE106:=1;
         L     R3,64(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,0(R4)   LINE
         OI    1086(R5),1   HASE106
         J     AAC03215
*S2218: }
*else if( not addonChain->line->Bits->TypeThreeSatisfied and not addon
*S2220: else if( not ( addonChain->line->Bits->TypeThreeSatisfied or a
AAC03213 L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,0(R3)   LINE
         TM    1086(R4),32   TYPETHREESATISFIED
         JNE   AAC03214
         L     R5,64(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         L     R7,0(R6)   LINE
         TM    1087(R7),128   HASE108
         JNE   AAC03214
*S2226: edit:=Edit->AddonTypeThreeMissingPrimary;
         L     R2,68(R12)   EDIT
         MVC   0(4,R2),4(R11)   108
*addonChain->has108:=TRUE;
*S2228: addonChain->line->Bits->hasE108:=1;
         L     R3,64(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,0(R4)   LINE
         OI    1087(R5),128   HASE108
*S2229: }
* KEEP SEARCHING UNTIL WE FIND AN EDIT.
*S2242: do GAPC.FindAddonEdit( addonChain->relatedLine[i], edit );
AAC03214 EQU   *
AAC03215 LA    R14,76(R12)
         ST    R14,60(R13)
         L     R2,64(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         LA    R4,4(R3)   RELATEDLINE
         L     R5,72(R12)   I
         MHI   R5,4
         AR    R4,R5
         ST    R4,64(R13)
         MVC   68(4,R13),68(R12)   EDIT
         L     R15,8(R11)   GAPCC038
         BASR  R14,R15
AAC03216 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAC03212
*S2243: }
*S2249: }
*S2258: return edit;
AAC03217 EQU   *
AAC03218 L     R2,60(R12)
         L     R3,68(R12)   EDIT
         L     R4,0(R3)   EDIT
         ST    R4,0(R2)
AAC03219 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC039
**************************
GAPCC039 CSECT
GAPCC039 AMODE ANY
GAPCC039 RMODE ANY
*XREF - GAPCC039 GAPC.RootAddonChainPresent
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (window)
*        0068(R12)-> reference to Reference len 4 (addonChain)
*  R12 + 0072 Locals & temps  (20 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 (containsRoot)
*        0080(R12)-> reference to Struct len 220 (currentAddonChain)
*        0084(R12)-> reference to Struct len 1120 (addonCodeLine)
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03303
         DC    F'1' @00000
         DC    A(GAPCC039) @00004
         DC    A(DMNSCMP) @00008
AAC03303 XC    72(20,R12),72(R12)
* THE ROOT FLAG CAN BE SET IF THE CODE IS ACTUALLY A ROOT (CHAIN LENGT
* WE RECURSIVELY CALL THIS FUNCTION UNTIL WE FIND A ROOT OR GET TO THE
* THE CHAIN.
*S2281: if( addonChain->root ) then {
         L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R15,200(R3)   ROOT
         LTR   R15,R15
         JE    AAC03306
*S2282: containsRoot:=1;
         MVC   76(4,R12),0(R11)   1
         J     AAC03311
*S2283: }
*S2284: else {
*S2285: loop( i:=0; i<addonChain->count and not containsRoot; i+=1 ){
AAC03306 XC    72(4,R12),72(R12)   I
AAC03307 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,72(R12)   I
         C     R4,196(R3)   COUNT
         JNL   AAC03310
         L     R15,76(R12)   CONTAINSROOT
         LTR   R15,R15
         JNE   AAC03310
*S2286: if( do GAPC.RootAddonChainPresent( window, addonChain->related
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   WINDOW
         L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         LA    R4,4(R3)   RELATEDLINE
         L     R5,72(R12)   I
         MHI   R5,4
         AR    R4,R5
         ST    R4,68(R13)
         L     R15,4(R11)   GAPCC039
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JE    AAC03308
*S2287: containsRoot:=1;
         MVC   76(4,R12),0(R11)   1
AAC03308 EQU   *
AAC03309 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAC03307
*S2288: }
*S2289: }
*S2290: }
* IF WE'VE FOUND A ROOT THEN WE NEED TO SET THE LINE LEVEL EDIT SUPPRE
* THIS IS BECAUSE IF A LINE IS SATISFIED FOR AN EDIT ON ANY CHAIN THEN
* SATISFIED FOR ALL CHAINS OF THAT TYPE ON THE SAME DAY. WE CAN ASSUME
* THAT AN ADDON CODE CAN ONLY BE OF ONE TYPE. WE NEED TO DO ONE SET OU
* THE LOOP FOR CASES WHERE WE HAVE A CHAIN OF 0.
*S2298: if( containsRoot ) then {
AAC03310 EQU   *
AAC03311 L     R15,76(R12)   CONTAINSROOT
         LTR   R15,R15
         JE    AAC03320
*S2304: currentAddonChain :=addonChain;
         L     R2,68(R12)   ADDONCHAIN
         MVC   80(4,R12),0(R2)   ADDONCHAIN
*S2305: currentAddonChain->line->Bits->SuppressAddonEditing :=1;
         L     R3,80(R12)   CURRENTADDONCHAIN
         L     R4,0(R3)   LINE
         OI    1086(R4),8   SUPPRESSADDONEDITING
*S2311: loop( i:=0; i<addonChain->count and not containsRoot; i+=1 ){
         XC    72(4,R12),72(R12)   I
AAC03312 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,72(R12)   I
         C     R4,196(R3)   COUNT
         JNL   AAC03319
         L     R15,76(R12)   CONTAINSROOT
         LTR   R15,R15
         JNE   AAC03319
*S2312: currentAddonChain := addonChain->relatedLine[i];
         L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         LA    R4,4(R3)   RELATEDLINE
         L     R5,72(R12)   I
         MHI   R5,4
         AR    R4,R5
         MVC   80(4,R12),0(R4)   RELATEDLINE
*S2313: currentAddonChain->line->Bits->SuppressAddonEditing := 1;
         L     R6,80(R12)   CURRENTADDONCHAIN
         L     R7,0(R6)   LINE
         OI    1086(R7),8   SUPPRESSADDONEDITING
* WE WANT TO SET THE SUPPRESSION FLAG ON EVERY CODE ON THE SAME WINDOW
* AS ANY NODE IN THE CHAIN.
*S2321: loop( addonCodeLine:=window->firstWindowLine; addonCodeLine; a
         L     R8,64(R12)   WINDOW
         L     R2,0(R8)   WINDOW
         MVC   84(4,R12),4(R2)   FIRSTWINDOWLINE
AAC03313 L     R15,84(R12)   ADDONCODELINE
         LTR   R15,R15
         JE    AAC03317
*S2327: if( currentAddonChain->line->Hcpcs = addonCodeLine->Hcpcs ) th
         L     R2,80(R12)   CURRENTADDONCHAIN
         L     R3,0(R2)   LINE
         L     R4,84(R12)   ADDONCODELINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC03314
*S2333: currentAddonChain->line->Bits->SuppressAddonEditing := 1;
         L     R6,80(R12)   CURRENTADDONCHAIN
         L     R7,0(R6)   LINE
         OI    1086(R7),8   SUPPRESSADDONEDITING
*S2334: }
* IF WE'RE AT THE END OF THE WINDOW, BREAK FROM THE LOOP, THIS CHECK I
*S2336: if( addonCodeLine=window->lastWindowLine ) then break;
AAC03314 L     R2,64(R12)   WINDOW
         L     R3,0(R2)   WINDOW
         L     R4,84(R12)   ADDONCODELINE
         C     R4,8(R3)   LASTWINDOWLINE
         JNE   AAC03315
         J     AAC03317
AAC03315 EQU   *
AAC03316 L     R2,84(R12)   ADDONCODELINE
         MVC   84(4,R12),44(R2)   NEXTWINDOWLINE
         J     AAC03313
AAC03317 EQU   *
AAC03318 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAC03312
*S2337: }
*S2343: }
*S2345: }
*S2355: return containsRoot;
AAC03319 EQU   *
AAC03320 L     R2,60(R12)
         L     R3,76(R12)   CONTAINSROOT
         ST    R3,0(R2)
AAC03321 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC040
**************************
GAPCC040 CSECT
GAPCC040 AMODE ANY
GAPCC040 RMODE ANY
*XREF - GAPCC040 GAPC.CreateAddonChain
*  R11 + 0000 Literals        (44 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (window)
*        0068(R12)-> reference to Reference len 4 (addonChain)
*        0072(R12)-> Integer len 4 (revenueCodeRangeMatchRequired)
*  R12 + 0076 Locals & temps  (16 bytes)
*        0076(R12)-> reference to Struct len 1120 (addonCodeLine)
*        0080(R12)-> reference to Struct len 1120 (primaryCodeLine)
*        0084(R12)-> Integer len 4 (i)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03403
         DC    A(DMNSCMP) @00000
         DC    A(DMNSEL) @00004
         DC    F'1' @00008
         DC    F'220' @00012
         DC    A(DMNNEW) @00016
         DC    A(DMNSCPY) @00020
         DC    F'5' @00024
         DC    A(DMNSCPYX) @00028
         DC    A(GAPCC040) @00032
         DC    H'4'  0 4 @00036
         DC    H'1'  0 1 @00038
         DC    H'7'  0 7 @00040
         DC    H'5'  0 5 @00042
AAC03403 XC    76(16,R12),76(R12)
*S2368: addonCodeLine:=addonChain->line;
         L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         MVC   76(4,R12),0(R3)   LINE
*S2370: if( addonCodeLine->flags->AddonType1
         L     R4,76(R12)   ADDONCODELINE
         TM    1098(R4),1   ADDONTYPE1
         JNE   AAC03406
         L     R5,76(R12)   ADDONCODELINE
         TM    1099(R5),64   ADDONTYPE3
         JE    AAC03450
*S2371: or addonCodeLine->flags->AddonType3 ) then {
* ITERATE OVER ALL CODES IN WINDOW LOOKING FOR ALL PAIRINGS,
* ASSUMING WINDOW SERVICE DATES ARE ORDERED, SO ABORT UPON ENCOUNTERIN
* FIRST INSTANCE WHERE THE SERVICE DATE FOR THE PRIMARY IS LATER THAN
*S2380: loop(
*S2381: primaryCodeLine:=window->firstWindowLine;
AAC03406 L     R2,64(R12)   WINDOW
         L     R3,0(R2)   WINDOW
         MVC   80(4,R12),4(R3)   FIRSTWINDOWLINE
AAC03407 L     R15,80(R12)   PRIMARYCODELINE
         LTR   R15,R15
         JE    AAC03445
         L     R2,80(R12)   PRIMARYCODELINE
         L     R3,76(R12)   ADDONCODELINE
         L     R4,60(R2)   SERVICEDATE
         CL    R4,60(R3)   SERVICEDATE
         JH    AAC03445
*S2382: primaryCodeLine and primaryCodeLine->ServiceDate <= addonCodeL
*S2383: primaryCodeLine:=primaryCodeLine->nextWindowLine ){
* CHECK FOR VALID HCPCS FOR LOOKUP
* IF THE REVENUE CENTER RANGE DOESN'T MATCH BETWEEN THE ADDON AND PRIM
* THE CODES CANNOT BE PAIRED, SO WE TRY TO FIND ANOTHER.
*S2388: if( primaryCodeLine->Bits->BlankHcpcs
         L     R2,80(R12)   PRIMARYCODELINE
         TM    1076(R2),64   BLANKHCPCS
         JNE   AAC03413
         L     R3,80(R12)   PRIMARYCODELINE
         TM    1076(R3),128   FOUNDHCPCS
         JE    AAC03413
         L     R2,76(R12)   ADDONCODELINE
         C     R2,80(R12)   PRIMARYCODELINE
         JE    AAC03413
         L     R2,76(R12)   ADDONCODELINE
         L     R3,80(R12)   PRIMARYCODELINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC03413
         L     R2,72(R12)   REVENUECODERANGEMATCHREQUIRED
         L     R15,0(R2)   REVENUECODERANGEMATCHREQUIRED
         LTR   R15,R15
         JE    AAC03412
         L     R3,80(R12)   PRIMARYCODELINE
         TM    1084(R3),1   HASPROFSERVICERC
         JNE   AAC03408
         XR    R4,R4
         J     AAC03409
AAC03408 LHI   R4,1
AAC03409 L     R5,76(R12)   ADDONCODELINE
         TM    1084(R5),1   HASPROFSERVICERC
         JNE   AAC03410
         XR    R6,R6
         J     AAC03411
AAC03410 LHI   R6,1
AAC03411 XR    R4,R6
         LTR   R4,R4
         JNE   AAC03413
AAC03412 J     AAC03414
*S2389: or not primaryCodeLine->Bits->FoundHcpcs
*S2390: or addonCodeLine=primaryCodeLine
*S2391: or addonCodeLine->Hcpcs=primaryCodeLine->Hcpcs
*S2392: or (
*S2393: revenueCodeRangeMatchRequired
*S2394: and ( primaryCodeLine->Bits->HasProfServiceRC ^ addonCodeLine-
*S2395: ) ) then {
*S2404: continue;
AAC03413 J     AAC03444
*S2405: }
*S2406: /*else{
*S2407:     message "\tChecking addon=%s:%i:%i + primary=%s:%i:%i",
*S2408:      addonCodeLine->Hcpcs, ((addonCodeLine->LineNo)+1), addonC
*S2409:      primaryCodeLine->Hcpcs, ((primaryCodeLine->LineNo)+1), pr
*S2410:    }*/
* PERFORM LOOKUPS
*S2413: if( addonCodeLine->flags->AddonType1 ) then {
AAC03414 L     R2,76(R12)   ADDONCODELINE
         TM    1098(R2),1   ADDONTYPE1
         JE    AAC03428
*loop( rc:=select MapAddonType1Tbl using byAddon( addonCodeLine->Hcpcs
*S2424: loop( rc:=select MapAddonType1Tbl using byAddon( addonCodeLine
         MVC   60(2,R13),36(R11)   4
         MVC   62(2,R13),38(R11)   1
         LA    R14,4036(R9)   MAPADDONTYPE1TBL
         ST    R14,64(R13)
         L     R3,76(R12)   ADDONCODELINE
         LA    R4,68(R13)
         L     R5,444(R3)   INDEX
         STH   R5,0(R4)
         L     R6,80(R12)   PRIMARYCODELINE
         LA    R7,70(R13)
         L     R8,444(R6)   INDEX
         STH   R8,0(R7)
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC03415
         L     R3,64(R13)
         MVC   4044(6,R9),0(R3)
AAC03415 ST    R2,88(R12)   RC
AAC03416 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAC03427
*S2425: if( addonCodeLine->Index=MapAddonType1Tbl->Index1
         L     R3,76(R12)   ADDONCODELINE
         L     R4,444(R3)   INDEX
         CH    R4,4044(R9)   INDEX1
         JNE   AAC03424
         L     R5,80(R12)   PRIMARYCODELINE
         L     R6,444(R5)   INDEX
         CH    R6,4046(R9)   INDEX2
         JNE   AAC03424
*S2426: and primaryCodeLine->Index=MapAddonType1Tbl->Index2 ) then {
*if( MapAddonType1Tbl->Addon = addonCodeLine->Hcpcs
*and MapAddonType1Tbl->AddonPrimary = primaryCodeLine->Hcpcs ) then {
*S2429: if( base->Version < MapAddonType1Tbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    4048(R9),128   LOVERSION
         JE    AAC03417
         LHI   R14,-1
AAC03417 IC    R14,4048(R9)   LOVERSION
         CR    R2,R14
         JL    AAC03419
         XR    R3,R3
         TM    4049(R9),128   HIVERSION
         JE    AAC03418
         LHI   R3,-1
AAC03418 IC    R3,4049(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAC03420
*S2430: or MapAddonType1Tbl->HiVersion < base->Version ) then continue
AAC03419 J     AAC03425
*S2440: if( primaryCodeLine->Bits->hasE106 ) then {
AAC03420 L     R2,80(R12)   PRIMARYCODELINE
         TM    1086(R2),1   HASE106
         JE    AAC03421
         J     AAC03422
*S2446: }
*S2447: else{
*S2448: addonCodeLine->Bits->TypeOneSatisfied :=1;
AAC03421 L     R2,76(R12)   ADDONCODELINE
         OI    1086(R2),64   TYPEONESATISFIED
*S2454: }
*S2456: if( 48 <= addonChain->count ) then {
AAC03422 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,196(R3)   COUNT
         CHI   R4,48
         JL    AAC03423
*S2462: break;
         J     AAC03427
*S2463: }
*S2468: addonChain->relatedLine[addonChain->count] :=new struct ChainS
AAC03423 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,68(R12)   ADDONCHAIN
         L     R5,0(R4)   ADDONCHAIN
         LA    R6,4(R3)   RELATEDLINE
         L     R7,196(R5)   COUNT
         MHI   R7,4
         AR    R6,R7
         LR    R8,R9
         AHI   R8,4244
         MVC   60(4,R13),8(R11)   1
         MVC   64(4,R13),12(R11)   220
         ST    R8,68(R13)
         L     R15,16(R11)   DMNNEW
         BASR  R14,R15
         L     R2,60(R13)
         XC    0(220,R2),0(R2)
         ST    R2,0(R6)   RELATEDLINE
*S2469: addonChain->relatedLine[addonChain->count]->line :=primaryCode
         L     R3,68(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,68(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         LA    R7,4(R4)   RELATEDLINE
         L     R8,196(R6)   COUNT
         MHI   R8,4
         AR    R7,R8
         L     R2,0(R7)   RELATEDLINE
         MVC   0(4,R2),80(R12)   PRIMARYCODELINE
*S2470: addonChain->count +=1;
         L     R3,68(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,68(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         LHI   R7,1
         A     R7,196(R6)   COUNT
         ST    R7,196(R4)   COUNT
*S2472: }
*S2473: break;
AAC03424 J     AAC03427
AAC03425 MVC   60(2,R13),40(R11)   7
         LA    R14,4036(R9)   MAPADDONTYPE1TBL
         ST    R14,64(R13)
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC03426
         L     R3,64(R13)
         MVC   4044(6,R9),0(R3)
AAC03426 ST    R2,88(R12)   RC
         J     AAC03416
*S2474: }
*S2475: }
* DIDN'T FIND A MATCH IN TYPE I TABLE, LOOKUP POSSIBLE PRIMARY CODE IN
*S2478: if( addonCodeLine->flags->AddonType3 ) then {
AAC03427 EQU   *
AAC03428 L     R2,76(R12)   ADDONCODELINE
         TM    1099(R2),64   ADDONTYPE3
         JE    AAC03442
*S2488: loop( rc:=select MapAddonType3Tbl using byAddon( addonCodeLine
         MVC   60(2,R13),36(R11)   4
         MVC   62(2,R13),38(R11)   1
         LA    R14,4076(R9)   MAPADDONTYPE3TBL
         ST    R14,64(R13)
         L     R3,76(R12)   ADDONCODELINE
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),42(R11)   5
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R5,80(R12)   PRIMARYCODELINE
         LA    R6,73(R13)
         AHI   R13,88
         ST    R6,60(R13)
         MVC   68(2,R13),42(R11)   5
         LA    R14,144(R5)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
         CHI   R7,1
         JH    AAC03429
         L     R8,64(R13)
         AHI   R13,88
         LA    R14,4084(R9)   MAPADDONTYPE3TBL
         ST    R14,60(R13)
         ST    R8,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LR    R14,R9
         AHI   R14,4096   MAPADDONTYPE3TBL
         ST    R14,60(R13)
         LA    R14,5(R8)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         LR    R1,R9
         AHI   R1,4108
         MVC   0(2,R1),10(R8)
AAC03429 ST    R7,88(R12)   RC
AAC03430 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAC03441
*S2489: if( MapAddonType3Tbl->Addon= addonCodeLine->Hcpcs
         L     R3,76(R12)   ADDONCODELINE
         LA    R14,4084(R9)   ADDON
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC03438
         L     R5,80(R12)   PRIMARYCODELINE
         LR    R14,R9
         AHI   R14,4096   ADDONPRIMARY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R5)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAC03438
*S2490: and MapAddonType3Tbl->AddonPrimary = primaryCodeLine->Hcpcs )
*S2491: if( base->Version < MapAddonType3Tbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4108
         TM    0(R1),128   LOVERSION
         JE    AAC03431
         LHI   R14,-1
AAC03431 LR    R1,R9
         AHI   R1,4108
         IC    R14,0(R1)   LOVERSION
         CR    R2,R14
         JL    AAC03433
         XR    R3,R3
         LR    R1,R9
         AHI   R1,4109
         TM    0(R1),128   HIVERSION
         JE    AAC03432
         LHI   R3,-1
AAC03432 LR    R1,R9
         AHI   R1,4109
         IC    R3,0(R1)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAC03434
*S2492: or MapAddonType3Tbl->HiVersion < base->Version ) then continue
AAC03433 J     AAC03439
*S2501: if( primaryCodeLine->Bits->hasE108 ) then {
AAC03434 L     R2,80(R12)   PRIMARYCODELINE
         TM    1087(R2),128   HASE108
         JE    AAC03435
         J     AAC03436
*S2507: }
*S2508: else{
*S2509: addonCodeLine->Bits->TypeThreeSatisfied :=1;
AAC03435 L     R2,76(R12)   ADDONCODELINE
         OI    1086(R2),32   TYPETHREESATISFIED
*S2515: }
*S2517: if( 48 <= addonChain->count ) then {
AAC03436 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,196(R3)   COUNT
         CHI   R4,48
         JL    AAC03437
*S2523: break;
         J     AAC03441
*S2524: }
* SHOULDN'T HAPPEN, BUT IF ADDED FOR TYPE I, NO NEED TO RE-ADD FOR TYP
* JUST FLAG IT
*if( not addonChain->count
*or primaryCodeLine<>addonChain->relatedLine[ (addonChain->count-1) ]-
*S2534: addonChain->relatedLine[addonChain->count] :=new struct ChainS
AAC03437 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,68(R12)   ADDONCHAIN
         L     R5,0(R4)   ADDONCHAIN
         LA    R6,4(R3)   RELATEDLINE
         L     R7,196(R5)   COUNT
         MHI   R7,4
         AR    R6,R7
         LR    R8,R9
         AHI   R8,4244
         MVC   60(4,R13),8(R11)   1
         MVC   64(4,R13),12(R11)   220
         ST    R8,68(R13)
         L     R15,16(R11)   DMNNEW
         BASR  R14,R15
         L     R2,60(R13)
         XC    0(220,R2),0(R2)
         ST    R2,0(R6)   RELATEDLINE
*S2535: addonChain->relatedLine[addonChain->count]->line :=primaryCode
         L     R3,68(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,68(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         LA    R7,4(R4)   RELATEDLINE
         L     R8,196(R6)   COUNT
         MHI   R8,4
         AR    R7,R8
         L     R2,0(R7)   RELATEDLINE
         MVC   0(4,R2),80(R12)   PRIMARYCODELINE
*S2536: addonChain->count +=1;
         L     R3,68(R12)   ADDONCHAIN
         L     R4,0(R3)   ADDONCHAIN
         L     R5,68(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         LHI   R7,1
         A     R7,196(R6)   COUNT
         ST    R7,196(R4)   COUNT
*}
*S2538: }
*S2539: break;
AAC03438 J     AAC03441
AAC03439 MVC   60(2,R13),40(R11)   7
         LA    R14,4076(R9)   MAPADDONTYPE3TBL
         ST    R14,64(R13)
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC03440
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,4084(R9)   MAPADDONTYPE3TBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4096   MAPADDONTYPE3TBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         LR    R1,R9
         AHI   R1,4108
         MVC   0(2,R1),10(R3)
AAC03440 ST    R2,88(R12)   RC
         J     AAC03430
*S2540: }
*S2542: }
* IF WE'RE AT THE END OF THE WINDOW, BREAK FROM THE LOOP, THIS CHECK I
*S2545: if( primaryCodeLine=window->lastWindowLine ) then {
AAC03441 EQU   *
AAC03442 L     R2,64(R12)   WINDOW
         L     R3,0(R2)   WINDOW
         L     R4,80(R12)   PRIMARYCODELINE
         C     R4,8(R3)   LASTWINDOWLINE
         JNE   AAC03443
*S2551: break;
         J     AAC03445
AAC03443 EQU   *
AAC03444 L     R2,80(R12)   PRIMARYCODELINE
         MVC   80(4,R12),44(R2)   NEXTWINDOWLINE
         J     AAC03407
*S2552: }
*S2554: }
* IF ANY PRIMARIES EXIST, CHECK IF THEY ARE ALSO ADDONS AND LINK THEM
*S2557: if( addonChain->count ) then {
AAC03445 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R15,196(R3)   COUNT
         LTR   R15,R15
         JE    AAC03449
*S2563: loop( i:=0; i<addonChain->count; i+=1 ){
         XC    84(4,R12),84(R12)   I
AAC03446 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         L     R4,84(R12)   I
         C     R4,196(R3)   COUNT
         JNL   AAC03448
*S2569: do GAPC.CreateAddonChain( window, addonChain->relatedLine[i],
         MVC   64(4,R13),64(R12)   WINDOW
         L     R5,68(R12)   ADDONCHAIN
         L     R6,0(R5)   ADDONCHAIN
         LA    R7,4(R6)   RELATEDLINE
         L     R8,84(R12)   I
         MHI   R8,4
         AR    R7,R8
         ST    R7,68(R13)
         MVC   72(4,R13),72(R12)   REVENUECODERANGEMATCHREQUIRED
         L     R15,32(R11)   GAPCC040
         BASR  R14,R15
AAC03447 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAC03446
AAC03448 EQU   *
AAC03449 J     AAC03451
*S2570: }
*S2571: }
*S2575: }
*S2576: else {
*S2580: addonChain->root:=1;
AAC03450 L     R2,68(R12)   ADDONCHAIN
         L     R3,0(R2)   ADDONCHAIN
         MVC   200(4,R3),8(R11)   1
AAC03451 EQU   *
AAC03452 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC041
**************************
GAPCC041 CSECT
GAPCC041 AMODE ANY
GAPCC041 RMODE ANY
*XREF - GAPCC041 GAPC.AddonCodePairingEdits
*  R11 + 0000 Literals        (68 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (36 bytes)
*        0064(R12)-> reference to Struct len 20 (window)
*        0068(R12)-> reference to Struct len 1120 (addonCodeLine)
*        0072(R12)-> reference to Struct len 220 (addonChain)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> Integer len 4 (edit)
*        0084(R12)-> Integer len 4 (revenueCodeRangeMatchRequired)
*        0088(R12)-> Unknown ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03503
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    F'107' @00008
         DC    A(GAPCC091) @00012
         DC    A(GAPCC087) @00016
         DC    A(DMNFREE) @00020
         DC    F'1' @00024
         DC    F'220' @00028
         DC    A(DMNNEW) @00032
         DC    A(GAPCC040) @00036
         DC    A(GAPCC039) @00040
         DC    A(GAPCC038) @00044
         DC    F'106' @00048
         DC    F'108' @00052
         DC    H'2'  0 2 @00056
         DC    H'10'  0 10 @00058
         DC    H'1120'  4 96 @00060
         DC    H'1'  0 1 @00062
         DC    CL2'85' @00064
         DC    CL1'1' @00066
AAC03503 XC    64(36,R12),64(R12)
*S2597: revenueCodeRangeMatchRequired:=( base->BillType="85" )? 1 : 0;
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,64(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03506
         LHI   R2,0
         J     AAC03507
AAC03506 LHI   R2,1
AAC03507 ST    R2,84(R12)   REVENUECODERANGEMATCHREQUIRED
* WE'RE HANDLING EDIT 107 FOR ADDON TYPE II CONDITIONS FIRST
* ONLY APPLICABLE FOR PROFESSIONAL SERVICES (REVENUE CODES 960-989) ON
*S2601: if( revenueCodeRangeMatchRequired ) then {
         LTR   R2,R2
         JE    AAC03513
*S2602: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC03508 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC03512
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),58(R11)   10
         MVC   66(2,R13),60(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC03512
*S2603: if( line->flags->AddonType2
         L     R2,76(R12)   LINE
         TM    1099(R2),128   ADDONTYPE2
         JE    AAC03509
         L     R3,76(R12)   LINE
         TM    1084(R3),1   HASPROFSERVICERC
         JE    AAC03509
         L     R2,76(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC03509
         L     R3,76(R12)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),62(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC03509
*S2604: and line->Bits->HasProfServiceRC
*S2605: and not ( line->Bits->IgnoreLine or line->ActionFlag="1" ) ) t
*S2606: do GAPC.SetEdit( Edit->AddonTypeTwoMissingPrimary, line, base-
         MVC   88(4,R12),8(R11)   107
         LA    R14,88(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAC03509 EQU   *
AAC03510 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC03511
         L     R2,8(R2)
AAC03511 ST    R2,4(R9)   ITEM
         J     AAC03508
*S2607: }
*S2608: }
*S2609: }
*S2611: do GAPC.MakeWindowArray();
AAC03512 EQU   *
AAC03513 L     R15,16(R11)   GAPCC087
         BASR  R14,R15
*S2620: loop( window:=base->firstWindow; window; window:=window->nextW
         MVC   64(4,R12),76(R9)   FIRSTWINDOW
AAC03514 L     R15,64(R12)   WINDOW
         LTR   R15,R15
         JE    AAC03526
*S2625: loop( addonCodeLine:=window->firstWindowLine; addonCodeLine; a
         L     R2,64(R12)   WINDOW
         MVC   68(4,R12),4(R2)   FIRSTWINDOWLINE
AAC03515 L     R15,68(R12)   ADDONCODELINE
         LTR   R15,R15
         JE    AAC03524
*S2627: if( addonCodeLine->flags->AddonType1
         L     R2,68(R12)   ADDONCODELINE
         TM    1098(R2),1   ADDONTYPE1
         JNE   AAC03516
         L     R3,68(R12)   ADDONCODELINE
         TM    1099(R3),64   ADDONTYPE3
         JE    AAC03521
*S2628: or addonCodeLine->flags->AddonType3 ) then {
* CLEAR THE POOL FOR EACH ADDON ENCOUNTERED
*S2635: reset pool addon_pool;
AAC03516 LR    R2,R9
         AHI   R2,4244
         ST    R2,60(R13)
         L     R15,20(R11)   DMNFREE
         BASR  R14,R15
* CREATE CHAIN FOR THE CURRENT ADDON WITHIN THE CURRENT WINDOW
*S2638: addonChain:=new struct ChainStruct using addon_pool;
         LR    R3,R9
         AHI   R3,4244
         MVC   60(4,R13),24(R11)   1
         MVC   64(4,R13),28(R11)   220
         ST    R3,68(R13)
         L     R15,32(R11)   DMNNEW
         BASR  R14,R15
         L     R4,60(R13)
         XC    0(220,R4),0(R4)
         ST    R4,72(R12)   ADDONCHAIN
*S2639: addonChain->line:=addonCodeLine;
         L     R5,72(R12)   ADDONCHAIN
         MVC   0(4,R5),68(R12)   ADDONCODELINE
* CREATE CHAIN(S) BETWEEN ADDON CODES AND PRIMARY CODES, STARTING WITH
*S2646: do GAPC.CreateAddonChain( window, addonChain, revenueCodeRange
         LA    R14,64(R12)   WINDOW
         ST    R14,64(R13)
         LA    R14,72(R12)   ADDONCHAIN
         ST    R14,68(R13)
         LA    R14,84(R12)   REVENUECODERANGEMATCHREQUIRED
         ST    R14,72(R13)
         L     R15,36(R11)   GAPCC040
         BASR  R14,R15
* NOW CHECK THE CHAIN(S) FOR ANY EDIT THAT NEEDS TO GET PROPAGATED DOW
* SET SUPPRESSION FLAG WHERE REQUIRED
*S2654: if( not do GAPC.RootAddonChainPresent( window, addonChain ) )
         LA    R14,88(R12)
         ST    R14,60(R13)
         LA    R14,64(R12)   WINDOW
         ST    R14,64(R13)
         LA    R14,72(R12)   ADDONCHAIN
         ST    R14,68(R13)
         L     R15,40(R11)   GAPCC039
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JNE   AAC03520
* STILL NEED TO RUN FindAddonEdit EVEN IF SUPPRESSED TO CORRECTLY SET
* TO EDIT IN THE CHAIN
*S2662: reset edit;
         XC    80(4,R12),80(R12)
*S2663: edit:=do GAPC.FindAddonEdit( addonChain, edit );
         LA    R14,80(R12)   EDIT
         ST    R14,60(R13)
         LA    R14,72(R12)   ADDONCHAIN
         ST    R14,64(R13)
         LA    R14,80(R12)   EDIT
         ST    R14,68(R13)
         L     R15,44(R11)   GAPCC038
         BASR  R14,R15
* WE DON'T WANT TO EDIT LINES WITH LIAF 2,3,4 (IGNORELINE) OR LIAF 1,
* WE ONLY EDIT LINES THAT ARE NOT SATISFIED ON ANY CHAIN. TYPE II ADDO
* ARE ALWAYS EDITED ABOVE.
*S2675: if( not (
*S2676: addonChain->line->Bits->SuppressAddonEditing
         L     R6,72(R12)   ADDONCHAIN
         L     R7,0(R6)   LINE
         TM    1086(R7),8   SUPPRESSADDONEDITING
         JNE   AAC03519
         L     R8,72(R12)   ADDONCHAIN
         L     R2,0(R8)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC03519
         L     R2,72(R12)   ADDONCHAIN
         L     R3,0(R2)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),62(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC03519
*S2677: or addonChain->line->Bits->IgnoreLine
*S2678: or addonChain->line->ActionFlag="1"
*S2679: ) ) then {
*S2680: if( edit=Edit->AddonTypeOneMissingPrimary ) then {
         L     R2,80(R12)   EDIT
         CHI   R2,106
         JNE   AAC03517
*S2686: do GAPC.SetEdit( Edit->AddonTypeOneMissingPrimary, addonChain-
         MVC   88(4,R12),48(R11)   106
         LA    R14,88(R12)
         ST    R14,64(R13)
         L     R3,72(R12)   ADDONCHAIN
         ST    R3,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S2687: addonChain->line->Bits->hasE106:=1;
         L     R4,72(R12)   ADDONCHAIN
         L     R5,0(R4)   LINE
         OI    1086(R5),1   HASE106
*S2688: }
*S2689: if( edit=Edit->AddonTypeThreeMissingPrimary ) then {
AAC03517 L     R2,80(R12)   EDIT
         CHI   R2,108
         JNE   AAC03518
*S2695: do GAPC.SetEdit( Edit->AddonTypeThreeMissingPrimary, addonChai
         MVC   88(4,R12),52(R11)   108
         LA    R14,88(R12)
         ST    R14,64(R13)
         L     R3,72(R12)   ADDONCHAIN
         ST    R3,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
*S2696: addonChain->line->Bits->hasE108:=1;
         L     R4,72(R12)   ADDONCHAIN
         L     R5,0(R4)   LINE
         OI    1087(R5),128   HASE108
*S2697: }
*S2698: }
*S2707: }
*S2709: }
* IF WE'RE AT THE END OF THE WINDOW, BREAK FROM THE LOOP, THIS CHECK I
*S2712: if( addonCodeLine=window->lastWindowLine ) then break;
AAC03518 EQU   *
AAC03519 EQU   *
AAC03520 EQU   *
AAC03521 L     R2,64(R12)   WINDOW
         L     R3,68(R12)   ADDONCODELINE
         C     R3,8(R2)   LASTWINDOWLINE
         JNE   AAC03522
         J     AAC03524
AAC03522 EQU   *
AAC03523 L     R2,68(R12)   ADDONCODELINE
         MVC   68(4,R12),44(R2)   NEXTWINDOWLINE
         J     AAC03515
AAC03524 EQU   *
AAC03525 L     R2,64(R12)   WINDOW
         MVC   64(4,R12),0(R2)   NEXTWINDOW
         J     AAC03514
AAC03526 EQU   *
AAC03527 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC042
**************************
GAPCC042 CSECT
GAPCC042 AMODE ANY
GAPCC042 RMODE ANY
*XREF - GAPCC042 GAPC.DrugAddonCodePairingEdits
*  R11 + 0000 Literals        (48 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (36 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 1120 (line2)
*        0072(R12)-> reference to Struct len 1120 (primaryCodeLine)
*        0076(R12)-> reference to Struct len 1120 (addonCodeLine)
*        0080(R12)-> Integer len 4 (rc)
*        0084(R12)-> Integer len 4 (revenueCodeRangeMatchRequired)
*        0088(R12)-> Unknown ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03603
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNSEL) @00012
         DC    F'5' @00016
         DC    A(DMNSCPYX) @00020
         DC    F'106' @00024
         DC    A(GAPCC091) @00028
         DC    H'2'  0 2 @00032
         DC    H'10'  0 10 @00034
         DC    H'1120'  4 96 @00036
         DC    H'4'  0 4 @00038
         DC    H'1'  0 1 @00040
         DC    H'5'  0 5 @00042
         DC    H'7'  0 7 @00044
         DC    CL2'85' @00046
AAC03603 XC    64(36,R12),64(R12)
* This is the addon line;
* This is a pointer to loop index for the claim
* For certain bill types we need to do revenue code matching.
*S2732: revenueCodeRangeMatchRequired:=( base->BillType="85" ) ? 1 : 0
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,46(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),32(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03606
         LHI   R2,0
         J     AAC03607
AAC03606 LHI   R2,1
AAC03607 ST    R2,84(R12)   REVENUECODERANGEMATCHREQUIRED
*S2734: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAC03608 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC03633
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),34(R11)   10
         MVC   66(2,R13),36(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC03633
*S2736: addonCodeLine := line;
         MVC   76(4,R12),64(R12)   LINE
* We've found a drug addon code and need to search for it's primary.
*S2739: if (addonCodeLine->flags->AddonDrugAdmin) then {
         L     R2,76(R12)   ADDONCODELINE
         TM    1099(R2),4   ADDONDRUGADMIN
         JE    AAC03630
* We need to look across the entire claim to find a primary
*S2741: loop( item2:=base->lines->first; item2 and (line2:=&item2->lin
         L     R3,28(R9)   LINES
         ST    R3,8(R9)   ITEM2
AAC03609 L     R15,8(R9)   ITEM2
         LTR   R15,R15
         JE    AAC03628
         MVC   60(4,R13),8(R9)   ITEM2
         MVC   64(2,R13),34(R11)   10
         MVC   66(2,R13),36(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   LINE2
         LTR   R2,R2   LINE
         JE    AAC03628
*S2742: primaryCodeLine := line2;
         MVC   72(4,R12),68(R12)   LINE2
*S2743: if (addonCodeLine->Hcpcs = primaryCodeLine->Hcpcs) then contin
         L     R2,76(R12)   ADDONCODELINE
         L     R3,72(R12)   PRIMARYCODELINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC03610
         J     AAC03626
*S2744: loop(rc:=select MapAddonDrugAdmin using byAddon(addonCodeLine-
AAC03610 MVC   60(2,R13),38(R11)   4
         MVC   62(2,R13),40(R11)   1
         LR    R14,R9
         AHI   R14,4112   MAPADDONDRUGADMIN
         ST    R14,64(R13)
         L     R2,76(R12)   ADDONCODELINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),42(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R4,72(R12)   PRIMARYCODELINE
         LA    R5,73(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),42(R11)   5
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAC03611
         L     R7,64(R13)
         AHI   R13,88
         LR    R14,R9
         AHI   R14,4120   MAPADDONDRUGADMIN
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LR    R14,R9
         AHI   R14,4132   MAPADDONDRUGADMIN
         ST    R14,60(R13)
         LA    R14,5(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         LR    R1,R9
         AHI   R1,4144
         MVC   0(2,R1),10(R7)
AAC03611 ST    R6,80(R12)   RC
AAC03612 L     R2,80(R12)   RC
         CHI   R2,1
         JNL   AAC03625
*S2745: if(MapAddonDrugAdmin->Addon= addonCodeLine->Hcpcs and MapAddon
         L     R3,76(R12)   ADDONCODELINE
         LR    R14,R9
         AHI   R14,4120   ADDON
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC03622
         L     R5,72(R12)   PRIMARYCODELINE
         LR    R14,R9
         AHI   R14,4132   ADDONPRIMARY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R5)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAC03622
*S2746: if(base->Version < MapAddonDrugAdmin->LoVersion or MapAddonDru
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4144
         TM    0(R1),128   LOVERSION
         JE    AAC03613
         LHI   R14,-1
AAC03613 LR    R1,R9
         AHI   R1,4144
         IC    R14,0(R1)   LOVERSION
         CR    R2,R14
         JL    AAC03615
         XR    R3,R3
         LR    R1,R9
         AHI   R1,4145
         TM    0(R1),128   HIVERSION
         JE    AAC03614
         LHI   R3,-1
AAC03614 LR    R1,R9
         AHI   R1,4145
         IC    R3,0(R1)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAC03616
AAC03615 J     AAC03623
* If we found a potential match but the revenue code matching is requi
* we need to move on a try to find another primary.
*S2749: if (revenueCodeRangeMatchRequired and (primaryCodeLine->Bits->
AAC03616 L     R15,84(R12)   REVENUECODERANGEMATCHREQUIRED
         LTR   R15,R15
         JE    AAC03621
         L     R2,72(R12)   PRIMARYCODELINE
         TM    1084(R2),1   HASPROFSERVICERC
         JNE   AAC03617
         XR    R3,R3
         J     AAC03618
AAC03617 LHI   R3,1
AAC03618 L     R4,76(R12)   ADDONCODELINE
         TM    1084(R4),1   HASPROFSERVICERC
         JNE   AAC03619
         XR    R5,R5
         J     AAC03620
AAC03619 LHI   R5,1
AAC03620 XR    R3,R5
         LTR   R3,R3
         JE    AAC03621
         J     AAC03623
*S2750: addonCodeLine->Bits->DrugCodeAddonSatisfied := 1;
AAC03621 L     R2,76(R12)   ADDONCODELINE
         OI    1086(R2),16   DRUGCODEADDONSATISFIED
*S2751: break;
         J     AAC03625
AAC03622 EQU   *
AAC03623 MVC   60(2,R13),44(R11)   7
         LR    R14,R9
         AHI   R14,4112   MAPADDONDRUGADMIN
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAC03624
         L     R3,64(R13)
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4120   MAPADDONDRUGADMIN
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LR    R14,R9
         AHI   R14,4132   MAPADDONDRUGADMIN
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         LR    R1,R9
         AHI   R1,4144
         MVC   0(2,R1),10(R3)
AAC03624 ST    R2,80(R12)   RC
         J     AAC03612
AAC03625 EQU   *
AAC03626 L     R2,8(R9)   ITEM2
         LTR   R2,R2
         JE    AAC03627
         L     R2,8(R2)
AAC03627 ST    R2,8(R9)   ITEM2
         J     AAC03609
*S2752: }
*S2753: }
*S2754: }
*S2755: if (not addonCodeLine->Bits->DrugCodeAddonSatisfied) then {
AAC03628 L     R2,76(R12)   ADDONCODELINE
         TM    1086(R2),16   DRUGCODEADDONSATISFIED
         JNE   AAC03629
*S2756: do GAPC.SetEdit(Edit->AddonTypeOneMissingPrimary, line, base->
         MVC   88(4,R12),24(R11)   106
         LA    R14,88(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,80(R13)
         XC    96(4,R12),96(R12)
         LA    R14,96(R12)
         ST    R14,84(R13)
         L     R15,28(R11)   GAPCC091
         BASR  R14,R15
AAC03629 EQU   *
AAC03630 EQU   *
AAC03631 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC03632
         L     R2,8(R2)
AAC03632 ST    R2,4(R9)   ITEM
         J     AAC03608
AAC03633 EQU   *
AAC03634 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC043
**************************
GAPCC043 CSECT
GAPCC043 AMODE ANY
GAPCC043 RMODE ANY
*XREF - GAPCC043 GAPC.PhpServiceHourEdits
*  R11 + 0000 Literals        (144 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (152 bytes)
*        0072(R12)-> reference to Struct len 44 (week)
*        0076(R12)-> reference to Struct len 628 (day)
*        0080(R12)-> reference to Struct len 1120 (line)
*        0084(R12)-> Integer len 4 (hourCount)
*        0088(R12)-> Integer len 4 (isAdmission)
*        0092(R12)-> Integer len 4 (isDischarge)
*        0096(R12)-> Integer len 4 (isAdjustment)
*        0100(R12)-> Integer len 4 (i)
*        0104(R12)-> Integer len 4 (hasMP)
*        0108(R12)-> Integer len 4 (hasMQ)
*        0112(R12)-> Integer len 4 (suppressEditing)
*        0116(R12)-> Integer len 4 (isMVApplicable)
*        0120(R12)-> Integer len 4 (isMWApplicable)
*        0124(R12)-> Integer len 4 (isQWApplicable)
*        0128(R12)-> Integer len 4 (qWDays)
*        0132(R12)-> Integer len 4 (isOutputQW)
*        0136(R12)-> Integer len 4 (qwHour)
*        0140(R12)-> Integer len 4 (qwFractionalHour)
*        0144(R12)-> Integer len 4 (editLastAdjustmentWeek)
*        0148(R12)-> String (vcQW)
*        0160(R12)-> String (ccMP)
*        0172(R12)-> String (ccMQ)
*        0184(R12)-> String (ccMV)
*        0196(R12)-> Integer len 4 (isFirstWeekOfClaim)
*        0200(R12)-> Unknown ()
*        0200(R12)-> Integer len 4 ()
*        0204(R12)-> Integer len 4 ()
*        0208(R12)-> Integer len 4 ()
*        0212(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 224)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,224  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03703
         DC    A(DMNSCPY) @00000
         DC    A(DMNSCMP) @00004
         DC    F'1' @00008
         DC    A(GAPCC131) @00012
         DC    F'100' @00016
         DC    F'95' @00020
         DC    A(GAPCC091) @00024
         DC    A(DMNFORM) @00028
         DC    A(DMNS2I) @00032
         DC    A(DMNFREE) @00036
         DC    H'2'  0 2 @00040
         DC    H'3'  0 3 @00042
         DC    H'10'  0 10 @00044
         DC    X'8018' @00046
         DC    CL2'QW' @00048
         DC    CL2'MP' @00050
         DC    CL2'MQ' @00052
         DC    CL2'MV' @00054
         DC    CL2'13' @00056
         DC    CL2'76' @00058
         DC    CL3'131' @00060
         DC    CL3'761' @00063
         DC    CL3'132' @00066
         DC    CL3'762' @00069
         DC    CL3'133' @00072
         DC    CL3'763' @00075
         DC    CL3'134' @00078
         DC    CL3'764' @00081
         DC    CL3'137' @00084
         DC    CL3'13G' @00087
         DC    CL3'13H' @00090
         DC    CL3'13I' @00093
         DC    CL3'13J' @00096
         DC    CL3'13L' @00099
         DC    CL3'13M' @00102
         DC    CL3'13Q' @00105
         DC    CL3'767' @00108
         DC    CL3'76G' @00111
         DC    CL3'76H' @00114
         DC    CL3'76I' @00117
         DC    CL3'76J' @00120
         DC    CL3'76L' @00123
         DC    CL3'76M' @00126
         DC    CL3'76Q' @00129
         DC    CL10'%i%02i%02i' @00132
AAC03703 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(84,R12),72(R12)
         ST    R2,156(R12)
         XC    160(8,R12),160(R12)
         ST    R2,168(R12)
         XC    172(8,R12),172(R12)
         ST    R2,180(R12)
         XC    184(8,R12),184(R12)
         ST    R2,192(R12)
         XC    196(24,R12),196(R12)
         ST    R2,220(R12)
*S2772: vcQW := "QW";
         LA    R14,148(R12)   VCQW
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,48(R11)   QW
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S2773: ccMP := "MP";
         LA    R14,160(R12)   CCMP
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   MP
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S2774: ccMQ := "MQ";
         LA    R14,172(R12)   CCMQ
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   MQ
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S2775: ccMV := "MV";
         LA    R14,184(R12)   CCMV
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,54(R11)   MV
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
* ABORT PROCESSING IF THE BILL TYPE ISN'T APPLICABLE
*S2779: if((claim->Bits->HasCc41 and base->BillType="13") or base->Bil
         TM    3000(R9),32   HASCC41
         JE    AAC03706
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03707
AAC03706 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC03725
*S2780: if( base->FullBillType="131" or base->FullBillType="761" ) the
AAC03707 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   131
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03708
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,63(R11)   761
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC03709
*S2781: isAdmission := 1;
AAC03708 MVC   88(4,R12),8(R11)   1
*S2782: isDischarge := 1;
         MVC   92(4,R12),8(R11)   1
         J     AAC03724
*S2783: }
*S2784: else if( base->FullBillType="132" or base->FullBillType="762"
AAC03709 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   132
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03710
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,69(R11)   762
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC03711
*S2785: isAdmission := 1;
AAC03710 MVC   88(4,R12),8(R11)   1
*S2786: isQWApplicable := 1;
         MVC   124(4,R12),8(R11)   1
*S2787: isMWApplicable := 1;
         MVC   120(4,R12),8(R11)   1
         J     AAC03723
*S2788: }
*S2789: else if( base->FullBillType="133" or base->FullBillType="763"
AAC03711 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   133
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03712
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,75(R11)   763
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC03713
*S2790: isQWApplicable := 1;
AAC03712 MVC   124(4,R12),8(R11)   1
*S2791: isMWApplicable := 1;
         MVC   120(4,R12),8(R11)   1
*S2792: isMVApplicable := 1;
         MVC   116(4,R12),8(R11)   1
         J     AAC03722
*S2793: }
*S2794: else if( base->FullBillType="134" or base->FullBillType="764"
AAC03713 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,78(R11)   134
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03714
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,81(R11)   764
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC03715
*S2795: isDischarge := 1;
AAC03714 MVC   92(4,R12),8(R11)   1
*S2796: isMVApplicable := 1;
         MVC   116(4,R12),8(R11)   1
         J     AAC03721
*S2797: }
* Adjustment claims should only get an edit on the last week provided
*S2799: else if (base->Version >= 76
AAC03715 L     R2,1868(R9)   VERSION
         CHI   R2,76
         JL    AAC03719
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R11)   137
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   13G
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   13H
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,93(R11)   13I
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R11)   13J
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,99(R11)   13L
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)   13M
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   13Q
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,108(R11)   767
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   76G
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   76H
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,117(R11)   76I
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R11)   76J
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,123(R11)   76L
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,126(R11)   76M
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03716
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,129(R11)   76Q
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   3
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC03719
*S2800: and (base->FullBillType="137"
*S2801: or base->FullBillType="13G"
*S2802: or base->FullBillType="13H"
*S2803: or base->FullBillType="13I"
*S2804: or base->FullBillType="13J"
*S2805: or base->FullBillType="13L"
*S2806: or base->FullBillType="13M"
*S2807: or base->FullBillType="13Q"
*S2808: or base->FullBillType="767"
*S2809: or base->FullBillType="76G"
*S2810: or base->FullBillType="76H"
*S2811: or base->FullBillType="76I"
*S2812: or base->FullBillType="76J"
*S2813: or base->FullBillType="76L"
*S2814: or base->FullBillType="76M"
*S2815: or base->FullBillType="76Q")) then {
*S2816: isAdjustment := 1;
AAC03716 MVC   96(4,R12),8(R11)   1
*S2817: isMWApplicable := 1;
         MVC   120(4,R12),8(R11)   1
*S2818: isQWApplicable := claim->Bits->HasCcMW;
         TM    3001(R9),2   HASCCMW
         JNE   AAC03717
         XR    R2,R2
         J     AAC03718
AAC03717 LHI   R2,1
AAC03718 ST    R2,124(R12)   ISQWAPPLICABLE
         J     AAC03720
*S2819: }
*S2820: else return;
AAC03719 J     AAC03797
AAC03720 EQU   *
AAC03721 EQU   *
AAC03722 EQU   *
AAC03723 EQU   *
AAC03724 J     AAC03726
*S2821: }
*S2822: else return;
AAC03725 J     AAC03797
* MAINTAINER NOTE V20.2:
* SOME OF THE BELOW PROCESSING IS NOT EFFECTIVE BEFORE JULY 2019. THIS
* WE RESET FLAGS TO NOT HAVE TO EMBED MANY IF STATEMENTS.
*S2827: if (base->Version < 76) then {
AAC03726 L     R2,1868(R9)   VERSION
         CHI   R2,76
         JNL   AAC03727
*S2828: isAdjustment := 0;
         XC    96(4,R12),96(R12)   ISADJUSTMENT
*S2829: isMVApplicable := 0;
         XC    116(4,R12),116(R12)   ISMVAPPLICABLE
*S2830: isMWApplicable := 0;
         XC    120(4,R12),120(R12)   ISMWAPPLICABLE
*S2831: isQWApplicable := 0;
         XC    124(4,R12),124(R12)   ISQWAPPLICABLE
*S2832: }
*S2834: if((isAdmission or isDischarge) and base->NumCc<30) then {
AAC03727 L     R15,88(R12)   ISADMISSION
         LTR   R15,R15
         JNE   AAC03728
         L     R15,92(R12)   ISDISCHARGE
         LTR   R15,R15
         JE    AAC03736
AAC03728 L     R2,1900(R9)   NUMCC
         CHI   R2,30
         JNL   AAC03736
*S2835: for( i:=0 until base->NumCc-1 ){
         XC    100(4,R12),100(R12)   I
AAC03729 L     R2,1900(R9)   NUMCC
         AHI   R2,-1
         C     R2,100(R12)   I
         JL    AAC03735
*S2836: hasMP := base->CcCodes[i]=ccMP ^ hasMP;
         LA    R3,140(R9)   CCCODES
         L     R4,100(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,160(R12)   CCMP
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAC03730
         XR    R6,R6
         J     AAC03731
AAC03730 LHI   R6,1
AAC03731 X     R6,104(R12)   HASMP
         ST    R6,104(R12)   HASMP
*S2837: hasMQ := base->CcCodes[i]=ccMQ ^ hasMQ;
         LA    R7,140(R9)   CCCODES
         L     R8,100(R12)   I
         MHI   R8,12
         AR    R7,R8
         ST    R7,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,172(R12)   CCMQ
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAC03732
         XR    R3,R3
         J     AAC03733
AAC03732 LHI   R3,1
AAC03733 X     R3,108(R12)   HASMQ
         ST    R3,108(R12)   HASMQ
AAC03734 LHI   R2,1
         A     R2,100(R12)   I
         ST    R2,100(R12)   I
         J     AAC03729
*S2838: }
*S2839: }
* ITERATE OVER A 7-DAY SPAN OF DAYS ON THE CLAIM
*S2842: loop( week:=base->firstWeek; week; week:=week->nextWeek ){
AAC03735 EQU   *
AAC03736 MVC   72(4,R12),68(R9)   FIRSTWEEK
AAC03737 L     R15,72(R12)   WEEK
         LTR   R15,R15
         JE    AAC03795
* ENSURE THAT AT LEAST ONE DAY EXISTS FOR THIS WEEK
*S2844: reset hourCount;
         XC    84(4,R12),84(R12)
*S2845: reset isFirstWeekOfClaim;
         XC    196(4,R12),196(R12)
* If we have any days on this week we calculate the hour count based o
*S2847: if( week->DayCount ) then {
         L     R2,72(R12)   WEEK
         L     R15,20(R2)   DAYCOUNT
         LTR   R15,R15
         JE    AAC03753
*S2848: if (week = base->firstWeek and isMVApplicable) then {
         L     R3,72(R12)   WEEK
         C     R3,68(R9)   FIRSTWEEK
         JNE   AAC03738
         L     R15,116(R12)   ISMVAPPLICABLE
         LTR   R15,R15
         JE    AAC03738
*S2849: isFirstWeekOfClaim := 1;
         MVC   196(4,R12),8(R11)   1
*S2850: hourCount += claim->QAHours * 100;
         L     R2,2988(R9)   QAHOURS
         MHI   R2,100
         A     R2,84(R12)   HOURCOUNT
         ST    R2,84(R12)   HOURCOUNT
*S2851: hourCount += claim->QAPartialHours;
         A     R2,2992(R9)   QAPARTIALHOURS
         ST    R2,84(R12)   HOURCOUNT
*S2852: }
* ITERATE OVERS DAYS OF THE CURRENT WEEK, AGGREGATING HOURS OF PHP SER
* ADD UP THE HOURS EVEN IF THE CLAIM SPANS LESS THAN 7 DAYS BECAUSE, I
* NO CONDITION CODE IS ASSIGNED
*S2856: loop( day:=week->firstDayOfWeek; day; day:=day->nextDayOfWeek
AAC03738 L     R2,72(R12)   WEEK
         MVC   76(4,R12),8(R2)   FIRSTDAYOFWEEK
AAC03739 L     R15,76(R12)   DAY
         LTR   R15,R15
         JE    AAC03752
* NOTHING TO TALLY IF THERE ARE NO PHP SERVICES ON THE DAY
*S2858: if( day->Bits->PhpServiceOnDay ) then {
         L     R2,76(R12)   DAY
         TM    627(R2),32   PHPSERVICEONDAY
         JE    AAC03750
*S2859: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,76(R12)   DAY
         MVC   80(4,R12),8(R3)   FIRSTDAYSITEMS
AAC03740 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAC03749
* WE DON'T WANT TO INCLUDE ADDON CODES IN THE COUNT
*S2861: if( line->flags->PhService and not line->flags->PhAddon) then
         L     R2,80(R12)   LINE
         TM    1093(R2),2   PHSERVICE
         JE    AAC03747
         L     R3,80(R12)   LINE
         TM    1094(R3),32   PHADDON
         JNE   AAC03747
*IF NO DURATION IS PROVIDED (Duration=0), TREAT AS 1 HOUR OF SERVICE
*S2863: switch( line->Duration ){
         L     R2,80(R12)   LINE
         L     R3,1056(R2)   DURATION
         LTR   R3,R3
         JL    AAC03746
         CHI   R3,3
         JH    AAC03746
         SLL   R3,2(R0)
         BRAS  R14,AAC03745
         J     AAC03741
         J     AAC03742
         J     AAC03743
         J     AAC03744
AAC03745 B     0(R3,R14)
*S2864: case DurationUnits->PERCENT_100:% 0 (DEFAULT)
*S2865: hourCount += line->ServiceUnits*100;
AAC03741 L     R2,80(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         MHI   R3,100
         A     R3,84(R12)   HOURCOUNT
         ST    R3,84(R12)   HOURCOUNT
*S2866: break;
         J     AAC03746
*S2867: case DurationUnits->PERCENT_25:% 1
*S2868: hourCount += line->ServiceUnits*25;
AAC03742 L     R2,80(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         MHI   R3,25
         A     R3,84(R12)   HOURCOUNT
         ST    R3,84(R12)   HOURCOUNT
*S2869: break;
         J     AAC03746
*S2870: case DurationUnits->PERCENT_50:% 2
*S2871: hourCount += line->ServiceUnits*50;
AAC03743 L     R2,80(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         MHI   R3,50
         A     R3,84(R12)   HOURCOUNT
         ST    R3,84(R12)   HOURCOUNT
*S2872: break;
         J     AAC03746
*S2873: case DurationUnits->PERCENT_75:% 3
*S2874: hourCount += line->ServiceUnits*75;
AAC03744 L     R2,80(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         MHI   R3,75
         A     R3,84(R12)   HOURCOUNT
         ST    R3,84(R12)   HOURCOUNT
*S2875: break;
AAC03746 EQU   *
AAC03747 EQU   *
AAC03748 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03740
AAC03749 EQU   *
AAC03750 EQU   *
AAC03751 L     R2,76(R12)   DAY
         MVC   76(4,R12),4(R2)   NEXTDAYOFWEEK
         J     AAC03739
AAC03752 J     AAC03755
*S2876: }
*S2877: }
*S2878: }
*S2879: }
*S2880: }
*S2881: }
* If we have no days on the week but we are MV applicable we take a lo
* if we are under 20. If so, we output MV. Additionally there are no c
*S2884: else if (week = base->firstWeek and isMVApplicable and claim->
AAC03753 L     R2,72(R12)   WEEK
         C     R2,68(R9)   FIRSTWEEK
         JNE   AAC03754
         L     R15,116(R12)   ISMVAPPLICABLE
         LTR   R15,R15
         JE    AAC03754
         L     R2,2988(R9)   QAHOURS
         MHI   R2,100
         CHI   R2,2000
         JNL   AAC03754
*S2885: do GAPC.addConditionCode(ccMV);
         LA    R14,184(R12)   CCMV
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC131
         BASR  R14,R15
*S2886: }
* If we're QW applicable and we're in the last week we need to calcula
* output value code amounts based off of the hours. For full weeks we
*S2889: if (isQWApplicable and week->WeekIndex = base->WeekCount-1 and
AAC03754 EQU   *
AAC03755 L     R15,124(R12)   ISQWAPPLICABLE
         LTR   R15,R15
         JE    AAC03759
         L     R2,72(R12)   WEEK
         L     R3,1944(R9)   WEEKCOUNT
         AHI   R3,-1
         C     R3,16(R2)   WEEKINDEX
         JNE   AAC03759
         L     R2,72(R12)   WEEK
         L     R3,24(R2)   CALDATEDIFFERENCE
         CHI   R3,7
         JNL   AAC03759
*S2890: isOutputQW := 1;
         MVC   132(4,R12),8(R11)   1
*S2891: if (week->CalDateDifference < 7) then {
         L     R2,72(R12)   WEEK
         L     R3,24(R2)   CALDATEDIFFERENCE
         CHI   R3,7
         JNL   AAC03758
*S2892: qWDays := week->CalDateDifference;
         L     R4,72(R12)   WEEK
         L     R5,24(R4)   CALDATEDIFFERENCE
         ST    R5,128(R12)   QWDAYS
*S2893: qwHour := hourCount / 100;
         XR    R14,R14
         L     R15,84(R12)   HOURCOUNT
         LTR   R15,R15
         JNL   AAC03756
         LHI   R14,-1
AAC03756 D     R14,16(R11)   100
         LR    R6,R15
         ST    R6,136(R12)   QWHOUR
*S2894: qwFractionalHour := hourCount mod 100;
         XR    R14,R14
         L     R15,84(R12)   HOURCOUNT
         LTR   R15,R15
         JNL   AAC03757
         LHI   R14,-1
AAC03757 D     R14,16(R11)   100
         LR    R7,R14
         ST    R7,140(R12)   QWFRACTIONALHOUR
*S2895: }
*S2896: }
* NOTE: IF NO DAYS EXIST FOR THE WEEK, WE'LL STILL WANT TO APPLY THE C
* AND LAST WEEKS OF THE CLAIM FOR ADMISSION AND DISCHARGE BILL TYPES.
*S2899: if(hourCount<2000) then {
AAC03758 EQU   *
AAC03759 L     R2,84(R12)   HOURCOUNT
         CHI   R2,2000
         JNL   AAC03770
* If we're under the 20 hours and we're on the dangling week we suppre
* EXCEPTION: In cases where we only have 1 week we don't suppress here
*S2902: suppressEditing := isQWApplicable
         L     R15,124(R12)   ISQWAPPLICABLE
         LTR   R15,R15
         JE    AAC03760
         L     R3,72(R12)   WEEK
         L     R4,1944(R9)   WEEKCOUNT
         AHI   R4,-1
         C     R4,16(R3)   WEEKINDEX
         JNE   AAC03760
         L     R2,1944(R9)   WEEKCOUNT
         CHI   R2,1
         JNH   AAC03760
         L     R2,72(R12)   WEEK
         L     R3,24(R2)   CALDATEDIFFERENCE
         CHI   R3,7
         JNL   AAC03760
         LHI   R2,1
         J     AAC03761
AAC03760 XR    R2,R2
AAC03761 ST    R2,112(R12)   SUPPRESSEDITING
*S2903: and week->WeekIndex = base->WeekCount-1
*S2904: and base->WeekCount > 1
*S2905: and week->CalDateDifference < 7;
*S2907: if (not suppressEditing) then {
         LTR   R2,R2
         JNE   AAC03769
* NOTE: KEEP THE FOLLOWING TWO CHECK SEPARATE, BILL TYPE 131 MAY APPLY
* ADD CONDITION CODE MP IF HANDLING AN ADMISSION CLAIM AND THE FIRST W
*S2910: if(isAdmission and week->WeekIndex=0) then {
         L     R15,88(R12)   ISADMISSION
         LTR   R15,R15
         JE    AAC03763
         L     R3,72(R12)   WEEK
         L     R4,16(R3)   WEEKINDEX
         LTR   R4,R4
         JNE   AAC03763
*S2911: if(not hasMP) then {
         L     R15,104(R12)   HASMP
         LTR   R15,R15
         JNE   AAC03762
*S2912: do GAPC.addConditionCode(ccMP);
         LA    R14,160(R12)   CCMP
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC131
         BASR  R14,R15
*S2913: }
*S2914: suppressEditing := 1;
AAC03762 MVC   112(4,R12),8(R11)   1
*S2915: }
* ADD CONDITION CODE MQ IF HANDLING A DISCHARGE CLAIM AND THE LAST WEE
* From July 2019 on, we use the last full 7 day week to determine MQ a
* claims it's the last calender days.
*S2919: if(isDischarge
AAC03763 L     R15,92(R12)   ISDISCHARGE
         LTR   R15,R15
         JE    AAC03768
         L     R2,1868(R9)   VERSION
         CHI   R2,76
         JNL   AAC03764
         L     R3,72(R12)   WEEK
         L     R4,1944(R9)   WEEKCOUNT
         AHI   R4,-1
         C     R4,16(R3)   WEEKINDEX
         JE    AAC03766
AAC03764 L     R2,1868(R9)   VERSION
         CHI   R2,76
         JL    AAC03765
         L     R3,72(R12)   WEEK
         L     R15,28(R3)   ISLAST7DAYWEEK
         LTR   R15,R15
         JNE   AAC03766
AAC03765 J     AAC03768
*S2920: and ((base -> Version < 76 and week->WeekIndex = base->WeekCou
*S2921: or (base -> Version >= 76 and week->IsLast7DayWeek))) then {
*S2922: if(not hasMQ) then {
AAC03766 L     R15,108(R12)   HASMQ
         LTR   R15,R15
         JNE   AAC03767
*S2923: do GAPC.addConditionCode(ccMQ);
         LA    R14,172(R12)   CCMQ
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC131
         BASR  R14,R15
*S2924: }
*S2925: suppressEditing := 1;
AAC03767 MVC   112(4,R12),8(R11)   1
*S2926: }
*S2927: }
*S2928: }
* Normal editing is suppressed if we have an adjustment claim or if we
* We do this after MP/MQ processing to sure that those CC are put on p
*S2932: suppressEditing := (isAdjustment or isOutputQW) ^ suppressEdit
AAC03768 EQU   *
AAC03769 EQU   *
AAC03770 L     R15,96(R12)   ISADJUSTMENT
         LTR   R15,R15
         JNE   AAC03771
         L     R15,132(R12)   ISOUTPUTQW
         LTR   R15,R15
         JNE   AAC03771
         XR    R2,R2
         J     AAC03772
AAC03771 LHI   R2,1
AAC03772 X     R2,112(R12)   SUPPRESSEDITING
         ST    R2,112(R12)   SUPPRESSEDITING
* If we have MW on the claim and we're not suppressing editing due to
* is the first half of an adjustment claim.
*S2936: editLastAdjustmentWeek := not hasMQ and isMWApplicable and cla
         L     R15,108(R12)   HASMQ
         LTR   R15,R15
         JNE   AAC03773
         L     R15,120(R12)   ISMWAPPLICABLE
         LTR   R15,R15
         JE    AAC03773
         TM    3001(R9),2   HASCCMW
         JE    AAC03773
         L     R2,72(R12)   WEEK
         L     R3,1944(R9)   WEEKCOUNT
         AHI   R3,-1
         C     R3,16(R2)   WEEKINDEX
         JNE   AAC03773
         LHI   R2,1
         J     AAC03774
AAC03773 XR    R2,R2
AAC03774 ST    R2,144(R12)   EDITLASTADJUSTMENTWEEK
* V20.2 There's two conditions where we need to edit the line for edit
* 1. If we have less than 20 hours and we're not suppressing editing d
* 2. We've received a MW condition code on input resulting in the OCE
* Danglers do not get edited unless we get a MW input.
*S2942: if ((hourCount < 2000 and not suppressEditing) or editLastAdju
         L     R3,84(R12)   HOURCOUNT
         CHI   R3,2000
         JNL   AAC03775
         L     R15,112(R12)   SUPPRESSEDITING
         LTR   R15,R15
         JE    AAC03776
AAC03775 L     R15,144(R12)   EDITLASTADJUSTMENTWEEK
         LTR   R15,R15
         JE    AAC03791
*S2943: if(week->DayCount) then {
AAC03776 L     R2,72(R12)   WEEK
         L     R15,20(R2)   DAYCOUNT
         LTR   R15,R15
         JE    AAC03790
*S2944: loop(day:=week->firstDayOfWeek; day; day:=day->nextDayOfWeek){
         L     R3,72(R12)   WEEK
         MVC   76(4,R12),8(R3)   FIRSTDAYOFWEEK
AAC03777 L     R15,76(R12)   DAY
         LTR   R15,R15
         JE    AAC03789
*S2945: if(day->Bits->PhpServiceOnDay) then {
         L     R2,76(R12)   DAY
         TM    627(R2),32   PHPSERVICEONDAY
         JE    AAC03787
*S2946: loop(line:=day->firstDaysItems; line; line:=line->nextSameDay)
         L     R3,76(R12)   DAY
         MVC   80(4,R12),8(R3)   FIRSTDAYSITEMS
AAC03778 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAC03786
*S2947: if(line->flags->PhService and not line->flags->PhAddon) then {
         L     R2,80(R12)   LINE
         TM    1093(R2),2   PHSERVICE
         JE    AAC03784
         L     R3,80(R12)   LINE
         TM    1094(R3),32   PHADDON
         JNE   AAC03784
*S2948: if (base -> Version < 76 or (base -> Version >= 76 and (not da
         L     R2,1868(R9)   VERSION
         CHI   R2,76
         JL    AAC03781
         L     R3,1868(R9)   VERSION
         CHI   R3,76
         JL    AAC03780
         L     R4,76(R12)   DAY
         TM    627(R4),16   DAYONLASTPARTIALWEEK
         JE    AAC03779
         L     R15,144(R12)   EDITLASTADJUSTMENTWEEK
         LTR   R15,R15
         JE    AAC03780
AAC03779 J     AAC03781
AAC03780 J     AAC03783
*S2949: do GAPC.SetEdit(Edit->PHPServiceCountNotMet, line, base->NoDxp
AAC03781 MVC   200(4,R12),20(R11)   95
         LA    R14,200(R12)
         ST    R14,64(R13)
         LA    R14,80(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,76(R12)   DAY
         ST    R14,76(R13)
         XC    204(4,R12),204(R12)
         LA    R14,204(R12)
         ST    R14,80(R13)
         XC    208(4,R12),208(R12)
         LA    R14,208(R12)
         ST    R14,84(R13)
         L     R15,24(R11)   GAPCC091
         BASR  R14,R15
*S2950: if (isFirstWeekOfClaim and claim->HasQAValueCode) then {
         L     R15,196(R12)   ISFIRSTWEEKOFCLAIM
         LTR   R15,R15
         JE    AAC03782
         L     R15,2980(R9)   HASQAVALUECODE
         LTR   R15,R15
         JE    AAC03782
*S2951: do GAPC.addConditionCode(ccMV);
         LA    R14,184(R12)   CCMV
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC131
         BASR  R14,R15
AAC03782 EQU   *
AAC03783 EQU   *
AAC03784 EQU   *
AAC03785 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03778
AAC03786 EQU   *
AAC03787 EQU   *
AAC03788 L     R2,76(R12)   DAY
         MVC   76(4,R12),4(R2)   NEXTDAYOFWEEK
         J     AAC03777
*S2952: }
*S2953: }
*S2954: }
*S2955: }
*S2956: }
*S2957: }
*S2958: }
*S2959: }
* If we've come across the final week and we have a full (7 day) week
* blank day/hour/partial. We xor this here in case we've set QW above.
*S2962: isOutputQW := (week->WeekIndex = base->WeekCount-1 and week->C
AAC03789 EQU   *
AAC03790 EQU   *
AAC03791 L     R2,72(R12)   WEEK
         L     R3,1944(R9)   WEEKCOUNT
         AHI   R3,-1
         C     R3,16(R2)   WEEKINDEX
         JNE   AAC03792
         L     R4,72(R12)   WEEK
         L     R5,24(R4)   CALDATEDIFFERENCE
         CHI   R5,7
         JNE   AAC03792
         L     R15,124(R12)   ISQWAPPLICABLE
         LTR   R15,R15
         JE    AAC03792
         LHI   R2,1
         J     AAC03793
AAC03792 XR    R2,R2
AAC03793 X     R2,132(R12)   ISOUTPUTQW
         ST    R2,132(R12)   ISOUTPUTQW
AAC03794 L     R2,72(R12)   WEEK
         MVC   72(4,R12),0(R2)   NEXTWEEK
         J     AAC03737
*S2963: }
* IF we need to output QW we do in the last slot of the value codes. T
* DHHhh where D is day HH is whole hour and hh is fraction of whole ho
*S2966: if (isOutputQW) then {
AAC03795 L     R15,132(R12)   ISOUTPUTQW
         LTR   R15,R15
         JE    AAC03796
*S2967: claim->ValueCodeSet[ValueCode->PHP_TRUNCATED_WEEK]->value := v
         LA    R14,2120(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,148(R12)   VCQW
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S2968: claim->ValueCodeSet[ValueCode->PHP_TRUNCATED_WEEK]->amount :=
         LA    R14,212(R12)
         ST    R14,60(R13)
         LA    R14,132(R11)   %I%02I%02I
         ST    R14,64(R13)
         MVC   68(2,R13),44(R11)   10
         MVC   72(4,R13),128(R12)   QWDAYS
         MVC   76(4,R13),136(R12)   QWHOUR
         MVC   80(4,R13),140(R12)   QWFRACTIONALHOUR
         MVC   70(2,R13),46(R11)   32792
         L     R15,28(R11)   DMNFORM
         BASR  R14,R15
         LA    R14,212(R12)
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,32(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,2132(R9)   AMOUNT
AAC03796 EQU   *
AAC03797 EQU   *
AAC03798 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,36(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC044
**************************
GAPCC044 CSECT
GAPCC044 AMODE ANY
GAPCC044 RMODE ANY
*XREF - GAPCC044 GAPC.PartialHospitalization
*  R11 + 0000 Literals        (112 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (56 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 1120 (compositeLine)
*        0084(R12)-> String (caf)
*        0096(R12)-> String (phapc)
*        0108(R12)-> Integer len 4 (phpCount)
*        0112(R12)-> Integer len 4 (psychoTherapyCount)
*        0116(R12)-> Unknown ()
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03803
         DC    F'109' @00000
         DC    A(GAPCC091) @00004
         DC    F'29' @00008
         DC    A(DMNSCMP) @00012
         DC    F'80' @00016
         DC    F'30' @00020
         DC    F'2' @00024
         DC    A(DMNSCPY) @00028
         DC    A(GAPCC115) @00032
         DC    A(GAPCC069) @00036
         DC    A(GAPCC114) @00040
         DC    A(GAPCC119) @00044
         DC    A(DMNFREE) @00048
         DC    H'1'  0 1 @00052
         DC    H'2'  0 2 @00054
         DC    H'5'  0 5 @00056
         DC    CL1'1' @00058
         DC    CL2'13' @00059
         DC    CL5'05863' @00061
         DC    CL5'05862' @00066
         DC    CL5'05861' @00071
         DC    CL5'00176' @00076
         DC    CL5'00175' @00081
         DC    CL5'05853' @00086
         DC    CL5'05852' @00091
         DC    CL5'05851' @00096
         DC    CL5'00173' @00101
         DC    CL5'00172' @00106
AAC03803 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(20,R12),72(R12)
         ST    R2,92(R12)
         XC    96(8,R12),96(R12)
         ST    R2,104(R12)
         XC    108(20,R12),108(R12)
* Partial Hospitalization Logic
* Edits 29, (disabled:30, 32, 33, 34)
* Edits 80, 30, 31, 109
* eff 1/1/08, v9.0 use new code lists
* Edit 29 - No Mental Health Diagnosis
* Edit 109 - Code first DX missing Mental Health DX in SDX
* MAINTAINER NOTE: If a code is marked as both a MH and CODE first, th
* falls apart as the HadMentalHealthDX flag is set to true so the code
* is not enforced.
*S2992: if( not claim->Bits->HadMentalHealthDx ) then {
         TM    3002(R9),4   HADMENTALHEALTHDX
         JNE   AAC03808
* V20.0, IF SEX EXPLOITATION DX IS IN PDX POSITION AND NO MH DX IS IN
* OTHERWISE, APPLY E29 AS USUAL
*S2995: if(claim->Bits->CodeFirst and base->Version >= 73) then {
         TM    3006(R9),8   CODEFIRST
         JE    AAC03806
         L     R2,1868(R9)   VERSION
         CHI   R2,73
         JL    AAC03806
*S2996: do GAPC.SetEdit( Edit->CodeFirstRequiresMH, base->NoLine, base
         MVC   116(4,R12),0(R11)   109
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
         J     AAC03807
*S2997: }
*S2998: else {
*S2999: do GAPC.SetEdit( Edit->NotMentalDx, base->NoLine, base->NoDxp,
AAC03806 MVC   116(4,R12),8(R11)   29
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S3000: }
*S3001: }
*S3003: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
AAC03807 EQU   *
AAC03808 MVC   72(4,R12),60(R9)   FIRSTVISIT
AAC03809 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAC03859
*S3005: reset compositeLine;
         XC    80(4,R12),80(R12)
*S3006: reset phpCount;
         XC    108(4,R12),108(R12)
*S3007: reset psychoTherapyCount;
         XC    112(4,R12),112(R12)
*S3011: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAC03810 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC03823
* COUNT UP ALL PHP SERVICES FOR THE DAY
*S3014: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat or
         L     R2,76(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC03820
         L     R3,76(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC03820
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAC03811
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC03820
*S3016: if( line->flags->PhPrimary ) then {
AAC03811 L     R2,76(R12)   LINE
         TM    1093(R2),4   PHPRIMARY
         JE    AAC03814
*S3018: phpCount +=line->ServiceUnits;
         L     R3,76(R12)   LINE
         L     R4,108(R12)   PHPCOUNT
         A     R4,468(R3)   SERVICEUNITS
         ST    R4,108(R12)   PHPCOUNT
*S3019: psychoTherapyCount +=line->ServiceUnits;
         L     R5,76(R12)   LINE
         L     R6,112(R12)   PSYCHOTHERAPYCOUNT
         A     R6,468(R5)   SERVICEUNITS
         ST    R6,112(R12)   PSYCHOTHERAPYCOUNT
* FIRST PHP PYSCHOTHERAPY SERVICE BECOMES PRIMARY OVER OTHER PHP SERVI
*S3022: if( not ( compositeLine and compositeLine->flags->PhPrimary )
         L     R15,80(R12)   COMPOSITELINE
         LTR   R15,R15
         JE    AAC03812
         L     R7,80(R12)   COMPOSITELINE
         TM    1093(R7),4   PHPRIMARY
         JNE   AAC03813
*S3023: compositeLine:=line;
AAC03812 MVC   80(4,R12),76(R12)   LINE
AAC03813 J     AAC03819
*S3024: }
*S3026: }
*S3027: else if( line->flags->PhService ) then {
AAC03814 L     R2,76(R12)   LINE
         TM    1093(R2),2   PHSERVICE
         JE    AAC03818
* V14.0, EFFECTIVE 2013-01-01, EXCLUDE ALL PhService FLAGGED SERVICES
* VERSIONS 50 OR GREATER FOR LIST B
*S3031: if( base->Version < 50 or not line->flags->PhAddon ) then {
         L     R3,1868(R9)   VERSION
         CHI   R3,50
         JL    AAC03815
         L     R4,76(R12)   LINE
         TM    1094(R4),32   PHADDON
         JNE   AAC03816
*S3032: phpCount +=line->ServiceUnits;
AAC03815 L     R2,76(R12)   LINE
         L     R3,108(R12)   PHPCOUNT
         A     R3,468(R2)   SERVICEUNITS
         ST    R3,108(R12)   PHPCOUNT
*S3033: }
* FIRST PHP SERVICE BECOMES PRIMARY IF NO PYSCHOTHERAPY FOUND ON DAY
*S3036: if( not compositeLine ) then {
AAC03816 L     R15,80(R12)   COMPOSITELINE
         LTR   R15,R15
         JNE   AAC03817
*S3037: compositeLine:=line;
         MVC   80(4,R12),76(R12)   LINE
*S3038: }
*S3039: }
*S3040: }
* Edit 80 - Mental Health Codes Not Approved for 13x PH Program
*S3050: if( line->flags->MhNotPh
AAC03817 EQU   *
AAC03818 EQU   *
AAC03819 EQU   *
AAC03820 L     R2,76(R12)   LINE
         TM    1094(R2),128   MHNOTPH
         JE    AAC03821
         L     R3,76(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAC03821
         L     R4,76(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAC03821
*S3051: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S3052: do GAPC.SetEdit( Edit->MhNotPh, line, base->NoDxp, base->NoDay
         MVC   116(4,R12),16(R11)   80
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAC03821 EQU   *
AAC03822 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03810
*S3053: }
*S3055: }
* NOTE: IF NO PSYCHOTHERAPY (LIST A) OR LESS THAN 3 PH SERVICES (LIST
* Edit 30 - Insufficient PH Services on Day
*S3084: if( psychoTherapyCount < 1
AAC03823 L     R2,112(R12)   PSYCHOTHERAPYCOUNT
         CHI   R2,1
         JL    AAC03824
         L     R3,108(R12)   PHPCOUNT
         CHI   R3,3
         JNL   AAC03832
*S3085: or phpCount < 3 ) then {
* Retro change v18.2. Don't edit addon lines if the day count
* is less than the required amount otherwise edit the line.
*S3093: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAC03824 L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAC03825 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC03831
*S3094: if(( line->flags->PhPrimary
         L     R2,76(R12)   LINE
         TM    1093(R2),4   PHPRIMARY
         JNE   AAC03826
         L     R3,76(R12)   LINE
         TM    1093(R3),2   PHSERVICE
         JE    AAC03829
AAC03826 L     R2,1868(R9)   VERSION
         CHI   R2,67
         JL    AAC03828
         L     R3,1868(R9)   VERSION
         CHI   R3,66
         JNH   AAC03827
         L     R4,76(R12)   LINE
         TM    1094(R4),32   PHADDON
         JE    AAC03828
AAC03827 J     AAC03829
*S3095: or line->flags->PhService )
*S3096: and ( base->Version < 67
*S3097: or ( base->Version > 66
*S3098: and not line->flags->PhAddon ))) then {
*S3099: do GAPC.SetEdit( Edit->PhInsuffServ, line, base->NoDxp, base->
AAC03828 MVC   116(4,R12),20(R11)   30
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   120(4,R12),24(R11)   2
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAC03829 EQU   *
AAC03830 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03825
AAC03831 J     AAC03857
*S3100: }
*S3101: }
*S3105: }
* SET PARTIAL HOSPITALIZATION COMPOSITE APC
*S3107: /*v10.0, eff 1/1/09 we need to test if it Met the ph criteria
*S3108:   denied with Edit 30 come after the day->PhLine setting loop
*S3109: else if( compositeLine ) then {
AAC03832 L     R15,80(R12)   COMPOSITELINE
         LTR   R15,R15
         JE    AAC03856
*S3118: if( base->BillType="13" ) then {
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,59(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),54(R11)   2
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAC03841
* V18.0, EFFECTIVE 2017-01-01,  APC REPLACEMENT: APC 5861 AND 5862 FOR
*S3120: if( 65 < base->Version ) then {
         L     R3,1868(R9)   VERSION
         CHI   R3,65
         JNH   AAC03833
*S3121: phapc:= "05863";
         LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   05863
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC03840
*S3122: }
* V17.0, EFFECTIVE 2016-01-01,  APC REPLACEMENT: APC 175 FOR 5861 AND
*S3124: else if( 61 < base->Version ) then {
AAC03833 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC03836
*S3125: phapc:=( phpCount < 4 )? "05861" : "05862";
         L     R3,108(R12)   PHPCOUNT
         CHI   R3,4
         JL    AAC03834
         LA    R2,66(R11)   05862
         J     AAC03835
AAC03834 LA    R2,71(R11)   05861
AAC03835 LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC03839
*S3126: }
* V12.0, EFFECTIVE 2011-01-01,  APC REPLACEMENT: APC 172 FOR 175 AND A
*S3128: else {
*S3129: phapc:=( phpCount < 4 )? "00175" : "00176";
AAC03836 L     R2,108(R12)   PHPCOUNT
         CHI   R2,4
         JL    AAC03837
         LA    R2,76(R11)   00176
         J     AAC03838
AAC03837 LA    R2,81(R11)   00175
AAC03838 LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
AAC03839 EQU   *
AAC03840 J     AAC03850
*S3130: }
*S3131: }
*S3132: else {
* V18.0, EFFECTIVE 2017-01-01,  APC REPLACEMENT
*S3134: if( 65 < base->Version ) then {
AAC03841 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAC03842
*S3135: phapc:= "05853";
         LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)   05853
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC03849
*S3136: }
* V17.0, EFFECTIVE 2016-01-01,  APC REPLACEMENT
*S3138: else if( 61 < base->Version ) then {
AAC03842 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC03845
*S3139: phapc:=( phpCount < 4 )? "05851" : "05852";
         L     R3,108(R12)   PHPCOUNT
         CHI   R3,4
         JL    AAC03843
         LA    R2,91(R11)   05852
         J     AAC03844
AAC03843 LA    R2,96(R11)   05851
AAC03844 LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC03848
*S3140: }
*S3141: else {
* v10.0, eff 1/1/09 PH APC is assigned either 4 or more PH services AP
*S3143: phapc:=( phpCount < 4 )? "00172" : "00173";
AAC03845 L     R2,108(R12)   PHPCOUNT
         CHI   R2,4
         JL    AAC03846
         LA    R2,101(R11)   00173
         J     AAC03847
AAC03846 LA    R2,106(R11)   00172
AAC03847 LA    R14,96(R12)   PHAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),56(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
*S3144: }
*S3145: }
* Set composite adjustment flag, v10.0 eff 1/1/09
*S3148: do GAPC.SetApcAssignment( compositeLine, phapc );
AAC03848 EQU   *
AAC03849 EQU   *
AAC03850 LA    R14,80(R12)   COMPOSITELINE
         ST    R14,64(R13)
         LA    R14,96(R12)   PHAPC
         ST    R14,68(R13)
         L     R15,32(R11)   GAPCC115
         BASR  R14,R15
*S3149: caf :=do GAPC.GetNextCAF();
         LA    R14,84(R12)   CAF
         ST    R14,60(R13)
         L     R15,36(R11)   GAPCC069
         BASR  R14,R15
*S3150: compositeLine->CompAdjFlag :=caf;
         L     R2,80(R12)   COMPOSITELINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R12)   CAF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
*S3151: compositeLine->PayAdjFlag :=0;%keep legacy reset after 1/1/09
         L     R3,80(R12)   COMPOSITELINE
         XC    544(4,R3),544(R3)   PAYADJFLAG
*S3153: do GAPC.ReduceUnits( compositeLine );
         LA    R14,80(R12)   COMPOSITELINE
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC114
         BASR  R14,R15
* PACKAGE ALL OTHER DAILY PHP SERVICES AND ASSIGN COMPOSITE ADJUSTMENT
*S3156: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R4,72(R12)   DAY
         MVC   76(4,R12),8(R4)   FIRSTDAYSITEMS
AAC03851 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC03855
*S3157: if( line->flags->PhService
         L     R2,76(R12)   LINE
         TM    1093(R2),2   PHSERVICE
         JE    AAC03853
         L     R3,76(R12)   LINE
         C     R3,80(R12)   COMPOSITELINE
         JE    AAC03853
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAC03853
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAC03853
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAC03852
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC03853
*S3158: and not (
*S3159: line=compositeLine
*S3160: or line->Bits->IgnoreLine or line->Bits->IgnoreInpat or ( line
*S3165: ) ) then {
* Other PHP services set SI to N eff 1/1/08, v9.0
*S3168: do GAPC.PackageCode( line );
AAC03852 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,44(R11)   GAPCC119
         BASR  R14,R15
*S3169: line->CompAdjFlag :=caf;
         L     R2,76(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R12)   CAF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
*S3170: line->Bits->IgnoreComp :=1;/*v10.1, eff 1/1/09 ignore in later
         L     R3,76(R12)   LINE
         OI    1081(R3),8   IGNORECOMP
AAC03853 EQU   *
AAC03854 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03851
AAC03855 EQU   *
AAC03856 EQU   *
AAC03857 EQU   *
AAC03858 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAC03809
AAC03859 EQU   *
AAC03860 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,48(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC045
**************************
GAPCC045 CSECT
GAPCC045 AMODE ANY
GAPCC045 RMODE ANY
*XREF - GAPCC045 GAPC.Edit35Logic
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (24 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Integer len 4 (educationalServicesOnly)
*        0076(R12)-> Unknown ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC03903
         DC    F'1' @00000
         DC    F'35' @00004
         DC    A(GAPCC091) @00008
AAC03903 XC    64(24,R12),64(R12)
* Edit 35 logic. Day reported with only educational codes.
*S3184: loop(day:=base->firstVisit; day; day:=day->nextVisit){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAC03906 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAC03918
*S3185: educationalServicesOnly := 1;
         MVC   72(4,R12),0(R11)   1
*S3186: loop(line:=day->firstDaysItems; line; line:=line->nextSameDay)
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC03907 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC03911
*S3187: educationalServicesOnly := educationalServicesOnly and line->f
         L     R15,72(R12)   EDUCATIONALSERVICESONLY
         LTR   R15,R15
         JE    AAC03908
         L     R2,68(R12)   LINE
         TM    1091(R2),64   EDUCATIONAL
         JE    AAC03908
         LHI   R2,1
         J     AAC03909
AAC03908 XR    R2,R2
AAC03909 ST    R2,72(R12)   EDUCATIONALSERVICESONLY
AAC03910 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03907
*S3188: }
* Edit 35 - Only Mental Health Education and Training Services Provide
*S3190: if(educationalServicesOnly) then {
AAC03911 L     R15,72(R12)   EDUCATIONALSERVICESONLY
         LTR   R15,R15
         JE    AAC03916
*S3191: loop(line:=day->firstDaysItems; line; line:=line->nextSameDay)
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAC03912 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAC03915
*S3192: if(line->flags->Educational) then {
         L     R2,68(R12)   LINE
         TM    1091(R2),64   EDUCATIONAL
         JE    AAC03913
* V21.2 We need to track on the day and claim level here as the Edit 2
* the claim level while MH logic needs checks on the day level.
*S3195: day->Bits->HasEdit35 := 1;
         L     R3,64(R12)   DAY
         OI    627(R3),8   HASEDIT35
*S3196: claim->Bits->HasEdit35 := 1;
         OI    3006(R9),4   HASEDIT35
*S3197: do GAPC.SetEdit( Edit->OnlyActOccTherapy, line, base->NoDxp, b
         MVC   76(4,R12),4(R11)   35
         LA    R14,76(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,80(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAC03913 EQU   *
AAC03914 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC03912
AAC03915 EQU   *
AAC03916 EQU   *
AAC03917 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAC03906
AAC03918 EQU   *
AAC03919 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC046
**************************
GAPCC046 CSECT
GAPCC046 AMODE ANY
GAPCC046 RMODE ANY
*XREF - GAPCC046 GAPC.MentalHealthLogic
*  R11 + 0000 Literals        (64 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (52 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 1120 (compositeLine)
*        0084(R12)-> Integer len 4 (mentalHealthTotal)
*        0088(R12)-> String (caf)
*        0100(R12)-> Unknown ()
*        0100(R12)-> Integer len 4 ()
*        0104(R12)-> Integer len 4 ()
*        0108(R12)-> Integer len 4 ()
*        0112(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC04003
         DC    F'81' @00000
         DC    A(GAPCC091) @00004
         DC    F'64' @00008
         DC    F'63' @00012
         DC    A(DMNSCMP) @00016
         DC    A(DMNSCPY) @00020
         DC    A(GAPCC115) @00024
         DC    A(GAPCC069) @00028
         DC    F'1' @00032
         DC    A(GAPCC114) @00036
         DC    A(GAPCC119) @00040
         DC    A(DMNFREE) @00044
         DC    H'1'  0 1 @00048
         DC    H'5'  0 5 @00050
         DC    CL1'1' @00052
         DC    CL5'08010' @00053
         DC    CL5'00034' @00058
AAC04003 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(24,R12),72(R12)
         ST    R2,96(R12)
         XC    100(20,R12),100(R12)
         ST    R2,120(R12)
* Mental Health Logic
* Edits 81, 64, 63, 35, 36
*S3214: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAC04006 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAC04028
*S3216: reset mentalHealthTotal;
         XC    84(4,R12),84(R12)
*S3217: reset compositeLine;
         XC    80(4,R12),80(R12)
*S3219: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAC04007 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC04017
*S3221: if( not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
         L     R2,76(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC04012
         L     R3,76(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAC04012
* Edit 81 - PH Service Not Payable Outside The PH Program, v10.0, eff.
*S3224: if( line->flags->PhNotMh ) then {
         L     R2,76(R12)   LINE
         TM    1094(R2),64   PHNOTMH
         JE    AAC04008
*S3225: do GAPC.SetEdit( Edit->PhNotMh, line, base->NoDxp, base->NoDay
         MVC   100(4,R12),0(R11)   81
         LA    R14,100(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    104(4,R12),104(R12)
         LA    R14,104(R12)
         ST    R14,80(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S3226: }
*S3228: if( base->Version < 50 ) then {
AAC04008 L     R2,1868(R9)   VERSION
         CHI   R2,50
         JNL   AAC04011
* Edit 64 - AT Service Not Payable Outside the Partial Hospitalization
*S3231: if( line->flags->ActivityTherapy ) then {
         L     R3,76(R12)   LINE
         TM    1090(R3),128   ACTIVITYTHERAPY
         JE    AAC04009
*S3232: do GAPC.SetEdit( Edit->ATnotPH, line, base->NoDxp, base->NoDay
         MVC   100(4,R12),8(R11)   64
         LA    R14,100(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    104(4,R12),104(R12)
         LA    R14,104(R12)
         ST    R14,80(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S3233: }
* Edit 63 - OT Code Only Billed on Partial Hospitalization Claims, eff
*S3236: if( line->flags->OccupationalTherapy ) then {
AAC04009 L     R2,76(R12)   LINE
         TM    1090(R2),64   OCCUPATIONALTHERAPY
         JE    AAC04010
*S3237: do GAPC.SetEdit( Edit->OTnotPH, line, base->NoDxp, base->NoDay
         MVC   100(4,R12),12(R11)   63
         LA    R14,100(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    104(4,R12),104(R12)
         LA    R14,104(R12)
         ST    R14,80(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S3238: }
*S3240: }
*S3242: }
*S3244: if( line->flags->DailyMentalHealth
AAC04010 EQU   *
AAC04011 EQU   *
AAC04012 L     R2,76(R12)   LINE
         TM    1093(R2),1   DAILYMENTALHEALTH
         JE    AAC04015
         L     R3,76(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAC04015
         L     R4,76(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAC04015
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAC04013
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC04015
*S3245: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat or
* SUM DMH SERVICE PAYMENTS FOR TEST BELOW
*S3248: mentalHealthTotal+=( line->ApcPayment*line->ServiceUnits );
AAC04013 L     R2,76(R12)   LINE
         L     R3,76(R12)   LINE
         XR    R14,R14
         L     R15,528(R2)   APCPAYMENT
         M     R14,468(R3)   SERVICEUNITS
         LR    R4,R15
         A     R4,84(R12)   MENTALHEALTHTOTAL
         ST    R4,84(R12)   MENTALHEALTHTOTAL
* CHOOSE THE FIRST MH LINE ENCOUNTERED FOR THE COMPOSITE
*S3251: if( not ( compositeLine
         L     R15,80(R12)   COMPOSITELINE
         LTR   R15,R15
         JNE   AAC04014
*S3256: ) ) then {
*S3257: compositeLine:=line;
         MVC   80(4,R12),76(R12)   LINE
AAC04014 EQU   *
AAC04015 EQU   *
AAC04016 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC04007
*S3258: }
*S3260: }
*S3262: }
* CREATE THE MH COMPOSITE IF THE TOTAL PAYMENT FOR MH IS GREATER THAN
*S3265: if(not day->Bits->HasEdit35 and base->SumPhPay < mentalHealthT
AAC04017 L     R2,72(R12)   DAY
         TM    627(R2),8   HASEDIT35
         JNE   AAC04026
         L     R3,1888(R9)   SUMPHPAY
         C     R3,84(R12)   MENTALHEALTHTOTAL
         JNL   AAC04026
* Assign Daily Mental Heath Service Payment APC
*S3268: if( 61 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAC04018
*S3269: do GAPC.SetApcAssignment( compositeLine, "08010" );
         LA    R14,80(R12)   COMPOSITELINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   08010
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,112(R12)
         ST    R14,68(R13)
         L     R15,24(R11)   GAPCC115
         BASR  R14,R15
         J     AAC04019
*S3270: }
*S3271: else{
*S3272: do GAPC.SetApcAssignment( compositeLine, "00034" );
AAC04018 LA    R14,80(R12)   COMPOSITELINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   00034
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,112(R12)
         ST    R14,68(R13)
         L     R15,24(R11)   GAPCC115
         BASR  R14,R15
*S3273: }
*S3274: if( compositeLine->PackagingFlag ) then {
AAC04019 L     R2,80(R12)   COMPOSITELINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAC04020
*S3275: compositeLine->PackagingFlag :=0;
         L     R3,80(R12)   COMPOSITELINE
         XC    540(4,R3),540(R3)   PACKAGINGFLAG
*S3276: }
*S3277: caf :=do GAPC.GetNextCAF();
AAC04020 LA    R14,88(R12)   CAF
         ST    R14,60(R13)
         L     R15,28(R11)   GAPCC069
         BASR  R14,R15
*S3278: compositeLine->CompAdjFlag :=caf;
         L     R2,80(R12)   COMPOSITELINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R12)   CAF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S3279: compositeLine->DiscountingFactor :=1;
         L     R3,80(R12)   COMPOSITELINE
         MVC   536(4,R3),32(R11)   1
* NEEDS TO SET PAF TO ZERO
*S3282: do GAPC.ReduceUnits( compositeLine );
         LA    R14,80(R12)   COMPOSITELINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC114
         BASR  R14,R15
* PACKAGE ALL OTHER DAILY MENTAL HEALTH SERVICES AND ASSIGN COMPOSITE
*S3285: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R4,72(R12)   DAY
         MVC   76(4,R12),8(R4)   FIRSTDAYSITEMS
AAC04021 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAC04025
*S3287: if( line->flags->DailyMentalHealth
         L     R2,76(R12)   LINE
         TM    1093(R2),1   DAILYMENTALHEALTH
         JE    AAC04023
         L     R3,76(R12)   LINE
         C     R3,80(R12)   COMPOSITELINE
         JE    AAC04023
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAC04023
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAC04023
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAC04022
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAC04023
*S3288: and not (
*S3289: line=compositeLine
*S3290: or line->Bits->IgnoreLine or line->Bits->IgnoreInpat or ( line
*S3295: ) ) then {
* Other DMH services set SI to N eff 1/1/08, v9.0
*S3298: do GAPC.PackageCode( line );
AAC04022 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC119
         BASR  R14,R15
*S3299: line->CompAdjFlag :=caf;%v10.0, 1/1/09 new CAF
         L     R2,76(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R12)   CAF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S3300: line->Bits->IgnoreComp :=1;%v10.1, eff 1/1/09 ignore in later
         L     R3,76(R12)   LINE
         OI    1081(R3),8   IGNORECOMP
AAC04023 EQU   *
AAC04024 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAC04021
AAC04025 EQU   *
AAC04026 EQU   *
AAC04027 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAC04006
AAC04028 EQU   *
AAC04029 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,44(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC047
**************************
GAPCC047 CSECT
GAPCC047 AMODE ANY
GAPCC047 RMODE ANY
*XREF - GAPCC047 GAPC.CheckServPayable
*  R11 + 0000 Literals        (44 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (44 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (deniedOrRejectedLines)
*        0080(R12)-> Integer len 4 (siEqualsNLines)
*        0084(R12)-> Integer len 4 (combinedLineCount)
*        0088(R12)-> Integer len 4 (hadQ_N)
*        0092(R12)-> String ()
*        0104(R12)-> Unknown ()
*        0104(R12)-> Integer len 4 ()
*        0108(R12)-> Integer len 4 ()
*        0112(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 120)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,120  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC04103
         DC    A(DMNATFD) @00000
         DC    A(DMNSCMP) @00004
         DC    F'0' @00008
         DC    F'1' @00012
         DC    A(DMNSUBS) @00016
         DC    F'47' @00020
         DC    A(GAPCC091) @00024
         DC    A(DMNFREE) @00028
         DC    H'10'  0 10 @00032
         DC    H'1120'  4 96 @00034
         DC    H'1'  0 1 @00036
         DC    CL1'1' @00038
         DC    CL1'N' @00039
         DC    CL1'Q' @00040
AAC04103 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(28,R12),72(R12)
         ST    R2,100(R12)
         XC    104(12,R12),104(R12)
* Edits 47
* Claim consists entirely of a combination of lines that are denied
* or rejected or have a service indicator of N.
* First go thru all lines and see if we have only N and/or denied line
*S3326: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC04106 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC04116
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),32(R11)   10
         MVC   66(2,R13),34(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC04116
*S3328: /*-- Denied is defined as L.I deny/reject flag 1 or 2 with L.I
*S3329:   -- or L.I action flag 2, 3 or 4 (ignored line)        */
*S3330: /* NOTE: I DON'T THINK THE DENIALFLAG CAN EVER BE ANYTHING OTH
*S3331:    * THE DENIALFLAG ONLY GETS SET TO 2 IN THE SET CLAIM DISPOS
*S3332:    * */
*S3333: if( line->Bits->IgnoreLine
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC04109
         L     R3,72(R12)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,38(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAC04108
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,1
         JE    AAC04107
         L     R7,72(R12)   LINE
         L     R8,548(R7)   DENIALFLAG
         CHI   R8,2
         JNE   AAC04108
AAC04107 J     AAC04109
AAC04108 J     AAC04110
*S3334: or ( line->ActionFlag<>"1" and ( line->DenialFlag=1 or line->D
*S3335: deniedOrRejectedLines +=1;
AAC04109 LHI   R2,1
         A     R2,76(R12)   DENIEDORREJECTEDLINES
         ST    R2,76(R12)   DENIEDORREJECTEDLINES
*S3336: combinedLineCount +=1;
         LHI   R3,1
         A     R3,84(R12)   COMBINEDLINECOUNT
         ST    R3,84(R12)   COMBINEDLINECOUNT
         J     AAC04113
*S3337: }
*S3338: else if( line->StatusIndicator="N" ) then {
AAC04110 L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,39(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC04112
*S3339: siEqualsNLines +=1;
         LHI   R4,1
         A     R4,80(R12)   SIEQUALSNLINES
         ST    R4,80(R12)   SIEQUALSNLINES
*S3340: combinedLineCount +=1;
         LHI   R5,1
         A     R5,84(R12)   COMBINEDLINECOUNT
         ST    R5,84(R12)   COMBINEDLINECOUNT
*S3342: if( StrPartial( line->OriginalSI, 0, 1 )="Q" ) then {
         L     R6,72(R12)   LINE
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,192(R6)   ORIGINALSI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),8(R11)   0
         MVC   76(4,R13),12(R11)   1
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,40(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAC04111
*S3343: hadQ_N +=1;/*v8.3 workaround for Qs going to N*/
         LHI   R8,1
         A     R8,88(R12)   HADQ_N
         ST    R8,88(R12)   HADQ_N
AAC04111 EQU   *
AAC04112 EQU   *
AAC04113 EQU   *
AAC04114 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC04115
         L     R2,8(R2)
AAC04115 ST    R2,4(R9)   ITEM
         J     AAC04106
*S3344: }
*S3346: }
*S3347: }
* do only if all lines are either den/rej and/or N
*S3350: /*claim made up of denied OR N lines*/
*S3351: if( combinedLineCount=base->LinesProcessed
AAC04116 L     R2,84(R12)   COMBINEDLINECOUNT
         C     R2,1928(R9)   LINESPROCESSED
         JNE   AAC04118
         L     R15,76(R12)   DENIEDORREJECTEDLINES
         LTR   R15,R15
         JNE   AAC04117
         L     R15,80(R12)   SIEQUALSNLINES
         LTR   R15,R15
         JE    AAC04118
AAC04117 J     AAC04120
AAC04118 L     R2,80(R12)   SIEQUALSNLINES
         C     R2,1928(R9)   LINESPROCESSED
         JNE   AAC04119
         L     R15,88(R12)   HADQ_N
         LTR   R15,R15
         JNE   AAC04120
AAC04119 J     AAC04126
*S3352: and ( deniedOrRejectedLines or siEqualsNLines )
*S3354: or ( siEqualsNLines=base->LinesProcessed and hadQ_N )
*S3356: ) then {
* Edit 47 - Service is Not Separately Payable
* Assign edit 47 to each 'N' line that is not already denied/rejected
*S3360: loop( item:=base->lines->first; item and (line:=&item->line, l
AAC04120 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC04121 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC04125
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),32(R11)   10
         MVC   66(2,R13),34(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC04125
*S3361: if( line->StatusIndicator="N"
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,39(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC04122
         L     R4,72(R12)   LINE
         L     R5,548(R4)   DENIALFLAG
         LTR   R5,R5
         JNE   AAC04122
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAC04122
*S3362: and line->DenialFlag=0
*S3363: and not line->Bits->IgnoreLine ) then {
*S3364: do GAPC.SetEdit( Edit->ServNotSepPay, line, base->NoDxp, base-
         MVC   104(4,R12),20(R11)   47
         LA    R14,104(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,80(R13)
         XC    112(4,R12),112(R12)
         LA    R14,112(R12)
         ST    R14,84(R13)
         L     R15,24(R11)   GAPCC091
         BASR  R14,R15
AAC04122 EQU   *
AAC04123 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC04124
         L     R2,8(R2)
AAC04124 ST    R2,4(R9)   ITEM
         J     AAC04121
AAC04125 EQU   *
AAC04126 EQU   *
AAC04127 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,28(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC048
**************************
GAPCC048 CSECT
GAPCC048 AMODE ANY
GAPCC048 RMODE ANY
*XREF - GAPCC048 GAPC.SetLineItemContractorOverrides
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAC04203
         DC    A(DMNATFD) @00000
         DC    A(DMNSCPY) @00004
         DC    F'27' @00008
         DC    F'4' @00012
         DC    A(GAPCC127) @00016
         DC    A(DMNSCMP) @00020
         DC    H'10'  0 10 @00024
         DC    H'1120'  4 96 @00026
         DC    H'1'  0 1 @00028
         DC    CL1'V' @00030
         DC    CL1'W' @00031
         DC    CL1'X' @00032
         DC    CL1'Y' @00033
         DC    CL1'Z' @00034
AAC04203 XC    64(12,R12),64(R12)
*S3376: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAC04206 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAC04219
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),24(R11)   10
         MVC   66(2,R13),26(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAC04219
*S3377: if (line->Bits->isBypassOCEOutput) then {
         L     R2,64(R12)   LINE
         TM    1086(R2),4   ISBYPASSOCEOUTPUT
         JE    AAC04207
*S3378: line->StatusIndicator := line->CBSI;
         L     R3,64(R12)   LINE
         L     R4,64(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,368(R4)   CBSI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S3379: line->PaymentIndicator := line->CBPaymentIndicator;
         L     R5,64(R12)   LINE
         L     R6,64(R12)   LINE
         L     R7,380(R6)   CBPAYMENTINDICATOR
         ST    R7,204(R5)   PAYMENTINDICATOR
*S3380: line->PaymentApc := line->CBAPC;
         L     R8,64(R12)   LINE
         L     R2,64(R12)   LINE
         LA    R14,512(R8)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,356(R2)   CBAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
* The below fields all have potential conversion issues as we allow ga
* but need to output an integer per the previously established API. If
* is set, the return code will be updated and the CPF will be set to 4
* stringToIntConversion function will return the passed in integer and
*S3386: line->DiscountingFactor := do GAPC.stringToIntConversion(line-
         L     R3,64(R12)   LINE
         LA    R14,536(R3)   DISCOUNTINGFACTOR
         ST    R14,60(R13)
         L     R4,64(R12)   LINE
         LA    R14,384(R4)   CBDISCOUNTINGFORMULA
         ST    R14,64(R13)
         MVC   68(4,R12),8(R11)   27
         LA    R14,68(R12)
         ST    R14,68(R13)
         MVC   72(4,R12),12(R11)   4
         LA    R14,72(R12)
         ST    R14,72(R13)
         L     R15,16(R11)   GAPCC127
         BASR  R14,R15
*S3387: line->DenialFlag := do GAPC.stringToIntConversion(line->CBLine
         L     R5,64(R12)   LINE
         LA    R14,548(R5)   DENIALFLAG
         ST    R14,60(R13)
         L     R6,64(R12)   LINE
         LA    R14,396(R6)   CBLINEITEMDENREJFLAG
         ST    R14,64(R13)
         MVC   68(4,R12),8(R11)   27
         LA    R14,68(R12)
         ST    R14,68(R13)
         MVC   72(4,R12),12(R11)   4
         LA    R14,72(R12)
         ST    R14,72(R13)
         L     R15,16(R11)   GAPCC127
         BASR  R14,R15
*S3388: line->PackagingFlag := do GAPC.stringToIntConversion(line->CBP
         L     R7,64(R12)   LINE
         LA    R14,540(R7)   PACKAGINGFLAG
         ST    R14,60(R13)
         L     R8,64(R12)   LINE
         LA    R14,408(R8)   CBPACKAGINGFLAG
         ST    R14,64(R13)
         MVC   68(4,R12),8(R11)   27
         LA    R14,68(R12)
         ST    R14,68(R13)
         MVC   72(4,R12),12(R11)   4
         LA    R14,72(R12)
         ST    R14,72(R13)
         L     R15,16(R11)   GAPCC127
         BASR  R14,R15
*S3389: line->PayAdjFlag := do GAPC.stringToIntConversion(line->CBPAF,
         L     R2,64(R12)   LINE
         LA    R14,544(R2)   PAYADJFLAG
         ST    R14,60(R13)
         L     R3,64(R12)   LINE
         LA    R14,420(R3)   CBPAF
         ST    R14,64(R13)
         MVC   68(4,R12),8(R11)   27
         LA    R14,68(R12)
         ST    R14,68(R13)
         MVC   72(4,R12),12(R11)   4
         LA    R14,72(R12)
         ST    R14,72(R13)
         L     R15,16(R11)   GAPCC127
         BASR  R14,R15
*S3390: }
*S3392: if (line->Bits->isRequiresZPMF) then {
AAC04207 L     R2,64(R12)   LINE
         TM    1086(R2),2   ISREQUIRESZPMF
         JE    AAC04216
* In cases where we have X/Y in for the PMF we want to also output X/Y
* we output Z.
*S3395: if (line->CBPMF = "V") then line->PayMethFlag := "V";
         L     R3,64(R12)   LINE
         LA    R14,432(R3)   CBPMF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAC04208
         L     R5,64(R12)   LINE
         LA    R14,208(R5)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC04215
*S3396: else if (line->CBPMF = "W") then line->PayMethFlag := "W";
AAC04208 L     R2,64(R12)   LINE
         LA    R14,432(R2)   CBPMF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,31(R11)   W
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC04209
         L     R4,64(R12)   LINE
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,31(R11)   W
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC04214
*S3397: else if (line->CBPMF = "X") then line->PayMethFlag := "X";
AAC04209 L     R2,64(R12)   LINE
         LA    R14,432(R2)   CBPMF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,32(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC04210
         L     R4,64(R12)   LINE
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,32(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC04213
*S3398: else if (line->CBPMF = "Y") then line->PayMethFlag := "Y";
AAC04210 L     R2,64(R12)   LINE
         LA    R14,432(R2)   CBPMF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,33(R11)   Y
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAC04211
         L     R4,64(R12)   LINE
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,33(R11)   Y
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         J     AAC04212
*S3399: else line->PayMethFlag := "Z";
AAC04211 L     R2,64(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,34(R11)   Z
         ST    R14,64(R13)
         MVC   70(2,R13),28(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
AAC04212 EQU   *
AAC04213 EQU   *
AAC04214 EQU   *
AAC04215 EQU   *
AAC04216 EQU   *
AAC04217 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAC04218
         L     R2,8(R2)
AAC04218 ST    R2,4(R9)   ITEM
         J     AAC04206
AAC04219 EQU   *
AAC04220 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:36 2020
*^ IDENTS - GAPCC AAD
**************************
*    GAPCC049
**************************
GAPCC049 CSECT
GAPCC049 AMODE ANY
GAPCC049 RMODE ANY
*XREF - GAPCC049 GAPC.PackageObs
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00103
         DC    A(GAPCC119) @00000
* v7.0 eff 1/1/06 package the obs if conditions not met
* Instead of Edit, we package. Note: can call this with either
* direct admit or special cases, they are mutually exclusive
*S9: do GAPC.PackageCode( line );% NOTE: CAN'T BE USED IF WE CLEAR OUT
AAD00103 MVC   64(4,R13),64(R12)   LINE
         L     R15,0(R11)   GAPCC119
         BASR  R14,R15
*S10: line->Bits->HasObs2 :=0;%negate as payable observation for Speci
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         NI    1082(R3),239   HASOBS2
*S11: line->Bits->HasDirectAdmObs :=0;%negate as payable observation f
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         NI    1082(R5),253   HASDIRECTADMOBS
AAD00106 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC050
**************************
GAPCC050 CSECT
GAPCC050 AMODE ANY
GAPCC050 RMODE ANY
*XREF - GAPCC050 GAPC.E58
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Unknown ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*        0080(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00203
         DC    A(DMNSCMP) @00000
         DC    F'58' @00004
         DC    A(GAPCC091) @00008
         DC    A(GAPCC049) @00012
         DC    H'1'  0 1 @00016
         DC    CL1'1' @00018
AAD00203 XC    64(20,R12),64(R12)
* Edits 58
* Edit 58 - G0379 Only Allowed with G0378 (ObservationDirectAdmit Code
* ObservationDirectAdmit coded without special observation (new codes)
* Then check for payable obs if special observation present
*S23: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00206 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00216
*S24: if( day->Bits->HasDirectAdmObs ) then {
         L     R2,64(R12)   DAY
         TM    625(R2),2   HASDIRECTADMOBS
         JE    AAD00214
*S25: if( not day->Bits->HasObs2 ) then {
         L     R3,64(R12)   DAY
         TM    625(R3),16   HASOBS2
         JNE   AAD00213
*S26: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
         L     R4,64(R12)   DAY
         MVC   68(4,R12),8(R4)   FIRSTDAYSITEMS
AAD00207 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00212
*S27: if( line->Bits->HasDirectAdmObs
         L     R2,68(R12)   LINE
         TM    1082(R2),2   HASDIRECTADMOBS
         JE    AAD00210
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAD00210
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAD00210
*S28: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
*S30: /*finished with this flag, can use same method to flag payment*/
*S31: line->Bits->HasDirectAdmObs:=0;
         L     R2,68(R12)   LINE
         NI    1082(R2),253   HASDIRECTADMOBS
*S32: /*eff. 1/1/08 reset the APC, SI=Q in this case to match distribu
*S33: /*10.3 eff. retro 1/1/08 - make Q cases consistent for line deni
*S34:          - don't change SI if line is denied/rejected without LI
*S35: if( not ( line->DenialFlag=1 and line->ActionFlag<>"1" ) ) then
         L     R3,68(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         CHI   R4,1
         JNE   AAD00208
         L     R5,68(R12)   LINE
         LA    R14,156(R5)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAD00209
*S36: do GAPC.SetEdit( Edit->NoPayableObs, line, base->NoDxp, base->No
AAD00208 MVC   72(4,R12),4(R11)   58
         LA    R14,72(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,80(R13)
         XC    80(4,R12),80(R12)
         LA    R14,80(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S37: do GAPC.PackageObs( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC049
         BASR  R14,R15
AAD00209 EQU   *
AAD00210 EQU   *
AAD00211 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00207
AAD00212 EQU   *
AAD00213 EQU   *
AAD00214 EQU   *
AAD00215 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00206
AAD00216 EQU   *
AAD00217 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC051
**************************
GAPCC051 CSECT
GAPCC051 AMODE ANY
GAPCC051 RMODE ANY
*XREF - GAPCC051 GAPC.CheckTypeT_EM
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (line2)
*        0076(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00303
         DC    A(DMNSCMP) @00000
         DC    A(GAPCC049) @00004
         DC    H'1'  0 1 @00008
         DC    CL1'1' @00010
AAD00303 XC    64(12,R12),64(R12)
* v7.0, eff 1/1/06: If Type T procedure or E/M or CC  present on day o
* dir admit obs, package the dir admit obs code
*S75: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00306 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00322
*S77: if( day->Bits->HasDirectAdmObs
         L     R2,64(R12)   DAY
         TM    625(R2),2   HASDIRECTADMOBS
         JE    AAD00320
         L     R3,64(R12)   DAY
         TM    625(R3),32   HASTYPET
         JNE   AAD00307
         L     R4,64(R12)   DAY
         TM    625(R4),8   ERVISIT
         JE    AAD00320
*S78: and ( day->Bits->HasTypeT or day->Bits->ERVisit ) ) then {
*S80: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
AAD00307 L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00308 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00319
*S82: if( line->Bits->HasDirectAdmObs
         L     R2,68(R12)   LINE
         TM    1082(R2),2   HASDIRECTADMOBS
         JE    AAD00317
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAD00317
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAD00317
*S83: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
*S85: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSameD
         L     R2,64(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00309 L     R15,72(R12)   LINE2
         LTR   R15,R15
         JE    AAD00316
*S87: if( ( line2->Bits->HasTypeT or line2->Bits->ERVisit )
         L     R2,72(R12)   LINE2
         TM    1082(R2),32   HASTYPET
         JNE   AAD00310
         L     R3,72(R12)   LINE2
         TM    1082(R3),8   ERVISIT
         JE    AAD00314
AAD00310 L     R2,72(R12)   LINE2
         TM    1081(R2),16   IGNOREFOROBS
         JNE   AAD00314
         L     R3,72(R12)   LINE2
         TM    1082(R3),2   HASDIRECTADMOBS
         JNE   AAD00314
*S88: and not ( line2->Bits->IgnoreForObs or line2->Bits->HasDirectAdm
*S89: /* 10.3 eff. retro 1/1/08 - make Q cases consistent for line den
*S90:         * don't change SI if line is denied/rejected without LIA
*S91: if( not ( line->DenialFlag=1 and line->ActionFlag<>"1" ) ) then
         L     R2,68(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAD00311
         L     R4,68(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAD00312
*S92: do GAPC.PackageObs( line );
AAD00311 LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,4(R11)   GAPCC049
         BASR  R14,R15
         J     AAD00313
*S93: }
*S94: /* 10.3 we need to retain this, which was done inside package ob
*S95:         * that don't pay, because when the logic falls through i
*S96: else line->Bits->HasDirectAdmObs:=0;
AAD00312 L     R2,68(R12)   LINE
         NI    1082(R2),253   HASDIRECTADMOBS
*S97: break;
AAD00313 J     AAD00316
AAD00314 EQU   *
AAD00315 L     R2,72(R12)   LINE2
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00309
AAD00316 EQU   *
AAD00317 EQU   *
AAD00318 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00308
AAD00319 EQU   *
AAD00320 EQU   *
AAD00321 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00306
AAD00322 EQU   *
AAD00323 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC052
**************************
GAPCC052 CSECT
GAPCC052 AMODE ANY
GAPCC052 RMODE ANY
*XREF - GAPCC052 GAPC.CheckTypeTV
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00403
         DC    A(DMNSCMP) @00000
         DC    A(GAPCC049) @00004
         DC    H'1'  0 1 @00008
         DC    H'5'  0 5 @00010
         DC    CL1'T' @00012
         DC    CL1'V' @00013
         DC    CL5'05041' @00014
AAD00403 XC    64(8,R12),64(R12)
*S112: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00406 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00419
*S114: if( day->Bits->HasDirectAdmObs ) then {
         L     R2,64(R12)   DAY
         TM    625(R2),2   HASDIRECTADMOBS
         JE    AAD00417
* FIND V, T, OR CRITCAL CARE APC 5041
*S116: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,64(R12)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAD00407 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00411
*S117: if( ( line->StatusIndicator="T" or line->StatusIndicator="V" or
         L     R2,68(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAD00408
         L     R4,68(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,13(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAD00408
         L     R2,68(R12)   LINE
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   05041
         ST    R14,64(R13)
         MVC   70(2,R13),10(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAD00409
AAD00408 L     R2,68(R12)   LINE
         TM    1081(R2),16   IGNOREFOROBS
         JNE   AAD00409
         L     R3,68(R12)   LINE
         TM    1082(R3),2   HASDIRECTADMOBS
         JNE   AAD00409
*S118: and not ( line->Bits->IgnoreForObs or line->Bits->HasDirectAdmO
         J     AAD00411
AAD00409 EQU   *
AAD00410 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00407
*S119: }
* IF FOUND, PACKAGE ALL G0379 LINES
*S121: if( line ) then {
AAD00411 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00416
*S122: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00412 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00415
*S123: if( line->Bits->HasDirectAdmObs ) then {
         L     R2,68(R12)   LINE
         TM    1082(R2),2   HASDIRECTADMOBS
         JE    AAD00413
*S124: do GAPC.PackageObs( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,4(R11)   GAPCC049
         BASR  R14,R15
AAD00413 EQU   *
AAD00414 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00412
AAD00415 EQU   *
AAD00416 EQU   *
AAD00417 EQU   *
AAD00418 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00406
AAD00419 EQU   *
AAD00420 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC053
**************************
GAPCC053 CSECT
GAPCC053 AMODE ANY
GAPCC053 RMODE ANY
*XREF - GAPCC053 GAPC.SetDirAdmObsApc
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00503
         DC    A(DMNSCMP) @00000
         DC    A(GAPCC117) @00004
         DC    H'1'  0 1 @00008
         DC    CL1'1' @00010
AAD00503 XC    64(8,R12),64(R12)
*S138: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00506 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00513
*S139: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00507 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAD00511
* if conditions met set payment apc (HasObs2 flag still on)
*S141: /*10.3 eff. retro 1/1/08 - make Q cases consistent for line den
*S142:   - don't change SI if line is denied/rejected without LIAF=1,
*S143: if( line->Bits->HasDirectAdmObs
         L     R2,68(R12)   LINE
         TM    1082(R2),2   HASDIRECTADMOBS
         JE    AAD00509
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAD00509
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAD00509
         L     R2,68(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAD00508
         L     R4,68(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAD00509
*S144: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S145: and not ( line->DenialFlag=1 and line->ActionFlag<>"1" ) ) then
*S146: do GAPC.SetConditionalApc( line );
AAD00508 LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,4(R11)   GAPCC117
         BASR  R14,R15
AAD00509 EQU   *
AAD00510 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00507
AAD00511 EQU   *
AAD00512 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00506
AAD00513 EQU   *
AAD00514 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC054
**************************
GAPCC054 CSECT
GAPCC054 AMODE ANY
GAPCC054 RMODE ANY
*XREF - GAPCC054 GAPC.StatusIndicatorTPresent
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (day)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> reference to Struct len 1120 (l)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00603
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    H'1'  0 1 @00008
         DC    CL1'T' @00010
AAD00603 XC    68(4,R12),68(R12)
*S155: loop( l:=day->firstDaysItems; l; l:=l->nextSameDay ){
         L     R2,64(R12)   DAY
         L     R3,0(R2)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAD00606 L     R15,68(R12)   L
         LTR   R15,R15
         JE    AAD00609
*S156: if( l->StatusIndicator="T" ) then {
         L     R2,68(R12)   L
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAD00607
*S157: return 1;
         L     R4,60(R12)
         MVC   0(4,R4),4(R11)   1
         J     AAD00610
AAD00607 EQU   *
AAD00608 L     R2,68(R12)   L
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00606
*S158: }
*S159: }
*S160: return 0;
AAD00609 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAD00610 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC055
**************************
GAPCC055 CSECT
GAPCC055 AMODE ANY
GAPCC055 RMODE ANY
*XREF - GAPCC055 GAPC.Composite2APCObs
*  R11 + 0000 Literals        (56 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (64 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 628 (day2)
*        0072(R12)-> reference to Struct len 628 (prevvis)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 1120 (line2)
*        0084(R12)-> Integer len 4 (i)
*        0088(R12)-> Integer len 4 (hadBnoA)
*        0092(R12)-> Integer len 4 (hasprevdayT)
*        0096(R12)-> Integer len 4 (hasnextdayunits)
*        0100(R12)-> Integer len 4 (hasnextdayB)
*        0104(R12)-> Integer len 4 (hasnextdayT)
*        0108(R12)-> Integer len 4 (dayspan)
*        0112(R12)-> Integer len 4 (levelcount)
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> Unknown ()
*        0124(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00703
         DC    F'1' @00000
         DC    A(DMNLONG) @00004
         DC    F'2' @00008
         DC    A(DMNBTWNX) @00012
         DC    A(GAPCC054) @00016
         DC    A(DMNSCPY) @00020
         DC    A(DMNS2I) @00024
         DC    A(GAPCC114) @00028
         DC    A(GAPCC088) @00032
         DC    A(GAPCC089) @00036
         DC    A(GAPCC069) @00040
         DC    A(GAPCC049) @00044
         DC    F'57' @00048
         DC    A(GAPCC091) @00052
AAD00703 XC    64(64,R12),64(R12)
*FIX FOR CHANGE FROM 2 LEVELS TO ONE LEVEL FOR E/M COMPOSITE
*S172: levelcount:=( base->Version < 54 )? 2 : 1;
         L     R2,1868(R9)   VERSION
         CHI   R2,54
         JL    AAD00706
         LHI   R2,1
         J     AAD00707
AAD00706 LHI   R2,2
AAD00707 ST    R2,112(R12)   LEVELCOUNT
* v9.0, eff 1/1/08 EAM composite APC logic
*S175: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00708 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00746
*S177: loop( i:=1; i<=levelcount; i+=1 ){
         MVC   84(4,R12),0(R11)   1
AAD00709 L     R2,84(R12)   I
         C     R2,112(R12)   LEVELCOUNT
         JH    AAD00744
*S178: reset line;
         XC    76(4,R12),76(R12)
*S180: hasnextdayB :=0;
         XC    100(4,R12),100(R12)   HASNEXTDAYB
*S181: hasnextdayunits :=0;
         XC    96(4,R12),96(R12)   HASNEXTDAYUNITS
*S182: hasprevdayT :=0;
         XC    92(4,R12),92(R12)   HASPREVDAYT
*S183: hasnextdayT :=0;
         XC    104(4,R12),104(R12)   HASNEXTDAYT
*S184: dayspan :=0;
         XC    108(4,R12),108(R12)   DAYSPAN
*S186: if( day->nextVisit ) then {
         L     R3,64(R12)   DAY
         L     R15,0(R3)   NEXTVISIT
         LTR   R15,R15
         JE    AAD00714
*S187: dayspan:=DateBetween(day->firstDaysItems->ServiceDate,day->next
         L     R4,64(R12)   DAY
         L     R5,8(R4)   FIRSTDAYSITEMS
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R5)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R6,64(R12)   DAY
         L     R7,0(R6)   NEXTVISIT
         L     R8,8(R7)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R8)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),8(R11)   2
         L     R15,12(R11)   DMNBTWNX
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,108(R12)   DAYSPAN
*S188: if( dayspan=1 ) then {
         CHI   R2,1
         JNE   AAD00712
*S189: if( 7 < day->nextVisit->comp2Flags[i]->CntCrit ) then {
         L     R3,64(R12)   DAY
         L     R4,0(R3)   NEXTVISIT
         LA    R5,188(R4)   COMP2FLAGS
         L     R6,84(R12)   I
         MHI   R6,48
         AR    R5,R6
         L     R7,16(R5)   CNTCRIT
         CHI   R7,7
         JNH   AAD00710
*S190: hasnextdayunits:=1;
         MVC   96(4,R12),0(R11)   1
*S191: }
*S192: if( day->nextVisit->comp2Flags[i]->Bits->hasB ) then {
AAD00710 L     R2,64(R12)   DAY
         L     R3,0(R2)   NEXTVISIT
         LA    R4,188(R3)   COMP2FLAGS
         L     R5,84(R12)   I
         MHI   R5,48
         AR    R4,R5
         TM    44(R4),16   HASB
         JE    AAD00711
*S193: hasnextdayB:=1;
         MVC   100(4,R12),0(R11)   1
*S194: }
*S195: }
*S197: if( hasnextdayB and do GAPC.StatusIndicatorTPresent( day->nextV
AAD00711 EQU   *
AAD00712 L     R15,100(R12)   HASNEXTDAYB
         LTR   R15,R15
         JE    AAD00713
         LA    R14,116(R12)
         ST    R14,60(R13)
         L     R2,64(R12)   DAY
         ST    R2,64(R13)
         L     R15,16(R11)   GAPCC054
         BASR  R14,R15
         L     R15,116(R12)
         LTR   R15,R15
         JE    AAD00713
*S198: hasnextdayT:=1;
         MVC   104(4,R12),0(R11)   1
*S199: }
*if( hasnextdayB and day->nextVisit->Bits->HasTypeT ) then {
* hasnextdayT:=1;
*}
*S203: }
*S205: if( prevvis ) then {
AAD00713 EQU   *
AAD00714 L     R15,72(R12)   PREVVIS
         LTR   R15,R15
         JE    AAD00716
*S206: dayspan:=DateBetween(prevvis->firstDaysItems->ServiceDate,day->
         L     R2,72(R12)   PREVVIS
         L     R3,8(R2)   FIRSTDAYSITEMS
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R4,64(R12)   DAY
         L     R5,8(R4)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R5)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),8(R11)   2
         L     R15,12(R11)   DMNBTWNX
         BASR  R14,R15
         L     R6,60(R13)
         ST    R6,108(R12)   DAYSPAN
*S207: if( dayspan=1 and do GAPC.StatusIndicatorTPresent( prevvis ) )
         CHI   R6,1
         JNE   AAD00715
         LA    R14,116(R12)
         ST    R14,60(R13)
         LA    R14,72(R12)   PREVVIS
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC054
         BASR  R14,R15
         L     R15,116(R12)
         LTR   R15,R15
         JE    AAD00715
*S208: hasprevdayT:=1;
         MVC   92(4,R12),0(R11)   1
*S209: }
*if( dayspan=1 and prevvis->Bits->HasTypeT ) then {
* hasprevdayT:=1;
*}
*S213: }
*message "Type T exists? prev=%i next=%i current=%i", hasprevdayT, has
* Conditions must be met:
* 1. Has B(G0378) day or day after A list or day of dir admit (A2)
* 2. B(G0378) units >=8
* 3. No T code on day or day before B(G0378)
*S221: if( ( day->comp2Flags[i]->Bits->hasB
AAD00715 EQU   *
AAD00716 L     R2,64(R12)   DAY
         LA    R3,188(R2)   COMP2FLAGS
         L     R4,84(R12)   I
         MHI   R4,48
         AR    R3,R4
         TM    44(R3),16   HASB
         JE    AAD00718
         L     R5,64(R12)   DAY
         LA    R6,188(R5)   COMP2FLAGS
         L     R7,84(R12)   I
         MHI   R7,48
         AR    R6,R7
         L     R8,16(R6)   CNTCRIT
         CHI   R8,7
         JNH   AAD00718
         L     R2,64(R12)   DAY
         LA    R3,188(R2)   COMP2FLAGS
         L     R4,84(R12)   I
         MHI   R4,48
         AR    R3,R4
         TM    44(R3),64   HASA
         JNE   AAD00717
         L     R5,64(R12)   DAY
         LA    R6,188(R5)   COMP2FLAGS
         L     R7,84(R12)   I
         MHI   R7,48
         AR    R6,R7
         TM    44(R6),32   HASA2
         JE    AAD00718
AAD00717 L     R15,92(R12)   HASPREVDAYT
         LTR   R15,R15
         JNE   AAD00718
         LA    R14,116(R12)
         ST    R14,60(R13)
         LA    R14,64(R12)   DAY
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC054
         BASR  R14,R15
         L     R15,116(R12)
         LTR   R15,R15
         JE    AAD00720
AAD00718 L     R15,100(R12)   HASNEXTDAYB
         LTR   R15,R15
         JE    AAD00719
         L     R15,96(R12)   HASNEXTDAYUNITS
         LTR   R15,R15
         JE    AAD00719
         L     R2,64(R12)   DAY
         LA    R3,188(R2)   COMP2FLAGS
         L     R4,84(R12)   I
         MHI   R4,48
         AR    R3,R4
         TM    44(R3),64   HASA
         JE    AAD00719
         L     R15,104(R12)   HASNEXTDAYT
         LTR   R15,R15
         JNE   AAD00719
         LA    R14,120(R12)
         ST    R14,60(R13)
         LA    R14,64(R12)   DAY
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC054
         BASR  R14,R15
         L     R15,120(R12)
         LTR   R15,R15
         JE    AAD00720
AAD00719 J     AAD00741
*S222: and 7 < day->comp2Flags[i]->CntCrit
*S223: and ( day->comp2Flags[i]->Bits->hasA or day->comp2Flags[i]->Bit
*S224: and not ( hasprevdayT or do GAPC.StatusIndicatorTPresent( day )
*and not ( hasprevdayT or day->Bits->HasTypeT )
*S226: )
*S227: or (
*S228: hasnextdayB
*S229: and hasnextdayunits
*S230: and day->comp2Flags[i]->Bits->hasA
*S231: and not ( hasnextdayT or do GAPC.StatusIndicatorTPresent( day )
*and not ( hasnextdayT or day->Bits->HasTypeT )
*S233: ) ) then {
*S234: line := day->comp2Flags[i]->PrimeCompositeLine;
AAD00720 L     R2,64(R12)   DAY
         LA    R3,188(R2)   COMP2FLAGS
         L     R4,84(R12)   I
         MHI   R4,48
         AR    R3,R4
         MVC   76(4,R12),0(R3)   PRIMECOMPOSITELINE
*S235: if( line
         L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAD00740
         L     R5,76(R12)   LINE
         TM    1081(R5),64   IGNORELINE
         JNE   AAD00740
         L     R6,76(R12)   LINE
         TM    1081(R6),32   IGNOREINPAT
         JNE   AAD00740
*S236: and not (line->Bits->IgnoreLine or line->Bits->IgnoreInpat) ) t
*S237: line->APC :=day->comp2Flags[i]->CompositeAPC;
         L     R2,76(R12)   LINE
         L     R3,64(R12)   DAY
         LA    R4,188(R3)   COMP2FLAGS
         L     R5,84(R12)   I
         MHI   R5,48
         AR    R4,R5
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R4)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S238: line->PaymentApc :=day->comp2Flags[i]->CompositeAPC;
         L     R6,76(R12)   LINE
         L     R7,64(R12)   DAY
         LA    R8,188(R7)   COMP2FLAGS
         L     R2,84(R12)   I
         MHI   R2,48
         AR    R8,R2
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R8)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S239: line->StatusIndicator :=day->comp2Flags[i]->SI;
         L     R3,76(R12)   LINE
         L     R4,64(R12)   DAY
         LA    R5,188(R4)   COMP2FLAGS
         L     R6,84(R12)   I
         MHI   R6,48
         AR    R5,R6
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R5)   SI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S240: line->PaymentIndicator :=day->comp2Flags[i]->PI;
         L     R7,76(R12)   LINE
         L     R8,64(R12)   DAY
         LA    R2,188(R8)   COMP2FLAGS
         L     R3,84(R12)   I
         MHI   R3,48
         AR    R2,R3
         LA    R14,32(R2)   PI
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,24(R11)   DMNS2I
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,204(R7)   PAYMENTINDICATOR
*S241: line->PackagingFlag :=0;
         L     R5,76(R12)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
*line->DenialFlag  :=0;
*S243: line->DiscountingFactor :=1;
         L     R6,76(R12)   LINE
         MVC   536(4,R6),0(R11)   1
*S244: do GAPC.ReduceUnits( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC114
         BASR  R14,R15
*S245: do GAPC.PrepPaymentMethodFlags( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,32(R11)   GAPCC088
         BASR  R14,R15
*S246: do GAPC.SetAPCPay( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC089
         BASR  R14,R15
*S247: claim->Bits->SetObs :=1;
         OI    3005(R9),32   SETOBS
* v10.0 prior to 1/1/09 we use the PAF; after use new CAF
*S250: line->CompAdjFlag := do GAPC.GetNextCAF();
         L     R7,76(R12)   LINE
         LA    R14,272(R7)   COMPADJFLAG
         ST    R14,60(R13)
         L     R15,40(R11)   GAPCC069
         BASR  R14,R15
* set adj flag on A and B
*S253: /*set pay adj flag same day on B if there and conditions met*/
*S254: /*else set pay adj flag next day on B if there and met
*S255:      this assumes ONLY pairing one B with PAF value*/
*S256: if( day->comp2Flags[i]->Bits->hasB
         L     R8,64(R12)   DAY
         LA    R2,188(R8)   COMP2FLAGS
         L     R3,84(R12)   I
         MHI   R3,48
         AR    R2,R3
         TM    44(R2),16   HASB
         JE    AAD00725
         L     R4,64(R12)   DAY
         LA    R5,188(R4)   COMP2FLAGS
         L     R6,84(R12)   I
         MHI   R6,48
         AR    R5,R6
         L     R7,16(R5)   CNTCRIT
         CHI   R7,7
         JNH   AAD00725
         L     R15,92(R12)   HASPREVDAYT
         LTR   R15,R15
         JNE   AAD00725
         L     R2,64(R12)   DAY
         TM    625(R2),32   HASTYPET
         JNE   AAD00725
*S257: and 7 < day->comp2Flags[i]->CntCrit
*S258: and not ( hasprevdayT or day->Bits->HasTypeT ) ) then {
*S259: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSame
         L     R2,64(R12)   DAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00721 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAD00724
*S260: if( line2->comp2Flags[i]->Bits->hasB ) then {
         L     R2,80(R12)   LINE2
         LA    R3,51(R2)   COMP2FLAGS
         A     R3,84(R12)   I
         TM    0(R3),16   HASB
         JE    AAD00722
*S261: line2->CompAdjFlag:=line->CompAdjFlag;
         L     R4,80(R12)   LINE2
         L     R5,76(R12)   LINE
         LA    R14,272(R4)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,272(R5)   COMPADJFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
AAD00722 EQU   *
AAD00723 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00721
AAD00724 J     AAD00732
*S262: }
*S263: }
*S264: }
*S265: else if( hasnextdayB
AAD00725 L     R15,100(R12)   HASNEXTDAYB
         LTR   R15,R15
         JE    AAD00731
         L     R15,96(R12)   HASNEXTDAYUNITS
         LTR   R15,R15
         JE    AAD00731
         L     R15,104(R12)   HASNEXTDAYT
         LTR   R15,R15
         JNE   AAD00731
         L     R2,64(R12)   DAY
         TM    625(R2),32   HASTYPET
         JNE   AAD00731
*S266: and hasnextdayunits
*S267: and not ( hasnextdayT or day->Bits->HasTypeT ) ) then {
*S268: if( day->nextVisit ) then {/*must be but put test here anyway*/
         L     R2,64(R12)   DAY
         L     R15,0(R2)   NEXTVISIT
         LTR   R15,R15
         JE    AAD00730
*S269: loop( line2:=day->nextVisit->firstDaysItems; line2; line2:=line
         L     R3,64(R12)   DAY
         L     R4,0(R3)   NEXTVISIT
         MVC   80(4,R12),8(R4)   FIRSTDAYSITEMS
AAD00726 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAD00729
*S270: if( line2->comp2Flags[i]->Bits->hasB ) then {
         L     R2,80(R12)   LINE2
         LA    R3,51(R2)   COMP2FLAGS
         A     R3,84(R12)   I
         TM    0(R3),16   HASB
         JE    AAD00727
*S271: line2->CompAdjFlag:=line->CompAdjFlag;
         L     R4,80(R12)   LINE2
         L     R5,76(R12)   LINE
         LA    R14,272(R4)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,272(R5)   COMPADJFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
AAD00727 EQU   *
AAD00728 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00726
*S272: }
*S273: }
*S274: }
*S275: }
* enforce no payable A2-Dir admit on claim
* if not the composite apc assigned
*S278: loop( day2:=base->firstVisit; day2; day2:=day2->nextVisit ){
AAD00729 EQU   *
AAD00730 EQU   *
AAD00731 EQU   *
AAD00732 MVC   68(4,R12),60(R9)   FIRSTVISIT
AAD00733 L     R15,68(R12)   DAY2
         LTR   R15,R15
         JE    AAD00739
*S279: loop( line2:=day2->firstDaysItems; line2; line2:=line2->nextSam
         L     R2,68(R12)   DAY2
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00734 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAD00737
*S280: if( line2->flags->ObservationDirectAdmit and line2<>line ) then
         L     R2,80(R12)   LINE2
         TM    1091(R2),8   OBSERVATIONDIRECTADMIT
         JE    AAD00735
         L     R3,80(R12)   LINE2
         C     R3,76(R12)   LINE
         JE    AAD00735
*S281: do GAPC.PackageObs( line2 );
         LA    R14,80(R12)   LINE2
         ST    R14,64(R13)
         L     R15,44(R11)   GAPCC049
         BASR  R14,R15
AAD00735 EQU   *
AAD00736 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00734
AAD00737 EQU   *
AAD00738 L     R2,68(R12)   DAY2
         MVC   68(4,R12),0(R2)   NEXTVISIT
         J     AAD00733
*S282: }
*S283: }
*S284: }
*S286: }
*S287: }/*if condition is met*/
* only one EAM composite per claim
*S290: /*when first one hits get out-done in hierarchical order - one
*S291: if( claim->Bits->SetObs ) then return;
AAD00739 EQU   *
AAD00740 EQU   *
AAD00741 TM    3005(R9),32   SETOBS
         JE    AAD00742
         J     AAD00764
AAD00742 EQU   *
AAD00743 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAD00709
*S292: }/*each composite in hierarchy order*/
*S293: prevvis:=day;
AAD00744 MVC   72(4,R12),64(R12)   DAY
AAD00745 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00708
*S294: }/*each day*/
*check for Edit 57 condition, v9.0 eff 1/1/08
*S297: if( not claim->Bits->SetObs ) then {
AAD00746 TM    3005(R9),32   SETOBS
         JNE   AAD00763
*S299: /*if claim did not set the obs composite, passes units and obs-
*S300: loop( day := base->firstVisit; day; day := day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAD00747 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAD00762
*S301: if( day->firstDaysItems->month=1
         L     R2,64(R12)   DAY
         L     R3,8(R2)   FIRSTDAYSITEMS
         L     R4,452(R3)   MONTH
         CHI   R4,1
         JNE   AAD00760
         L     R5,64(R12)   DAY
         L     R6,8(R5)   FIRSTDAYSITEMS
         L     R7,456(R6)   DAY
         CHI   R7,1
         JNE   AAD00760
*S302: and day->firstDaysItems->day=1 ) then
*S303: {
*S304: hadBnoA:=0;
         XC    88(4,R12),88(R12)   HADBNOA
*S305: loop( i:=1; i<=levelcount; i+=1 ){
         MVC   84(4,R12),0(R11)   1
AAD00748 L     R2,84(R12)   I
         C     R2,112(R12)   LEVELCOUNT
         JH    AAD00751
*S306: if( day->comp2Flags[i]->Bits->hasB
         L     R3,64(R12)   DAY
         LA    R4,188(R3)   COMP2FLAGS
         L     R5,84(R12)   I
         MHI   R5,48
         AR    R4,R5
         TM    44(R4),16   HASB
         JE    AAD00749
         L     R6,64(R12)   DAY
         LA    R7,188(R6)   COMP2FLAGS
         L     R8,84(R12)   I
         MHI   R8,48
         AR    R7,R8
         L     R2,16(R7)   CNTCRIT
         CHI   R2,8
         JL    AAD00749
         L     R2,64(R12)   DAY
         LA    R3,188(R2)   COMP2FLAGS
         L     R4,84(R12)   I
         MHI   R4,48
         AR    R3,R4
         TM    44(R3),64   HASA
         JNE   AAD00749
*S307: and day->comp2Flags[i]->CntCrit>=8
*S308: and not day->comp2Flags[i]->Bits->hasA ) then {
*S309: hadBnoA+=1;
         LHI   R2,1
         A     R2,88(R12)   HADBNOA
         ST    R2,88(R12)   HADBNOA
AAD00749 EQU   *
AAD00750 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAD00748
*S310: }
*S311: }
* THIS WILL FIX, BUT MAX_COMP2 SHOULD BE CHANGED TO 1, STARTING WITH V
* THE LEVELS WERE COLLAPSED THEN.
*S315: if( ( base->Version < 54 and hadBnoA=2 )
AAD00751 L     R2,1868(R9)   VERSION
         CHI   R2,54
         JNL   AAD00752
         L     R3,88(R12)   HADBNOA
         CHI   R3,2
         JE    AAD00754
AAD00752 L     R2,1868(R9)   VERSION
         CHI   R2,53
         JNH   AAD00753
         L     R3,88(R12)   HADBNOA
         CHI   R3,1
         JE    AAD00754
AAD00753 J     AAD00759
*S316: or ( base->Version > 53 and hadBnoA=1 ) ) then
*S317: {
*S318: loop (line := day->firstDaysItems; line; line := line->nextSame
AAD00754 L     R2,64(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00755 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAD00758
*S319: {
*S320: /*test uses first since all must have the B for it to come here
*S321: if( line->comp2Flags[1]->Bits->hasB
         L     R2,76(R12)   LINE
         TM    52(R2),16   HASB
         JE    AAD00756
         L     R3,64(R12)   DAY
         TM    625(R3),32   HASTYPET
         JNE   AAD00756
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAD00756
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAD00756
*S322: and not (
*S323: day->Bits->HasTypeT
*S324: or line->Bits->IgnoreLine
*S325: or line->Bits->IgnoreInpat
*S326: ) ) then {
*S327: do GAPC.SetEdit( Edit->ObsEmAncYes1231, line, base->NoDxp, base
         MVC   116(4,R12),48(R11)   57
         LA    R14,116(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,80(R13)
         XC    124(4,R12),124(R12)
         LA    R14,124(R12)
         ST    R14,84(R13)
         L     R15,52(R11)   GAPCC091
         BASR  R14,R15
AAD00756 EQU   *
AAD00757 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00755
AAD00758 EQU   *
AAD00759 EQU   *
AAD00760 EQU   *
AAD00761 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAD00747
AAD00762 EQU   *
AAD00763 EQU   *
AAD00764 EQU   *
AAD00765 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC056
**************************
GAPCC056 CSECT
GAPCC056 AMODE ANY
GAPCC056 RMODE ANY
*XREF - GAPCC056 GAPC.ComprehensiveObservation
*  R11 + 0000 Literals        (52 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (68 bytes)
*        0072(R12)-> reference to Struct len 628 (currentDay)
*        0076(R12)-> reference to Struct len 628 (previousDay)
*        0080(R12)-> reference to Struct len 1120 (line)
*        0084(R12)-> reference to Struct len 628 (visitDay)
*        0088(R12)-> reference to Struct len 1120 (visitLine)
*        0092(R12)-> reference to Struct len 1120 (potentialVisitLine)
*        0096(R12)-> reference to Struct len 1120 (payingVisitLine)
*        0100(R12)-> Integer len 4 (daySpan)
*        0104(R12)-> Integer len 4 (observationUnits)
*        0108(R12)-> Integer len 4 (StatusIndicatorTPresent)
*        0112(R12)-> reference to Struct len 628 (edit57Day)
*        0116(R12)-> Unknown ()
*        0116(R12)-> String ()
*        0128(R12)-> Integer len 4 ()
*        0132(R12)-> Integer len 4 ()
*        0136(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 144)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,144  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00803
         DC    A(DMNLONG) @00000
         DC    F'2' @00004
         DC    A(DMNBTWNX) @00008
         DC    A(DMNSCMP) @00012
         DC    F'1' @00016
         DC    A(DMNSCPY) @00020
         DC    A(GAPCC115) @00024
         DC    F'57' @00028
         DC    A(GAPCC091) @00032
         DC    A(DMNFREE) @00036
         DC    H'1'  0 1 @00040
         DC    H'5'  0 5 @00042
         DC    CL1'T' @00044
         DC    CL5'08011' @00045
AAD00803 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(52,R12),72(R12)
         ST    R2,124(R12)
         XC    128(12,R12),128(R12)
*SPECIAL OBSERVATION = G0378 (HOSPITAL OBSERVATION PER HOUR)
* FOR E57 REIMPLEMENTATION
* CRITERIA IS:
* 1. NO "T" OR "J1" PROCEDURE ON THE CLAIM
* 2. 8+ OBSERVATION UNITS (HOURS) REQUIRED ON DAY OF OBSERVATION
* 3. QUALIFYING VISIT "J2" MUST BE ON DAY OF OR DAY BEFORE OBSERVATION
* J1 COMPREHENSIVES ARE ASSIGNED EARLIER AND ALWAYS TAKE PRECEDENCE OV
* IF A PRIMARY COMPREHENSIVE DOES NOT EXIST, CALCULATE IF J2 CRITERIA
* NOTE: THERE IS A PROBLEM WITH THIS. SOME Q1 CODES CHANGE TO J1 AFTER
* THOSE WILL SLIP THROUGH IF NO OTHER J1 EXISTS ON THE CLAIM AND BE PA
* BUT, SO FAR, THIS IS OK BECAUSE THOSE J1 CODES ARE REMOVAL CODES.
*S369: if( not claim->PrimaryComprehensive ) then {
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JNE   AAD00845
* ABORT IF 'T' PROCEDURE EXISTS ON CLAIM. NOTE: EDIT 57 IS NOT APPLIED
*S372: loop( currentDay:=base->firstVisit; currentDay and not StatusIn
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAD00806 L     R15,72(R12)   CURRENTDAY
         LTR   R15,R15
         JE    AAD00837
         L     R15,108(R12)   STATUSINDICATORTPRESENT
         LTR   R15,R15
         JNE   AAD00837
* CALCULATE DAY SPAN BETWEEN CURRENT DAY AND PREVIOUS DAY IF PREVIOUS
*S375: daySpan:=( previousDay )?
         L     R15,76(R12)   PREVIOUSDAY
         LTR   R15,R15
         JNE   AAD00807
         LHI   R6,0
         J     AAD00808
AAD00807 L     R2,76(R12)   PREVIOUSDAY
         L     R3,8(R2)   FIRSTDAYSITEMS
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R4,72(R12)   CURRENTDAY
         L     R5,8(R4)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R5)   SERVICEDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),4(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R6,60(R13)
AAD00808 ST    R6,100(R12)   DAYSPAN
*S376: DateBetween(previousDay->firstDaysItems->ServiceDate,currentDay
* RESET UNIT COUNT AND POTENTIAL VISIT LINE
*S379: if( observationUnits ) then observationUnits:=0;
         L     R15,104(R12)   OBSERVATIONUNITS
         LTR   R15,R15
         JE    AAD00809
         XC    104(4,R12),104(R12)   OBSERVATIONUNITS
*S380: if( potentialVisitLine ) then reset potentialVisitLine;
AAD00809 L     R15,92(R12)   POTENTIALVISITLINE
         LTR   R15,R15
         JE    AAD00810
         XC    92(4,R12),92(R12)
* SEARCH FOR LINES WITH 'T' PROCEDURE OR HOURLY OBSERVATION CODE ON TH
*S383: loop( line:=currentDay->firstDaysItems; line; line:=line->nextS
AAD00810 L     R2,72(R12)   CURRENTDAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00811 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAD00829
*S385: if( line->StatusIndicator="T" ) then {
         L     R2,80(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,44(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAD00812
*S386: StatusIndicatorTPresent:=1;
         MVC   108(4,R12),16(R11)   1
         J     AAD00827
*S387: }
*S388: else if( line->flags->ObservationHourly ) then {
AAD00812 L     R2,80(R12)   LINE
         TM    1091(R2),16   OBSERVATIONHOURLY
         JE    AAD00826
* AGGREGATE THE OBSERVATION UNITS FOR THE CURRENT DAY
*S391: observationUnits+=line->ServiceUnits;
         L     R3,80(R12)   LINE
         L     R4,104(R12)   OBSERVATIONUNITS
         A     R4,468(R3)   SERVICEUNITS
         ST    R4,104(R12)   OBSERVATIONUNITS
* DAY TO START SEARCHING FOR OBSERVATION VISITS. IF PREVIOUS DAY EXIST
* TO THE CURRENT DAY, THEN START ON PREVIOUS DAY; OTHERWISE, START ON
*S395: visitDay:=( daySpan=1 )? previousDay : currentDay;
         L     R5,100(R12)   DAYSPAN
         CHI   R5,1
         JE    AAD00813
         L     R2,72(R12)   CURRENTDAY
         J     AAD00814
AAD00813 L     R2,76(R12)   PREVIOUSDAY
AAD00814 ST    R2,84(R12)   VISITDAY
* SEARCH FOR THE HIGHEST PAYING OBSERVATION VISIT ON THE DAY OF OR DAY
* OBERVATION, SAVE AS potentialVisitLine IF FOUND
*S399: loop( ; visitDay; visitDay:=visitDay->nextVisit ){
AAD00815 L     R15,84(R12)   VISITDAY
         LTR   R15,R15
         JE    AAD00825
*S401: loop( visitLine:=visitDay->firstDaysItems; visitLine; visitLine
         L     R2,84(R12)   VISITDAY
         MVC   88(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00816 L     R15,88(R12)   VISITLINE
         LTR   R15,R15
         JE    AAD00822
* DIRECT ADMIT OBSERVATION VISIT [HasDirectAdmObs] (G0379) MUST BE ON
*S404: if( visitLine->Bits->ObservationVisit
         L     R2,88(R12)   VISITLINE
         TM    1085(R2),2   OBSERVATIONVISIT
         JE    AAD00820
         L     R3,88(R12)   VISITLINE
         TM    1082(R3),2   HASDIRECTADMOBS
         JE    AAD00817
         L     R4,84(R12)   VISITDAY
         C     R4,72(R12)   CURRENTDAY
         JNE   AAD00820
AAD00817 L     R2,80(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAD00820
         L     R3,80(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAD00820
*S405: and ( not visitLine->Bits->HasDirectAdmObs or visitDay=currentD
*S406: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
* SELECT HIGHEST PAYING OBSERVATION VISIT LINE FOR THE DAY
*S409: if( not potentialVisitLine
         L     R15,92(R12)   POTENTIALVISITLINE
         LTR   R15,R15
         JE    AAD00818
         L     R2,92(R12)   POTENTIALVISITLINE
         L     R3,88(R12)   VISITLINE
         L     R4,528(R2)   APCPAYMENT
         C     R4,528(R3)   APCPAYMENT
         JNL   AAD00819
*S410: or potentialVisitLine->ApcPayment < visitLine->ApcPayment ) the
*S411: potentialVisitLine:=visitLine;
AAD00818 MVC   92(4,R12),88(R12)   VISITLINE
AAD00819 EQU   *
AAD00820 EQU   *
AAD00821 L     R2,88(R12)   VISITLINE
         MVC   88(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00816
*S412: }
*S414: }
*S416: }
* BREAK AFTER PROCESSING THE CURRENT DAY
*S418: if( visitDay=currentDay ) then break;
AAD00822 L     R2,84(R12)   VISITDAY
         C     R2,72(R12)   CURRENTDAY
         JNE   AAD00823
         J     AAD00825
AAD00823 EQU   *
AAD00824 L     R2,84(R12)   VISITDAY
         MVC   84(4,R12),0(R2)   NEXTVISIT
         J     AAD00815
AAD00825 EQU   *
AAD00826 EQU   *
AAD00827 EQU   *
AAD00828 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00811
*S420: }
*S422: }
*S424: }
* CALCULATE VALUES FOR CURRENT DAY IF 8+ OBSERVATION UNITS EXIST
*S427: if( 7 < observationUnits ) then {
AAD00829 L     R2,104(R12)   OBSERVATIONUNITS
         CHI   R2,7
         JNH   AAD00835
* VISIT EXISTS ON DAY WITH 8+ OBSERVATION UNITS: E57 IS NOT APPLICABLE
*S429: if( potentialVisitLine ) then {
         L     R15,92(R12)   POTENTIALVISITLINE
         LTR   R15,R15
         JE    AAD00832
* IF MULTIPLE OBSERVATION VISITS MEETING THE CRITERIA EXIST ACROSS DAY
* SELECT THE HIGHEST PAYING OBSERVATION VISIT.
*S432: if( not payingVisitLine
         L     R15,96(R12)   PAYINGVISITLINE
         LTR   R15,R15
         JE    AAD00830
         L     R3,96(R12)   PAYINGVISITLINE
         L     R4,92(R12)   POTENTIALVISITLINE
         L     R5,528(R3)   APCPAYMENT
         C     R5,528(R4)   APCPAYMENT
         JNL   AAD00831
*S433: or payingVisitLine->ApcPayment < potentialVisitLine->ApcPayment
*S434: payingVisitLine:=potentialVisitLine;
AAD00830 MVC   96(4,R12),92(R12)   POTENTIALVISITLINE
AAD00831 J     AAD00834
*S435: }
*S436: }
* NO VISIT EXISTS, 8+ OBSERVATION UNITS FOUND, AND DAY IS FIRST DAY OF
* NOTE: E57 STILL MAY NOT BE APPLIED IF 'T' PROCEDURE EXISTS ON OTHER
*S442: else if( currentDay->firstDaysItems->month=1
AAD00832 L     R2,72(R12)   CURRENTDAY
         L     R3,8(R2)   FIRSTDAYSITEMS
         L     R4,452(R3)   MONTH
         CHI   R4,1
         JNE   AAD00833
         L     R5,72(R12)   CURRENTDAY
         L     R6,8(R5)   FIRSTDAYSITEMS
         L     R7,456(R6)   DAY
         CHI   R7,1
         JNE   AAD00833
*S443: and currentDay->firstDaysItems->day=1 ) then {
*S444: edit57Day:=currentDay;
         MVC   112(4,R12),72(R12)   CURRENTDAY
*S445: }
*S447: }
* RETAIN A REFERENCE TO THE PREVIOUS DAY FOR USE IN OBSERVATION VISIT
*S450: previousDay:=currentDay;
AAD00833 EQU   *
AAD00834 EQU   *
AAD00835 MVC   76(4,R12),72(R12)   CURRENTDAY
AAD00836 L     R2,72(R12)   CURRENTDAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAD00806
*S452: }
*S454: if( not StatusIndicatorTPresent ) then {
AAD00837 L     R15,108(R12)   STATUSINDICATORTPRESENT
         LTR   R15,R15
         JNE   AAD00844
* CRITERIA MET FOR COMPREHENSIVE OBSERVATION:
* 1. ASSIGN THE HIGHEST PAYING COMPREHENSIVE VISIT AS THE PRIMARY COMP
* 2. CHANGE APC TO COMPREHENSIVE OBSERVATION APC, LOAD SI, PI, AND PAY
* 3. DISABLE COMPLEXITY ADJUSTMENT: OBSERVATION DOES NOT PAY COMPLEXIT
*S460: if( payingVisitLine ) then {
         L     R15,96(R12)   PAYINGVISITLINE
         LTR   R15,R15
         JE    AAD00838
*S461: do GAPC.SetApcAssignment( payingVisitLine, "08011" );
         LA    R14,96(R12)   PAYINGVISITLINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,116(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   08011
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,116(R12)
         ST    R14,68(R13)
         L     R15,24(R11)   GAPCC115
         BASR  R14,R15
*S462: claim->PrimaryComprehensive :=payingVisitLine;
         MVC   1972(4,R9),96(R12)   PAYINGVISITLINE
*S463: claim->Bits->SuppressComplexityAdjustment :=1;
         OI    3005(R9),2   SUPPRESSCOMPLEXITYADJUSTMENT
*S464: }
* Edit 57: E/M condition not met for observation and date of observati
* NOTE: DO NOT INCLUDE CASES WHERE OBSERVATION CRITERA WAS NOT MET BEC
* THERE ARE NOT ENOUGH UNITS FOR OBSERVATION: MATCHES THE ORIGINAL IMP
*S472: if( edit57Day ) then {
AAD00838 L     R15,112(R12)   EDIT57DAY
         LTR   R15,R15
         JE    AAD00843
*S473: loop( line:=edit57Day->firstDaysItems; line; line:=line->nextSa
         L     R2,112(R12)   EDIT57DAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAD00839 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAD00842
*S474: if( line->flags->ObservationHourly
         L     R2,80(R12)   LINE
         TM    1091(R2),16   OBSERVATIONHOURLY
         JE    AAD00840
         L     R3,80(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAD00840
         L     R4,80(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAD00840
*S475: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
*S476: do GAPC.SetEdit( Edit->ObsEmAncYes1231, line, base->NoDxp, base
         MVC   128(4,R12),28(R11)   57
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,80(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,32(R11)   GAPCC091
         BASR  R14,R15
AAD00840 EQU   *
AAD00841 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAD00839
AAD00842 EQU   *
AAD00843 EQU   *
AAD00844 EQU   *
AAD00845 EQU   *
AAD00846 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,36(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC057
**************************
GAPCC057 CSECT
GAPCC057 AMODE ANY
GAPCC057 RMODE ANY
*XREF - GAPCC057 GAPC.ObservationVisit3
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD00903
         DC    A(GAPCC050) @00000
         DC    A(GAPCC051) @00004
         DC    A(GAPCC053) @00008
         DC    A(GAPCC055) @00012
* 1. check the direct admit case
* -------------------------------------------------------------------
* Direct Admission Observation flowchart 2 App. H
* Edit 53 checking is done prior to this call in MakeDayArray
* -------------------------------------------------------------------
*S505: do GAPC.E58();/*we also check for payable obs case not raising
AAD00903 L     R15,0(R11)   GAPCC050
         BASR  R14,R15
*S506: do GAPC.CheckTypeT_EM();
         L     R15,4(R11)   GAPCC051
         BASR  R14,R15
* -------------------------------------------------------------------
* When we get here the direct admit observation code will either
* have been edited with 58 or packaged with criteria not met
* or retain Q due to change logic not run and HasDirectAdmObs
* reset because the conditions not met; so if HasDirectAdmObs
* is still on, it is paid by changing APC, SI assignment
* to payable APC
* -------------------------------------------------------------------
*S515: do GAPC.SetDirAdmObsApc();
         L     R15,8(R11)   GAPCC053
         BASR  R14,R15
* 2. check the new observation composite APC logic
* eff. 1/1/08, v9.0
*S532: do GAPC.Composite2APCObs();
         L     R15,12(R11)   GAPCC055
         BASR  R14,R15
AAD00906 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC058
**************************
GAPCC058 CSECT
GAPCC058 AMODE ANY
GAPCC058 RMODE ANY
*XREF - GAPCC058 GAPC.ObservationVisit4
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAD01003
         DC    A(GAPCC050) @00000
         DC    A(GAPCC052) @00004
* WE CAN NOT GROUP THE TWO PARTS OF MATERNITY OBS TOGETHER BECAUSE THE
* THAT IS CHECKED IN THE do GAPC.E58() FUNCTION
*S549: do GAPC.E58();
AAD01003 L     R15,0(R11)   GAPCC050
         BASR  R14,R15
*S550: if( not claim->PrimaryComprehensive ) then {
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JNE   AAD01006
*S551: do GAPC.CheckTypeTV();
         L     R15,4(R11)   GAPCC052
         BASR  R14,R15
AAD01006 EQU   *
AAD01007 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:36 2020
*^ IDENTS - GAPCC AAE
**************************
*    GAPCC059
**************************
GAPCC059 CSECT
GAPCC059 AMODE ANY
GAPCC059 RMODE ANY
*XREF - GAPCC059 GAPC.TherapyAssignment
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00103
         DC    A(DMNATFD) @00000
         DC    A(DMNSCMP) @00004
         DC    A(GAPCC118) @00008
         DC    H'10'  0 10 @00012
         DC    H'1120'  4 96 @00014
         DC    H'2'  0 2 @00016
         DC    CL2'13' @00018
         DC    CL2'12' @00020
         DC    CL2'34' @00022
AAE00103 XC    64(4,R12),64(R12)
* V7.0 CODE MAY BE SEPARATELY PAYABLE IF THERAPY MODIFIER OR REVENUE C
*S7: loop( item:=base->lines->first; item and (line:=&item->line, line
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00106 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00117
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),12(R11)   10
         MVC   66(2,R13),14(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00117
*S8: if(line->flags->SometimesTherapy
         L     R2,64(R12)   LINE
         TM    1089(R2),1   SOMETIMESTHERAPY
         JE    AAE00114
         L     R3,64(R12)   LINE
         TM    1083(R3),1   HASTHERAPYMOD
         JNE   AAE00107
         L     R4,64(R12)   LINE
         TM    1084(R4),128   HASTHERAPYREV
         JE    AAE00114
AAE00107 L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAE00114
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAE00114
*S9: and (line->Bits->HasTherapyMod or line->Bits->HasTherapyRev)
*S10: and not (line->Bits->IgnoreLine or line->Bits->IgnoreInpat)) the
*V20.2 For BT 13x/12x w/W2 we set the lab code to payable. We need to
* processing from packaging this code as this processing runs before C
*S13: if (base->Version >= 74 and (base->BillType="13" or (base->BillT
         L     R2,1868(R9)   VERSION
         CHI   R2,74
         JL    AAE00110
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00109
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00108
         TM    3001(R9),16   HASCCW2
         JNE   AAE00109
AAE00108 J     AAE00110
*S14: line->Bits->isSometimesTherapyPayable := 1;
AAE00109 L     R2,64(R12)   LINE
         OI    1087(R2),64   ISSOMETIMESTHERAPYPAYABLE
*S15: do GAPC.SetSeparatelyPayable(line);
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC118
         BASR  R14,R15
         J     AAE00113
*S16: }
* V18.0 Negative Pressure Wound Therapy IS EXCLUDED FOR BILL TYPE 34
*S18: else if (not ((base->BillType="34" and line->flags->NegativePres
AAE00110 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   34
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00111
         L     R3,64(R12)   LINE
         TM    1089(R3),2   NEGATIVEPRESSUREWOUNDTHERAPY
         JNE   AAE00112
*S19: do GAPC.SetSeparatelyPayable(line);
AAE00111 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC118
         BASR  R14,R15
AAE00112 EQU   *
AAE00113 EQU   *
AAE00114 EQU   *
AAE00115 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00116
         L     R2,8(R2)
AAE00116 ST    R2,4(R9)   ITEM
         J     AAE00106
AAE00117 EQU   *
AAE00118 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC060
**************************
GAPCC060 CSECT
GAPCC060 AMODE ANY
GAPCC060 RMODE ANY
*XREF - GAPCC060 GAPC.AdvancedCarePlanning
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (16 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Integer len 4 (avwPresent)
*        0076(R12)-> Integer len 4 (acpPresent)
*        0080(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00203
         DC    F'1' @00000
         DC    A(DMNSCMP) @00004
         DC    A(GAPCC118) @00008
         DC    H'5'  0 5 @00012
         DC    CL5'99497' @00014
AAE00203 XC    64(16,R12),64(R12)
* IF THE ACP (ADVANCED CARE PLANNING) CODE EXISTS ON THE DAY WITH AN A
* IF THE CODE IS PACKAGED, UNPACKAGE THEN SET THE ACP SI=A, PI=2
* IF ACP ADDON CODE IS PRESENT WITHOUT ACP, LEAVE PACKAGED; OTHERWISE,
*integer acpAddonPresent;
*S37: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAE00206 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAE00222
*S39: reset avwPresent;
         XC    72(4,R12),72(R12)
*S40: reset acpPresent;
         XC    76(4,R12),76(R12)
*S41: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00207 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAE00215
*S42: if( line->flags->AnnualWellnessVisit ) then {
         L     R2,68(R12)   LINE
         TM    1097(R2),16   ANNUALWELLNESSVISIT
         JE    AAE00209
*S43: avwPresent:=1;
         MVC   72(4,R12),0(R11)   1
*S44: if( acpPresent ) then {
         L     R15,76(R12)   ACPPRESENT
         LTR   R15,R15
         JE    AAE00208
*S45: break;
         J     AAE00215
AAE00208 J     AAE00213
*S46: }
*S47: }
*S48: else if( line->flags->AdvancedCarePlanning ) then {
AAE00209 L     R2,68(R12)   LINE
         TM    1097(R2),32   ADVANCEDCAREPLANNING
         JE    AAE00212
*S49: if( line->Hcpcs="99497" ) then {
         L     R3,68(R12)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   99497
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00211
*S50: acpPresent:=1;
         MVC   76(4,R12),0(R11)   1
*S51: if( avwPresent ) then {
         L     R15,72(R12)   AVWPRESENT
         LTR   R15,R15
         JE    AAE00210
*S52: break;
         J     AAE00215
AAE00210 EQU   *
AAE00211 EQU   *
AAE00212 EQU   *
AAE00213 EQU   *
AAE00214 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00207
*S53: }
*S54: }
*S55: /*else if( line->Hcpcs="99498" ) then {
*S56:      acpAddonPresent:=TRUE;
*S57:     }*/
*S58: }
*S59: }
* ASSIGN ACP CODE AS SEPARATELY PAYABLE IF PRESENT ON THE SAME DAY AS
* NOTE: IF ACP ADDON CODE IS PRESENT WITHOUT ACP CODE, DO NOT IDENTIFY
*S63: if( avwPresent
AAE00215 L     R15,72(R12)   AVWPRESENT
         LTR   R15,R15
         JE    AAE00220
         L     R15,76(R12)   ACPPRESENT
         LTR   R15,R15
         JE    AAE00220
*S64: and acpPresent ) then {
*S65: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00216 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAE00219
*S66: if( line->flags->AdvancedCarePlanning ) then {
         L     R2,68(R12)   LINE
         TM    1097(R2),32   ADVANCEDCAREPLANNING
         JE    AAE00217
*S67: do GAPC.SetSeparatelyPayable( line );
         LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC118
         BASR  R14,R15
AAE00217 EQU   *
AAE00218 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00216
AAE00219 EQU   *
AAE00220 EQU   *
AAE00221 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAE00206
AAE00222 EQU   *
AAE00223 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC061
**************************
GAPCC061 CSECT
GAPCC061 AMODE ANY
GAPCC061 RMODE ANY
*XREF - GAPCC061 GAPC.ConditionalPackaging
*  R11 + 0000 Literals        (76 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (52 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> reference to Struct len 1120 (highestPayingLine)
*        0080(R12)-> reference to Struct len 1120 (highestPayingLineT)
*        0084(R12)-> Integer len 4 (payableSTVPresent)
*        0088(R12)-> Integer len 4 (payableTPresent)
*        0092(R12)-> Integer len 4 (Q1Present)
*        0096(R12)-> Integer len 4 (Q2Present)
*        0100(R12)-> String (currentSI)
*        0112(R12)-> String ()
*        0124(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00303
         DC    A(DMNATFD) @00000
         DC    A(DMNSCMP) @00004
         DC    F'1' @00008
         DC    F'0' @00012
         DC    A(DMNSUBS) @00016
         DC    A(DMNSCPY) @00020
         DC    A(DMNSTBL) @00024
         DC    A(GAPCC119) @00028
         DC    A(DMNSLOG) @00032
         DC    A(GAPCC117) @00036
         DC    A(GAPCC114) @00040
         DC    A(DMNFREE) @00044
         DC    H'10'  0 10 @00048
         DC    H'1120'  4 96 @00050
         DC    H'1'  0 1 @00052
         DC    H'3'  0 3 @00054
         DC    H'2'  0 2 @00056
         DC    H'5'  0 5 @00058
         DC    CL1'1' @00060
         DC    CL1'Q' @00061
         DC    CL2'Q1' @00062
         DC    CL5'00000' @00064
         DC    CL2'Q2' @00069
         DC    CL2'J1' @00071
AAE00303 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(36,R12),72(R12)
         ST    R2,108(R12)
         XC    112(8,R12),112(R12)
         ST    R2,120(R12)
*V18.0
*S86: loop( item:=base->lines->first; item and (line:=&item->line, lin
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00306 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00328
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),48(R11)   10
         MVC   66(2,R13),50(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00328
* EXCLUDE REJECTED, DENIED, AND PACKAGED LINES
*S89: if( line->PackagingFlag or line->Bits->IgnoreLine or line->Bits-
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00308
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00308
         L     R2,72(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00308
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00307
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00308
AAE00307 J     AAE00309
*S90: continue;
AAE00308 J     AAE00326
         J     AAE00325
*S91: }
* LOCATE ALL Q1 CODES
*S93: else if( line->flags->StvPackaged ) then {
AAE00309 L     R2,72(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JE    AAE00311
*S94: if( not Q1Present ) then {
         L     R15,92(R12)   Q1PRESENT
         LTR   R15,R15
         JNE   AAE00310
*S95: Q1Present:=1;
         MVC   92(4,R12),8(R11)   1
AAE00310 J     AAE00324
*S96: }
*S97: }
* LOCATE ALL Q2 CODES
*S99: else if( line->flags->TPackaged ) then {
AAE00311 L     R2,72(R12)   LINE
         TM    1092(R2),32   TPACKAGED
         JE    AAE00313
*S100: if( not Q2Present ) then {
         L     R15,96(R12)   Q2PRESENT
         LTR   R15,R15
         JNE   AAE00312
*S101: Q2Present:=1;
         MVC   96(4,R12),8(R11)   1
AAE00312 J     AAE00323
*S102: }
*S103: }
*S104: else{
* WE USE THE CONDITIONAL SI (SI OF THE APC) TO IDENTIFY Q3 CODES. THER
* WILL ALWAYS RANK HIGHER THAN Q1 OR Q2 CODES, SO ALL Q1 AND Q2 CODES
* NOTE: Q1 AND Q2 ARE ACCOUNTED FOR ABOVE WITH StvPackaged THE TPackag
*S108: currentSI:=( StrPartial( line->StatusIndicator, 0, 1 )="Q" )? l
AAE00313 L     R2,72(R12)   LINE
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),12(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,16(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00314
         L     R4,72(R12)   LINE
         LA    R3,180(R4)   STATUSINDICATOR
         J     AAE00315
AAE00314 L     R2,72(R12)   LINE
         LA    R3,256(R2)   CONDITIONALSI
AAE00315 LA    R14,100(R12)   CURRENTSI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
* LOCATE ALL T, STV, AND Q3 CODES. NOTE: T,S,V SWITCH FALL-THROUGH IS
*S111: switch( currentSI ){
         LA    R14,100(R12)   CURRENTSI
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),54(R11)   3
         MVC   68(2,R13),52(R11)   1
         MVC   70(2,R13),56(R11)   2
         L     R15,24(R11)   DMNSTBL
         BASR  R14,R15
         J     AAE00316
         DC    CL1'T'
         DC    X'00'
         J     AAE00318
         DC    CL1'S'
         DC    X'00'
         J     AAE00319
         DC    CL1'V'
         DC    X'00'
         J     AAE00321
*S112: case "T":
*S113: if( not payableTPresent ) then {
AAE00316 L     R15,88(R12)   PAYABLETPRESENT
         LTR   R15,R15
         JNE   AAE00317
*S114: payableTPresent:=1;
         MVC   88(4,R12),8(R11)   1
*S115: }
*S116: case "S":
*S117: case "V":
*S118: if( not payableSTVPresent ) then {
AAE00317 EQU   *
AAE00318 EQU   *
AAE00319 L     R15,84(R12)   PAYABLESTVPRESENT
         LTR   R15,R15
         JNE   AAE00320
*S119: payableSTVPresent:=1;
         MVC   84(4,R12),8(R11)   1
*S120: }
*S121: break;
AAE00320 J     AAE00322
*S122: default:
*S123: break;
AAE00321 EQU   *
AAE00322 EQU   *
AAE00323 EQU   *
AAE00324 EQU   *
AAE00325 EQU   *
AAE00326 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00327
         L     R2,8(R2)
AAE00327 ST    R2,4(R9)   ITEM
         J     AAE00306
*S124: }
*S125: }
*S127: }
* PERFORM STV-PACKAGING IF A Q1 CODE IS PRESENT
*S130: if( Q1Present ) then {
AAE00328 L     R15,92(R12)   Q1PRESENT
         LTR   R15,R15
         JE    AAE00347
*S131: reset line;
         XC    72(4,R12),72(R12)
* IF A PAYABLE STV CODE IS PRESENT, PACKAGE ALL Q1 CODES INTO IT
*S133: if( payableSTVPresent ) then {
         L     R15,84(R12)   PAYABLESTVPRESENT
         LTR   R15,R15
         JE    AAE00335
*S134: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00329 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00334
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),48(R11)   10
         MVC   66(2,R13),50(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00334
*S135: if( line->flags->StvPackaged
         L     R2,72(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JE    AAE00331
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00331
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00331
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00331
         L     R2,72(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00331
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00330
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00331
*S136: and line->StatusIndicator="Q1"
*S137: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S138: do GAPC.PackageCode( line );
AAE00330 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S139: line->Bits->IgnoreComp :=1;
         L     R2,72(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
AAE00331 EQU   *
AAE00332 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00333
         L     R2,8(R2)
AAE00333 ST    R2,4(R9)   ITEM
         J     AAE00329
AAE00334 J     AAE00346
*S140: }
*S141: }
*S142: }
* OTHERWISE, FIND THE HIGHEST COST Q1 CODE AND PACKAGE ALL OTHER Q1 CO
*S144: else{
*S145: loop( item:=base->lines->first; item and (line:=&item->line, li
AAE00335 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00336 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00345
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),48(R11)   10
         MVC   66(2,R13),50(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00345
*S146: if( line->flags->StvPackaged
         L     R2,72(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JE    AAE00342
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00342
         L     R2,72(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,32(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00342
         L     R2,72(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,64(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00342
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00342
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00342
         L     R2,72(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00342
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00337
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00342
*S147: and line->StatusIndicator="Q1"
*S148: and line->ConditionalAPC
*S149: and line->ConditionalAPC<>"00000"
*S150: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S156: if( highestPayingLine ) then {
AAE00337 L     R15,76(R12)   HIGHESTPAYINGLINE
         LTR   R15,R15
         JE    AAE00340
*S157: if( highestPayingLine->ConditionalApcPayment < line->Conditiona
         L     R2,76(R12)   HIGHESTPAYINGLINE
         L     R3,72(R12)   LINE
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNL   AAE00338
*S158: do GAPC.PackageCode( highestPayingLine );
         LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S159: highestPayingLine->Bits->IgnoreComp :=1;
         L     R5,76(R12)   HIGHESTPAYINGLINE
         OI    1081(R5),8   IGNORECOMP
*S160: highestPayingLine :=line;
         MVC   76(4,R12),72(R12)   LINE
         J     AAE00339
*S161: }
*S162: else{
*S163: do GAPC.PackageCode( line );
AAE00338 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S164: line->Bits->IgnoreComp :=1;
         L     R2,72(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
AAE00339 J     AAE00341
*S165: }
*S166: }
*S167: else highestPayingLine:=line;
AAE00340 MVC   76(4,R12),72(R12)   LINE
AAE00341 EQU   *
AAE00342 EQU   *
AAE00343 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00344
         L     R2,8(R2)
AAE00344 ST    R2,4(R9)   ITEM
         J     AAE00336
*S169: }
*S170: }
*S172: }
*S173: }
* PERFORM T-PACKAGING IF A Q2 CODE IS PRESENT
*S176: if( Q2Present ) then {
AAE00345 EQU   *
AAE00346 EQU   *
AAE00347 L     R15,96(R12)   Q2PRESENT
         LTR   R15,R15
         JE    AAE00366
*S177: reset line;
         XC    72(4,R12),72(R12)
* IF A PAYABLE T CODE IS PRESENT, PACKAGE ALL Q2 CODES INTO IT
*S179: if( payableTPresent ) then {
         L     R15,88(R12)   PAYABLETPRESENT
         LTR   R15,R15
         JE    AAE00354
*S180: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00348 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00353
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),48(R11)   10
         MVC   66(2,R13),50(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00353
*S181: if( line->flags->TPackaged
         L     R2,72(R12)   LINE
         TM    1092(R2),32   TPACKAGED
         JE    AAE00350
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,69(R11)   Q2
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00350
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00350
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00350
         L     R2,72(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00350
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00349
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00350
*S182: and line->StatusIndicator="Q2"
*S183: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S184: do GAPC.PackageCode( line );
AAE00349 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S185: line->Bits->IgnoreComp :=1;
         L     R2,72(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
AAE00350 EQU   *
AAE00351 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00352
         L     R2,8(R2)
AAE00352 ST    R2,4(R9)   ITEM
         J     AAE00348
AAE00353 J     AAE00365
*S186: }
*S187: }
*S188: }
* OTHERWISE, FIND THE HIGHEST COST Q2 CODE AND PACKAGE ALL OTHER Q2 CO
*S190: else{
*S191: loop( item:=base->lines->first; item and (line:=&item->line, li
AAE00354 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00355 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00364
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),48(R11)   10
         MVC   66(2,R13),50(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00364
*S192: if( line->flags->TPackaged
         L     R2,72(R12)   LINE
         TM    1092(R2),32   TPACKAGED
         JE    AAE00361
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,69(R11)   Q2
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00361
         L     R2,72(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,32(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00361
         L     R2,72(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,64(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00361
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00361
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00361
         L     R2,72(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00361
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00356
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00361
*S193: and line->StatusIndicator="Q2"
*S194: and line->ConditionalAPC
*S195: and line->ConditionalAPC<>"00000"
*S196: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S202: if( highestPayingLineT ) then {
AAE00356 L     R15,80(R12)   HIGHESTPAYINGLINET
         LTR   R15,R15
         JE    AAE00359
*S203: if( highestPayingLineT->ConditionalApcPayment < line->Condition
         L     R2,80(R12)   HIGHESTPAYINGLINET
         L     R3,72(R12)   LINE
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNL   AAE00357
*S204: do GAPC.PackageCode( highestPayingLineT );
         LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S205: highestPayingLineT->Bits->IgnoreComp :=1;
         L     R5,80(R12)   HIGHESTPAYINGLINET
         OI    1081(R5),8   IGNORECOMP
*S206: highestPayingLineT :=line;
         MVC   80(4,R12),72(R12)   LINE
         J     AAE00358
*S207: }
*S208: else{
*S209: do GAPC.PackageCode( line );
AAE00357 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S210: line->Bits->IgnoreComp :=1;
         L     R2,72(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
AAE00358 J     AAE00360
*S211: }
*S212: }
*S213: else highestPayingLineT:=line;
AAE00359 MVC   80(4,R12),72(R12)   LINE
AAE00360 EQU   *
AAE00361 EQU   *
AAE00362 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00363
         L     R2,8(R2)
AAE00363 ST    R2,4(R9)   ITEM
         J     AAE00355
*S215: }
*S216: }
*S218: }
*S219: }
* IF BOTH STV-PACKAGED AND T-PACKAGED CONDITIONS EXIST, SELECT THE HIG
* OTHERWISE, SELECT THE ONLY HIGHEST PAYING STV OR T CODE.
*S223: if( highestPayingLine ) then {
AAE00364 EQU   *
AAE00365 EQU   *
AAE00366 L     R15,76(R12)   HIGHESTPAYINGLINE
         LTR   R15,R15
         JE    AAE00374
*S224: if( highestPayingLineT ) then {
         L     R15,80(R12)   HIGHESTPAYINGLINET
         LTR   R15,R15
         JE    AAE00371
*S225: if( highestPayingLine->ConditionalApcPayment < highestPayingLin
         L     R2,76(R12)   HIGHESTPAYINGLINE
         L     R3,80(R12)   HIGHESTPAYINGLINET
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNL   AAE00368
*S226: do GAPC.PackageCode( highestPayingLine );
         LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S227: highestPayingLine->Bits->IgnoreComp :=1;
         L     R5,76(R12)   HIGHESTPAYINGLINE
         OI    1081(R5),8   IGNORECOMP
*S228: do GAPC.SetConditionalApc( highestPayingLineT );
         LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC117
         BASR  R14,R15
* THERE'S A CHANCE THAT THE Q CODE RESOLVED TO A J1. IN THAT CASE, DON
* COMPLEXITY ADJUSTMENTS FOR J1 CODES THAT CAN PAIR WITH ITSELF.
*S231: if( highestPayingLineT->StatusIndicator<>"J1" ) then {
         L     R6,80(R12)   HIGHESTPAYINGLINET
         LA    R14,180(R6)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,71(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JE    AAE00367
*S232: do GAPC.ReduceUnits( highestPayingLineT );
         LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC114
         BASR  R14,R15
AAE00367 J     AAE00370
*S233: }
*S234: }
*S235: else{
*S236: do GAPC.PackageCode( highestPayingLineT );
AAE00368 LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC119
         BASR  R14,R15
*S237: highestPayingLineT->Bits->IgnoreComp :=1;
         L     R2,80(R12)   HIGHESTPAYINGLINET
         OI    1081(R2),8   IGNORECOMP
*S238: do GAPC.SetConditionalApc( highestPayingLine );
         LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC117
         BASR  R14,R15
* THERE'S A CHANCE THAT THE Q CODE RESOLVED TO A J1. IN THAT CASE, DON
* COMPLEXITY ADJUSTMENTS FOR J1 CODES THAT CAN PAIR WITH ITSELF.
*S241: if( highestPayingLine->StatusIndicator<>"J1" ) then {
         L     R3,76(R12)   HIGHESTPAYINGLINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,71(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAE00369
*S242: do GAPC.ReduceUnits( highestPayingLine );
         LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC114
         BASR  R14,R15
AAE00369 EQU   *
AAE00370 J     AAE00373
*S243: }
*S244: }
*S245: }
*S246: else{
*S247: do GAPC.SetConditionalApc( highestPayingLine );
AAE00371 LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC117
         BASR  R14,R15
* THERE'S A CHANCE THAT THE Q CODE RESOLVED TO A J1. IN THAT CASE, DON
* COMPLEXITY ADJUSTMENTS FOR J1 CODES THAT CAN PAIR WITH ITSELF.
*S250: if( highestPayingLine->StatusIndicator<>"J1" ) then {
         L     R2,76(R12)   HIGHESTPAYINGLINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,71(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00372
*S251: do GAPC.ReduceUnits( highestPayingLine );
         LA    R14,76(R12)   HIGHESTPAYINGLINE
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC114
         BASR  R14,R15
AAE00372 EQU   *
AAE00373 J     AAE00377
*S252: }
*S253: }
*S254: }
*S255: else if( highestPayingLineT ) then {
AAE00374 L     R15,80(R12)   HIGHESTPAYINGLINET
         LTR   R15,R15
         JE    AAE00376
*S256: do GAPC.SetConditionalApc( highestPayingLineT );
         LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC117
         BASR  R14,R15
* THERE'S A CHANCE THAT THE Q CODE RESOLVED TO A J1. IN THAT CASE, DON
* COMPLEXITY ADJUSTMENTS FOR J1 CODES THAT CAN PAIR WITH ITSELF.
*S259: if( highestPayingLineT->StatusIndicator<>"J1" ) then {
         L     R2,80(R12)   HIGHESTPAYINGLINET
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,71(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00375
*S260: do GAPC.ReduceUnits( highestPayingLineT );
         LA    R14,80(R12)   HIGHESTPAYINGLINET
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC114
         BASR  R14,R15
AAE00375 EQU   *
AAE00376 EQU   *
AAE00377 EQU   *
AAE00378 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,44(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC062
**************************
GAPCC062 CSECT
GAPCC062 AMODE ANY
GAPCC062 RMODE ANY
*XREF - GAPCC062 GAPC.ConditionalAPCs
*  R11 + 0000 Literals        (68 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (52 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 1120 (setnline)
*        0084(R12)-> reference to Struct len 1120 (highestCondApcLine)
*        0088(R12)-> reference to Struct len 1120 (highestCondApcLineT
*        0092(R12)-> Integer len 4 (possapcpay)
*        0096(R12)-> Integer len 4 (possapcpayT)
*        0100(R12)-> String (si_eval)
*        0112(R12)-> String ()
*        0124(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00403
         DC    A(DMNSCMP) @00000
         DC    F'0' @00004
         DC    F'1' @00008
         DC    A(DMNSUBS) @00012
         DC    A(DMNSCPY) @00016
         DC    A(DMNSLOG) @00020
         DC    A(GAPCC119) @00024
         DC    A(GAPCC117) @00028
         DC    F'11' @00032
         DC    A(DMNFREE) @00036
         DC    H'1'  0 1 @00040
         DC    H'5'  0 5 @00042
         DC    H'9'  0 9 @00044
         DC    CL1'A' @00046
         DC    CL1'Q' @00047
         DC    CL1'1' @00048
         DC    CL1'S' @00049
         DC    CL1'T' @00050
         DC    CL1'V' @00051
         DC    CL1'X' @00052
         DC    CL5'00000' @00053
         DC    CL9'000000001' @00058
AAE00403 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(36,R12),72(R12)
         ST    R2,108(R12)
         XC    112(8,R12),112(R12)
         ST    R2,120(R12)
* Edits (NONE)
*message "-- START Conditional Processing --";
*do GAPC.printLineFlags( "" );
* v8.0, eff 1/1/07 Set APCs for services if no other
* line subject to possible APC payment on same date
*S282: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAE00406 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAE00451
*S283: possapcpay:=0;
         XC    92(4,R12),92(R12)   POSSAPCPAY
*S284: possapcpayT:=0;
         XC    96(4,R12),96(R12)   POSSAPCPAYT
*S285: reset highestCondApcLine;
         XC    84(4,R12),84(R12)
*S286: reset highestCondApcLineT;
         XC    88(4,R12),88(R12)
*S288: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00407 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAE00432
* V17.3 EFFECTIVE, RETROACTIVE 2015-01-01, EXCLUDE PACKAGED CODES FROM
* HIGHEST PAYING Q CODE FOR CONDITIONAL PACKAGING
*S292: if( ( 57 < base->Version and line->PackagingFlag )
         L     R2,1868(R9)   VERSION
         CHI   R2,57
         JNH   AAE00408
         L     R3,76(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00409
AAE00408 L     R2,76(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAE00409
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,46(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAE00410
*S293: or line->Bits->IgnoreLine
*S294: or line->StatusIndicator="A" ) then continue;
AAE00409 J     AAE00431
*S296: /*v10.0, eff 1/1/09 use the standard APC associated SI as this
*S297: si_eval:=( StrPartial( line->StatusIndicator, 0, 1 )="Q" )? lin
AAE00410 L     R2,76(R12)   LINE
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00411
         L     R4,76(R12)   LINE
         LA    R3,180(R4)   STATUSINDICATOR
         J     AAE00412
AAE00411 L     R2,76(R12)   LINE
         LA    R3,256(R2)   CONDITIONALSI
AAE00412 LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S299: /*they could be ignored lines so we omit that test here and che
* v10.3, eff 10/1/09 do not include S, T, V or X if denied or rejected
* v10.3, eff 1/1/08 do not include special pkg Q if denied or rejected
*S302: if( not ( line->Bits->IgnoreInpat
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00430
         L     R4,76(R12)   LINE
         L     R5,548(R4)   DENIALFLAG
         CHI   R5,1
         JNE   AAE00413
         L     R6,76(R12)   LINE
         LA    R14,156(R6)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,48(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAE00430
*S303: or ( line->DenialFlag=1 and line->ActionFlag<>"1" ) ) ) then {
*S304: if( (
*S305: not (
*S306: line->flags->StvPackaged
AAE00413 L     R2,76(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JNE   AAE00416
         L     R3,76(R12)   LINE
         TM    1092(R3),32   TPACKAGED
         JNE   AAE00416
         LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,49(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAE00415
         LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00415
         LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,51(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAE00415
         LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00414
         L     R3,1868(R9)   VERSION
         CHI   R3,58
         JL    AAE00415
AAE00414 J     AAE00416
*S307: or line->flags->TPackaged
*S308: )
*or line->PaymentApc<>line->HcpcsApc
*S310: )
*S311: and (
*S312: si_eval="S"
*S313: or si_eval="T"
*S314: or si_eval="V"
*S315: or ( si_eval="X" and base->Version < 58 )
*S316: ) ) then {
*S317: possapcpay+=1;/*include those that overlap and have re-assignme
AAE00415 LHI   R2,1
         A     R2,92(R12)   POSSAPCPAY
         ST    R2,92(R12)   POSSAPCPAY
         J     AAE00422
*S318: }
*S319: /*v10.3, eff 1/1/08 do not include special pkg codes in the cha
*S320: else if( line->flags->StvPackaged
AAE00416 L     R2,76(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JE    AAE00421
         L     R3,76(R12)   LINE
         LA    R14,1012(R3)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAE00421
         L     R2,76(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00421
         L     R2,76(R12)   LINE
         L     R3,76(R12)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,500(R3)   HCPCSAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00421
*S321: and line->ConditionalAPC
*S322: and line->ConditionalAPC<>"00000"
*S323: and line->PaymentApc=line->HcpcsApc
*S327: ) then {/*don't override where we already re-assigned the APC*/
*S328: if( highestCondApcLine ) then {
         L     R15,84(R12)   HIGHESTCONDAPCLINE
         LTR   R15,R15
         JE    AAE00419
*S329: if( line->ConditionalApcPayment > highestCondApcLine->Condition
         L     R2,76(R12)   LINE
         L     R3,84(R12)   HIGHESTCONDAPCLINE
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNH   AAE00417
*S330: setnline := highestCondApcLine;
         MVC   80(4,R12),84(R12)   HIGHESTCONDAPCLINE
*S331: highestCondApcLine:=line;/*set new highest conditional apc line
         MVC   84(4,R12),76(R12)   LINE
         J     AAE00418
*S332: }
*S333: else{
*S334: setnline := line;
AAE00417 MVC   80(4,R12),76(R12)   LINE
*S335: }
*S336: /*set APC, SI to N on other conditional apc line*/
*S337: do GAPC.PackageCode( setnline );
AAE00418 LA    R14,80(R12)   SETNLINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC119
         BASR  R14,R15
*S338: setnline->Bits->IgnoreComp:= 1;/*v10.1, eff 1/1/09 ignore in la
         L     R2,80(R12)   SETNLINE
         OI    1081(R2),8   IGNORECOMP
         J     AAE00420
*S339: }
*S340: else highestCondApcLine:=line;
AAE00419 MVC   84(4,R12),76(R12)   LINE
*message "-- #1 --";
*do GAPC.printLineFlags( "" );
*S343: }
*S345: /* v10.0:  Note added here on why the payment APC <> hcpcs APC
*S346:        If it is a special pkg code but somehow already been cha
*S347:        in this case it could be a conflicting Q code prior to 1
*S348:        because the special pkg logic is then run first, but lef
*S349:        and it would not be included in the count, and go into s
*S350:        because payment would always be equal*/
*S351: /*v10.3, eff 10/1/09 do not include T codes in the criteria log
*S352: if( (
*S353: not (
*S354: line->flags->StvPackaged
AAE00420 EQU   *
AAE00421 EQU   *
AAE00422 L     R2,76(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JNE   AAE00423
         L     R3,76(R12)   LINE
         TM    1092(R3),32   TPACKAGED
         JNE   AAE00423
         LA    R14,100(R12)   SI_EVAL
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00423
*S355: or line->flags->TPackaged
*S356: )
*or line->PaymentApc<>line->HcpcsApc
*S358: )
*S359: and si_eval="T"
*S360: ) then {
*S361: possapcpayT+=1;
         LHI   R2,1
         A     R2,96(R12)   POSSAPCPAYT
         ST    R2,96(R12)   POSSAPCPAYT
         J     AAE00429
*S362: }
*S363: /*v10.3, eff 1/1/08 do not include special pkg codes in the cha
*S364: else if( line->flags->TPackaged
AAE00423 L     R2,76(R12)   LINE
         TM    1092(R2),32   TPACKAGED
         JE    AAE00428
         L     R3,76(R12)   LINE
         LA    R14,1012(R3)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAE00428
         L     R2,76(R12)   LINE
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00428
         L     R2,76(R12)   LINE
         L     R3,76(R12)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,500(R3)   HCPCSAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE00428
*S365: and line->ConditionalAPC
*S366: and line->ConditionalAPC<>"00000"
*S367: and line->PaymentApc=line->HcpcsApc
*S371: ) then {
*S372: if( highestCondApcLineT ) then {
         L     R15,88(R12)   HIGHESTCONDAPCLINET
         LTR   R15,R15
         JE    AAE00426
*S373: if( line->ConditionalApcPayment>highestCondApcLineT->Conditiona
         L     R2,76(R12)   LINE
         L     R3,88(R12)   HIGHESTCONDAPCLINET
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNH   AAE00424
*S374: setnline:=highestCondApcLineT;
         MVC   80(4,R12),88(R12)   HIGHESTCONDAPCLINET
*S375: highestCondApcLineT:=line;/*set new highest conditional apc lin
         MVC   88(4,R12),76(R12)   LINE
         J     AAE00425
*S376: }
*S377: else setnline:=line;
AAE00424 MVC   80(4,R12),76(R12)   LINE
*S378: /*set APC, SI to N on other conditional apc line*/
*S379: do GAPC.PackageCode( setnline );
AAE00425 LA    R14,80(R12)   SETNLINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC119
         BASR  R14,R15
*S380: setnline->Bits->IgnoreComp:= 1;/*v10.1, eff 1/1/09 ignore in la
         L     R2,80(R12)   SETNLINE
         OI    1081(R2),8   IGNORECOMP
         J     AAE00427
*S381: }
*S382: else highestCondApcLineT:=line;
AAE00426 MVC   88(4,R12),76(R12)   LINE
AAE00427 EQU   *
AAE00428 EQU   *
AAE00429 EQU   *
AAE00430 EQU   *
AAE00431 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00407
*message "-- #2 --";
*do GAPC.printLineFlags( "" );
*S385: }
*S387: }/*not inpatient ignored*/
*S388: }/*each days items (not ignored)*/
*S390: if( highestCondApcLine ) then {
AAE00432 L     R15,84(R12)   HIGHESTCONDAPCLINE
         LTR   R15,R15
         JE    AAE00435
*S391: if( possapcpay ) then {
         L     R15,92(R12)   POSSAPCPAY
         LTR   R15,R15
         JE    AAE00433
*S392: do GAPC.PackageCode( highestCondApcLine );
         LA    R14,84(R12)   HIGHESTCONDAPCLINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC119
         BASR  R14,R15
*S393: highestCondApcLine->Bits->IgnoreComp:=1;/*v10.1, eff 1/1/09 ign
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         OI    1081(R2),8   IGNORECOMP
         J     AAE00434
*S394: }
*S395: else{
*S396: /*set APC, SI on conditional apc line*/
*S397: do GAPC.SetConditionalApc( highestCondApcLine );
AAE00433 LA    R14,84(R12)   HIGHESTCONDAPCLINE
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC117
         BASR  R14,R15
*S398: }
*message "-- #3 --";
*do GAPC.printLineFlags( "" );
*S401: }
*S403: if( highestCondApcLineT ) then {
AAE00434 EQU   *
AAE00435 L     R15,88(R12)   HIGHESTCONDAPCLINET
         LTR   R15,R15
         JE    AAE00438
*S404: if( possapcpayT ) then {
         L     R15,96(R12)   POSSAPCPAYT
         LTR   R15,R15
         JE    AAE00436
*S405: do GAPC.PackageCode( highestCondApcLineT );
         LA    R14,88(R12)   HIGHESTCONDAPCLINET
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC119
         BASR  R14,R15
*S406: highestCondApcLineT->Bits->IgnoreComp:=1;/*v10.1, eff 1/1/09 ig
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         OI    1081(R2),8   IGNORECOMP
         J     AAE00437
*S407: }
*S408: else{
*S409: do GAPC.SetConditionalApc( highestCondApcLineT );
AAE00436 LA    R14,88(R12)   HIGHESTCONDAPCLINET
         ST    R14,64(R13)
         L     R15,28(R11)   GAPCC117
         BASR  R14,R15
*S410: }
*message "-- #4 --";
*do GAPC.printLineFlags( "" );
*S413: }
*S415: /*tiebreaker if T and STVX cases met & also assign Units = 1 he
*S416: /*eff 1/1/08 set one unit on specially assigned APC lines*/
*S417: if( highestCondApcLine
AAE00437 EQU   *
AAE00438 L     R15,84(R12)   HIGHESTCONDAPCLINE
         LTR   R15,R15
         JE    AAE00443
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00443
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00443
         L     R15,88(R12)   HIGHESTCONDAPCLINET
         LTR   R15,R15
         JE    AAE00443
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00443
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00443
*S418: and highestCondApcLine->APC
*S419: and highestCondApcLine->APC<>"00000"
*S420: and highestCondApcLineT
*S421: and highestCondApcLineT->APC
*S422: and highestCondApcLineT->APC<>"00000" ) then {
*S423: if( highestCondApcLine->ConditionalApcPayment > highestCondApcL
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         L     R3,88(R12)   HIGHESTCONDAPCLINET
         L     R4,1024(R2)   CONDITIONALAPCPAYMENT
         C     R4,1024(R3)   CONDITIONALAPCPAYMENT
         JNH   AAE00440
*S424: setnline := highestCondApcLineT;
         MVC   80(4,R12),88(R12)   HIGHESTCONDAPCLINET
* assign units to 1 of resultant APC line
*S426: highestCondApcLine->ServiceUnitsPay :=1;/*this holds manipulate
         L     R5,84(R12)   HIGHESTCONDAPCLINE
         MVC   568(4,R5),8(R11)   1
*S427: highestCondApcLine->ServiceUnitsInput :="000000001";%test worka
         L     R6,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,232(R6)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   9
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
* V16.2.0, EFFECTIVE 2015-07-01, PAF 11 INDICATES UNITS REDUCED TO 1
*S429: if( 59 < base->Version
         L     R7,1868(R9)   VERSION
         CHI   R7,59
         JNH   AAE00439
         L     R8,84(R12)   HIGHESTCONDAPCLINE
         L     R2,468(R8)   SERVICEUNITS
         CHI   R2,1
         JNH   AAE00439
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         L     R15,544(R2)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAE00439
*S430: and 1 < highestCondApcLine->ServiceUnits
*S431: and not highestCondApcLine->PayAdjFlag ) then {
*S432: highestCondApcLine->PayAdjFlag :=11;
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         MVC   544(4,R2),32(R11)   11
AAE00439 J     AAE00442
*S433: }
*S434: }
*S435: else {
*S436: setnline := highestCondApcLine;
AAE00440 MVC   80(4,R12),84(R12)   HIGHESTCONDAPCLINE
* assign units to 1 of resultant APC line
*S438: highestCondApcLineT->ServiceUnitsPay :=1;/*this holds manipulat
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         MVC   568(4,R2),8(R11)   1
*S439: highestCondApcLineT->ServiceUnitsInput :="000000001";%test work
         L     R3,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,232(R3)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   9
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
* V16.2.0, EFFECTIVE 2015-07-01, PAF 11 INDICATES UNITS REDUCED TO 1
*S441: if( 59 < base->Version
         L     R4,1868(R9)   VERSION
         CHI   R4,59
         JNH   AAE00441
         L     R5,88(R12)   HIGHESTCONDAPCLINET
         L     R6,468(R5)   SERVICEUNITS
         CHI   R6,1
         JNH   AAE00441
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         L     R15,544(R2)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAE00441
*S442: and 1 < highestCondApcLineT->ServiceUnits
*S443: and not highestCondApcLineT->PayAdjFlag ) then {
*S444: highestCondApcLineT->PayAdjFlag :=11;
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         MVC   544(4,R2),32(R11)   11
*S445: }
*S446: }
*S447: /*set APC, SI to N on lowest weighted conditional apc line in c
*S448: do GAPC.PackageCode( setnline );
AAE00441 EQU   *
AAE00442 LA    R14,80(R12)   SETNLINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC119
         BASR  R14,R15
*S449: setnline->Bits->IgnoreComp:=1;/*v10.1, eff 1/1/09 ignore in lat
         L     R2,80(R12)   SETNLINE
         OI    1081(R2),8   IGNORECOMP
         J     AAE00449
*message "-- #5 --";
*do GAPC.printLineFlags( "" );
*S452: }/*tiebreaker*/
*S453: else if( highestCondApcLine
AAE00443 L     R15,84(R12)   HIGHESTCONDAPCLINE
         LTR   R15,R15
         JE    AAE00445
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00445
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00445
*S454: and highestCondApcLine->APC
*S455: and highestCondApcLine->APC<>"00000" ) then {
* assign units to 1 of resultant APC line
*S457: /*eff. 1/1/08; don't change units on old policy logic*/
*S458: highestCondApcLine->ServiceUnitsPay :=1;/*this holds manipulate
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         MVC   568(4,R2),8(R11)   1
*S459: highestCondApcLine->ServiceUnitsInput :="000000001";%test worka
         L     R3,84(R12)   HIGHESTCONDAPCLINE
         LA    R14,232(R3)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   9
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
* V16.2.0, EFFECTIVE 2015-07-01, PAF 11 INDICATES UNITS REDUCED TO 1
*S461: if( 59 < base->Version
         L     R4,1868(R9)   VERSION
         CHI   R4,59
         JNH   AAE00444
         L     R5,84(R12)   HIGHESTCONDAPCLINE
         L     R6,468(R5)   SERVICEUNITS
         CHI   R6,1
         JNH   AAE00444
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         L     R15,544(R2)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAE00444
*S462: and 1 < highestCondApcLine->ServiceUnits
*S463: and not highestCondApcLine->PayAdjFlag ) then {
*S464: highestCondApcLine->PayAdjFlag :=11;
         L     R2,84(R12)   HIGHESTCONDAPCLINE
         MVC   544(4,R2),32(R11)   11
AAE00444 J     AAE00448
*S465: }
*message "-- #6 --";
*do GAPC.printLineFlags( "" );
*S468: }
*S469: else if( highestCondApcLineT
AAE00445 L     R15,88(R12)   HIGHESTCONDAPCLINET
         LTR   R15,R15
         JE    AAE00447
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,20(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00447
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),42(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAE00447
*S470: and highestCondApcLineT->APC
*S471: and highestCondApcLineT->APC<>"00000" ) then {
* assign units to 1 of resultant APC line
*S473: highestCondApcLineT->ServiceUnitsPay := 1;/*this holds manipula
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         MVC   568(4,R2),8(R11)   1
*S474: highestCondApcLineT->ServiceUnitsInput := "000000001";%test wor
         L     R3,88(R12)   HIGHESTCONDAPCLINET
         LA    R14,232(R3)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   9
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
* V16.2.0, EFFECTIVE 2015-07-01, PAF 11 INDICATES UNITS REDUCED TO 1
*S476: if( 59 < base->Version
         L     R4,1868(R9)   VERSION
         CHI   R4,59
         JNH   AAE00446
         L     R5,88(R12)   HIGHESTCONDAPCLINET
         L     R6,468(R5)   SERVICEUNITS
         CHI   R6,1
         JNH   AAE00446
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         L     R15,544(R2)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAE00446
*S477: and 1 < highestCondApcLineT->ServiceUnits
*S478: and not highestCondApcLineT->PayAdjFlag ) then {
*S479: highestCondApcLineT->PayAdjFlag :=11;
         L     R2,88(R12)   HIGHESTCONDAPCLINET
         MVC   544(4,R2),32(R11)   11
AAE00446 EQU   *
AAE00447 EQU   *
AAE00448 EQU   *
AAE00449 EQU   *
AAE00450 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAE00406
AAE00451 EQU   *
AAE00452 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,36(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC063
**************************
GAPCC063 CSECT
GAPCC063 AMODE ANY
GAPCC063 RMODE ANY
*XREF - GAPCC063 GAPC.CriticalCarePackaging2
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (criticalCarePresent)
*        0072(R12)-> Integer len 4 (criticalCareAncPresent)
*        0076(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00503
         DC    A(DMNATFD) @00000
         DC    F'1' @00004
         DC    A(DMNSCMP) @00008
         DC    A(GAPCC119) @00012
         DC    A(GAPCC117) @00016
         DC    H'10'  0 10 @00020
         DC    H'1120'  4 96 @00022
         DC    H'1'  0 1 @00024
         DC    CL1'1' @00026
AAE00503 XC    64(12,R12),64(R12)
*message "-- #7 --";
*do GAPC.printLineFlags( "" );
*message "-- END Conditional Processing --";
*do GAPC.printLineFlags( "" );
* LOCATE ALL CRITICAL CARE AND ANCILLARY CODES
*S497: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00506 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00517
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),20(R11)   10
         MVC   66(2,R13),22(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00517
*S498: if( line->flags->TraumaCriticalCare ) then {
         L     R2,64(R12)   LINE
         TM    1091(R2),1   TRAUMACRITICALCARE
         JE    AAE00509
*S499: if( not criticalCarePresent ) then {
         L     R15,68(R12)   CRITICALCAREPRESENT
         LTR   R15,R15
         JNE   AAE00507
*S500: criticalCarePresent:=1;
         MVC   68(4,R12),4(R11)   1
*S501: }
*S502: if( criticalCareAncPresent ) then break;
AAE00507 L     R15,72(R12)   CRITICALCAREANCPRESENT
         LTR   R15,R15
         JE    AAE00508
         J     AAE00517
AAE00508 J     AAE00514
*S503: }
*S504: else if( line->flags->CriticalCareAncillary
AAE00509 L     R2,64(R12)   LINE
         TM    1092(R2),128   CRITICALCAREANCILLARY
         JE    AAE00513
         L     R3,64(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00513
         L     R4,64(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE00513
         L     R2,64(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00513
         L     R2,64(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00510
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00513
*S505: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S506: if( not criticalCareAncPresent ) then {
AAE00510 L     R15,72(R12)   CRITICALCAREANCPRESENT
         LTR   R15,R15
         JNE   AAE00511
*S507: criticalCareAncPresent:=1;
         MVC   72(4,R12),4(R11)   1
*S508: }
*S509: if( criticalCarePresent ) then break;
AAE00511 L     R15,68(R12)   CRITICALCAREPRESENT
         LTR   R15,R15
         JE    AAE00512
         J     AAE00517
AAE00512 EQU   *
AAE00513 EQU   *
AAE00514 EQU   *
AAE00515 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00516
         L     R2,8(R2)
AAE00516 ST    R2,4(R9)   ITEM
         J     AAE00506
*S510: }
*S511: }
*S513: loop( item:=base->lines->first; item and (line:=&item->line, li
AAE00517 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAE00518 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAE00527
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),20(R11)   10
         MVC   66(2,R13),22(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAE00527
*S514: if( line->flags->CriticalCareAncillary
         L     R2,64(R12)   LINE
         TM    1092(R2),128   CRITICALCAREANCILLARY
         JE    AAE00524
         L     R3,64(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00524
         L     R4,64(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE00524
         L     R2,64(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00524
         L     R2,64(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00519
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00524
*S515: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
* CRITERIA FOR CRITICAL CARE PACKAGING:
* 1. THE CRITICAL CARE CODE AND AT LEAST ONE ANCILLARY CODE IS PRESENT
* 2. A. MODIFIER 59 IS NOT PRESENT ON ANY LINE OF THE CLAIM, OR
*  B. THE ANCILLARY CODE IS FLAGGED AS StvPackaged (Q1)
* 3. PACKAGE THE ANCILLARY CODE;
*S521: if( criticalCarePresent
AAE00519 L     R15,68(R12)   CRITICALCAREPRESENT
         LTR   R15,R15
         JE    AAE00522
         L     R15,72(R12)   CRITICALCAREANCPRESENT
         LTR   R15,R15
         JE    AAE00522
         L     R2,64(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JNE   AAE00521
         TM    3001(R9),1   HAS59MODIFIER
         JNE   AAE00520
         TM    3002(R9),64   HASXMODIFIER
         JE    AAE00521
AAE00520 J     AAE00522
*S522: and criticalCareAncPresent
*S523: and ( line->flags->StvPackaged
*S524: or not ( claim->Bits->Has59Modifier or claim->Bits->HasXModifie
*S525: ) ) then {
*S526: do GAPC.PackageCode( line );
AAE00521 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC119
         BASR  R14,R15
*S527: line->Bits->IgnoreComp :=1;
         L     R2,64(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
         J     AAE00523
*S528: }
* 4. OTHERWISE, SET THE DEFAULT ASSIGNMENT FOR THE ANCILLARY CODE.
* NOTE: INCLUDES ANCILLARY CODES ALSO FLAGGED AS StvPackaged (SI=Q1)
* WHEN MODIFIER 59 IS PRESENT OR CRITICAL CARE IS MISSING
*S532: else{
*S533: do GAPC.SetConditionalApc( line );
AAE00522 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC117
         BASR  R14,R15
AAE00523 EQU   *
AAE00524 EQU   *
AAE00525 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAE00526
         L     R2,8(R2)
AAE00526 ST    R2,4(R9)   ITEM
         J     AAE00518
AAE00527 EQU   *
AAE00528 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC064
**************************
GAPCC064 CSECT
GAPCC064 AMODE ANY
GAPCC064 RMODE ANY
*XREF - GAPCC064 GAPC.CriticalCarePackaging
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 628 (day)
*        0072(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00603
         DC    A(DMNSCMP) @00000
         DC    A(DMNSCPY) @00004
         DC    A(GAPCC088) @00008
         DC    A(GAPCC119) @00012
         DC    H'1'  0 1 @00016
         DC    CL1'1' @00018
AAE00603 XC    64(8,R12),64(R12)
* Edits (NONE)
*S547: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   68(4,R12),60(R9)   FIRSTVISIT
AAE00606 L     R15,68(R12)   DAY
         LTR   R15,R15
         JE    AAE00626
* FIND CRITICAL CARE LINE
*S550: loop( line:=day->firstDaysItems; line and not line->flags->Trau
         L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00607 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE00609
         L     R2,64(R12)   LINE
         TM    1091(R2),1   TRAUMACRITICALCARE
         JNE   AAE00609
AAE00608 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00607
*S552: if( day->Bits->CriticalCareAncillary
AAE00609 L     R2,68(R12)   DAY
         TM    626(R2),4   CRITICALCAREANCILLARY
         JE    AAE00618
         L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE00618
*S553: and line ) then {
*S554: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00610 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE00617
*S555: if( line->flags->CriticalCareAncillary
         L     R2,64(R12)   LINE
         TM    1092(R2),128   CRITICALCAREANCILLARY
         JE    AAE00615
         L     R3,64(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00615
         L     R4,64(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE00615
         L     R2,64(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00615
         L     R2,64(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00611
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00615
*S556: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
* THE StvPackaged EXCLUSION IS FOR CODES 36600 AND 94762 WHICH ARE ON
* THE CRITICAL CARE AND STV PACKAGING LISTS. MODIFIER 59 IS NOT APPLIC
*S559: if( ( day->Bits->HasXModifier or day->Bits->Has59Modifier )
AAE00611 L     R2,68(R12)   DAY
         TM    627(R2),64   HASXMODIFIER
         JNE   AAE00612
         L     R3,68(R12)   DAY
         TM    626(R3),16   HAS59MODIFIER
         JE    AAE00613
AAE00612 L     R2,64(R12)   LINE
         TM    1092(R2),64   STVPACKAGED
         JNE   AAE00613
*S560: and not line->flags->StvPackaged ) then {
*S561: line->StatusIndicator:=line->ConditionalSI;
         L     R2,64(R12)   LINE
         L     R3,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,256(R3)   CONDITIONALSI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S562: line->PaymentIndicator:=line->ConditionalPI;
         L     R4,64(R12)   LINE
         L     R5,64(R12)   LINE
         L     R6,268(R5)   CONDITIONALPI
         ST    R6,204(R4)   PAYMENTINDICATOR
*S563: do GAPC.PrepPaymentMethodFlags( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC088
         BASR  R14,R15
         J     AAE00614
*S564: }
*S565: else{
*S566: do GAPC.PackageCode( line );
AAE00613 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC119
         BASR  R14,R15
*S567: line->Bits->IgnoreComp :=1;/*v10.1, eff 1/1/09 ignore in later
         L     R2,64(R12)   LINE
         OI    1081(R2),8   IGNORECOMP
AAE00614 EQU   *
AAE00615 EQU   *
AAE00616 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00610
AAE00617 J     AAE00624
*S568: }
*S569: }
*S570: }
*S571: }
*S572: else{
*S573: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAE00618 L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00619 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE00623
*S574: if( line->flags->CriticalCareAncillary
         L     R2,64(R12)   LINE
         TM    1092(R2),128   CRITICALCAREANCILLARY
         JE    AAE00621
         L     R3,64(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE00621
         L     R4,64(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE00621
         L     R2,64(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE00621
         L     R2,64(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00620
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00621
*S575: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S576: line->StatusIndicator :=line->ConditionalSI;
AAE00620 L     R2,64(R12)   LINE
         L     R3,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,256(R3)   CONDITIONALSI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S577: line->PaymentIndicator :=line->ConditionalPI;
         L     R4,64(R12)   LINE
         L     R5,64(R12)   LINE
         L     R6,268(R5)   CONDITIONALPI
         ST    R6,204(R4)   PAYMENTINDICATOR
*S578: do GAPC.PrepPaymentMethodFlags( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC088
         BASR  R14,R15
AAE00621 EQU   *
AAE00622 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00619
AAE00623 EQU   *
AAE00624 EQU   *
AAE00625 L     R2,68(R12)   DAY
         MVC   68(4,R12),0(R2)   NEXTVISIT
         J     AAE00606
AAE00626 EQU   *
AAE00627 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC065
**************************
GAPCC065 CSECT
GAPCC065 AMODE ANY
GAPCC065 RMODE ANY
*XREF - GAPCC065 GAPC.lookupComposites
*  R11 + 0000 Literals        (56 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (40 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> reference to Struct len 628 (day)
*        0080(R12)-> reference to Struct len 45 (compDay)
*        0084(R12)-> reference to Struct len 1 (compLine)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> Integer len 4 (levelcount)
*        0096(R12)-> String (current_prime_comp_type)
*        0108(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 112)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,112  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00703
         DC    A(DMNRSET) @00000
         DC    A(DMNSCMP) @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNSEL) @00012
         DC    F'5' @00016
         DC    A(DMNSCPYX) @00020
         DC    F'2' @00024
         DC    A(GAPCC123) @00028
         DC    F'1' @00032
         DC    A(DMNI2S) @00036
         DC    A(DMNFREE) @00040
         DC    H'1'  0 1 @00044
         DC    H'4'  0 4 @00046
         DC    H'5'  0 5 @00048
         DC    H'7'  0 7 @00050
         DC    CL1'1' @00052
         DC    CL1'A' @00053
         DC    CL1'B' @00054
         DC    CL1'C' @00055
AAE00703 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(32,R12),72(R12)
         ST    R2,104(R12)
         XC    108(4,R12),108(R12)
* Edits (NONE)
*S596: loop( day:=base->firstVisit; day; day:=day->nextVisit )
         MVC   76(4,R12),60(R9)   FIRSTVISIT
AAE00706 L     R15,76(R12)   DAY
         LTR   R15,R15
         JE    AAE00807
*S597: {
*S598: reset current_prime_comp_type;
         LA    R14,96(R12)
         ST    R14,60(R13)
         L     R15,0(R11)   DMNRSET
         BASR  R14,R15
*S599: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,76(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAE00707 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAE00805
*S600: {
* v10.1, eff
*S602: if( not (
*S603: line->Bits->IgnoreLine
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAE00803
         L     R3,72(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAE00803
         L     R2,72(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE00708
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE00803
AAE00708 L     R2,72(R12)   LINE
         TM    1081(R2),8   IGNORECOMP
         JNE   AAE00803
*S604: or line->Bits->IgnoreInpat
*S605: or ( line->DenialFlag=1 and line->ActionFlag<>"1" )
*S606: or line->Bits->IgnoreComp
*S607: ) ) then {
*S608: loop( rc:=select MapCompositeTbl using byHCPCS( line->Hcpcs );
         MVC   60(2,R13),46(R11)   4
         MVC   62(2,R13),44(R11)   1
         LA    R14,3660(R9)   MAPCOMPOSITETBL
         ST    R14,64(R13)
         L     R2,72(R12)   LINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),48(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAE00709
         L     R5,64(R13)
         AHI   R13,80
         LA    R14,3668(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3680(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         LA    R14,5(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3692(2,R9),10(R5)
         AHI   R13,80
         LA    R14,3696(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         LA    R14,12(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
AAE00709 ST    R4,88(R12)   RC
AAE00710 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAE00802
*S609: {
*S610: if( line->Hcpcs<>MapCompositeTbl->HCPCS ) then break;
         L     R3,72(R12)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3668(R9)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAE00711
         J     AAE00802
*S612: if( base->Version>=MapCompositeTbl->LoVersion
AAE00711 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3692(R9),128   LOVERSION
         JE    AAE00712
         LHI   R14,-1
AAE00712 IC    R14,3692(R9)   LOVERSION
         CR    R2,R14
         JL    AAE00799
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3693(R9),128   HIVERSION
         JE    AAE00713
         LHI   R14,-1
AAE00713 IC    R14,3693(R9)   HIVERSION
         CR    R3,R14
         JH    AAE00799
         LA    R14,108(R12)
         ST    R14,60(R13)
         LA    R14,3680(R9)   COMPOSITEAPC
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,28(R11)   GAPCC123
         BASR  R14,R15
         L     R15,108(R12)
         LTR   R15,R15
         JE    AAE00799
*S613: and base->Version<=MapCompositeTbl->HiVersion
*S614: and do GAPC.findApcData( MapCompositeTbl->CompositeApc, base->V
*S616: /*SET COMPOSITE 1 LOGIC FLAGS (LDR - General Composite List A,
*S617:        * List A = Prostate Brachytherapy 8001
*S618:        * List B = Electrophysiology/Ablation 8000
*S619:        * List C = Electrophysiology/Ablation 8000 (Only require
*S620:        */
*S621: if( 0<DataApcTbl->Comp1Id and DataApcTbl->Comp1Id<=2 ) then
         CLI   3124(R9),0   COMP1ID
         JNH   AAE00771
         CLI   3124(R9),2   COMP1ID
         JH    AAE00771
*S622: {
*S623: compLine :=&line->comp1Flags[DataApcTbl->Comp1Id];
         L     R2,72(R12)   LINE
         LA    R3,48(R2)   COMP1FLAGS
         XR    R14,R14
         TM    3124(R9),128   COMP1ID
         JE    AAE00714
         LHI   R14,-1
AAE00714 IC    R14,3124(R9)   COMP1ID
         AR    R3,R14
         ST    R3,84(R12)   COMPLINE
*S624: compDay :=&day->comp1Flags[DataApcTbl->Comp1Id];
         L     R4,76(R12)   DAY
         LA    R5,44(R4)   COMP1FLAGS
         XR    R6,R6
         TM    3124(R9),128   COMP1ID
         JE    AAE00715
         LHI   R6,-1
AAE00715 IC    R6,3124(R9)   COMP1ID
         MHI   R6,48
         AR    R5,R6
         ST    R5,80(R12)   COMPDAY
*S625: if( MapCompositeTbl->ListType="A" ) then {
         LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAE00729
*S626: /* IF PrimeCompositeLine DOES NOT EXIST OR IF THE CURRENT LINE'
*S627:          * THAN THE PrimeCompositeLine's HCPCS, REPLACE IT (ASS
*S628: /*V14.0, EFFECTIVE 2013-01-01, ADDED GROUP C.
*S629:          * GROUP C: LOWEST ALPHA-NUMERIC CODE BECOMES THE PRIME
*S630:          *  - ALL OTHER GROUP C CODES
*S631:          *  - ALL GROUP A CODES
*S632:          *  - ALL GROUP B CODES SO LONG AS A ONE GROUP A CODE I
*S633:          * */
*S634: if( not compDay->PrimeCompositeLine
         L     R8,80(R12)   COMPDAY
         L     R15,0(R8)   PRIMECOMPOSITELINE
         LTR   R15,R15
         JE    AAE00717
         L     R2,80(R12)   COMPDAY
         TM    44(R2),8   HASC
         JNE   AAE00716
         L     R3,72(R12)   LINE
         L     R4,80(R12)   COMPDAY
         L     R5,0(R4)   PRIMECOMPOSITELINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R5)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JL    AAE00717
AAE00716 J     AAE00718
*S635: or ( not compDay->Bits->hasC
*S636: and line->Hcpcs < compDay->PrimeCompositeLine->Hcpcs
*S637: ) ) then {
*S638: compDay->PrimeCompositeLine:=line;
AAE00717 L     R2,80(R12)   COMPDAY
         MVC   0(4,R2),72(R12)   LINE
*S639: current_prime_comp_type:="A";
         LA    R14,96(R12)   CURRENT_PRIME_COMP_TYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S640: }
*S641: compLine->Bits->hasA |=1;
AAE00718 L     R2,84(R12)   COMPLINE
         TM    0(R2),64   HASA
         JNE   AAE00719
         XR    R3,R3
         J     AAE00720
AAE00719 LHI   R3,1
AAE00720 EQU   *
AAE00721 O     R3,32(R11)   1
         LTR   R3,R3
         JNE   AAE00722
         NI    0(R2),191   HASA
         J     AAE00723
AAE00722 OI    0(R2),64   HASA
*S642: compDay->Bits->hasA |=1;
AAE00723 L     R4,80(R12)   COMPDAY
         TM    44(R4),64   HASA
         JNE   AAE00724
         XR    R5,R5
         J     AAE00725
AAE00724 LHI   R5,1
AAE00725 EQU   *
AAE00726 O     R5,32(R11)   1
         LTR   R5,R5
         JNE   AAE00727
         NI    44(R4),191   HASA
         J     AAE00728
AAE00727 OI    44(R4),64   HASA
AAE00728 J     AAE00755
*S643: }
*S644: else if( MapCompositeTbl->ListType="B" ) then {
AAE00729 LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,54(R11)   B
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00740
*S645: compLine->Bits->hasB |=1;
         L     R3,84(R12)   COMPLINE
         TM    0(R3),16   HASB
         JNE   AAE00730
         XR    R4,R4
         J     AAE00731
AAE00730 LHI   R4,1
AAE00731 EQU   *
AAE00732 O     R4,32(R11)   1
         LTR   R4,R4
         JNE   AAE00733
         NI    0(R3),239   HASB
         J     AAE00734
AAE00733 OI    0(R3),16   HASB
*S646: compDay->Bits->hasB |=1;
AAE00734 L     R5,80(R12)   COMPDAY
         TM    44(R5),16   HASB
         JNE   AAE00735
         XR    R6,R6
         J     AAE00736
AAE00735 LHI   R6,1
AAE00736 EQU   *
AAE00737 O     R6,32(R11)   1
         LTR   R6,R6
         JNE   AAE00738
         NI    44(R5),239   HASB
         J     AAE00739
AAE00738 OI    44(R5),16   HASB
AAE00739 J     AAE00754
*S647: }
*S648: /*V14.0, EFFECTIVE 2013-01-01, GROUP C LOGIC*/
*S649: else if( MapCompositeTbl->ListType="C" and 49 < base->Version )
AAE00740 LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00753
         L     R3,1868(R9)   VERSION
         CHI   R3,49
         JNH   AAE00753
*S650: if( not compDay->PrimeCompositeLine
         L     R2,80(R12)   COMPDAY
         L     R15,0(R2)   PRIMECOMPOSITELINE
         LTR   R15,R15
         JE    AAE00741
         LA    R14,96(R12)   CURRENT_PRIME_COMP_TYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAE00741
         L     R2,72(R12)   LINE
         L     R3,80(R12)   COMPDAY
         L     R4,0(R3)   PRIMECOMPOSITELINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNL   AAE00742
*S651: or current_prime_comp_type<>"C"
*S652: or line->Hcpcs < compDay->PrimeCompositeLine->Hcpcs
*S653: ) then {
*S654: compDay->PrimeCompositeLine:=line;
AAE00741 L     R2,80(R12)   COMPDAY
         MVC   0(4,R2),72(R12)   LINE
*S655: current_prime_comp_type:="C";
         LA    R14,96(R12)   CURRENT_PRIME_COMP_TYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S656: }
*S657: compLine->Bits->hasC |=1;
AAE00742 L     R2,84(R12)   COMPLINE
         TM    0(R2),8   HASC
         JNE   AAE00743
         XR    R3,R3
         J     AAE00744
AAE00743 LHI   R3,1
AAE00744 EQU   *
AAE00745 O     R3,32(R11)   1
         LTR   R3,R3
         JNE   AAE00746
         NI    0(R2),247   HASC
         J     AAE00747
AAE00746 OI    0(R2),8   HASC
*S658: compDay->Bits->hasC |=1;
AAE00747 L     R4,80(R12)   COMPDAY
         TM    44(R4),8   HASC
         JNE   AAE00748
         XR    R5,R5
         J     AAE00749
AAE00748 LHI   R5,1
AAE00749 EQU   *
AAE00750 O     R5,32(R11)   1
         LTR   R5,R5
         JNE   AAE00751
         NI    44(R4),247   HASC
         J     AAE00752
AAE00751 OI    44(R4),8   HASC
*S659: }
*S660: compDay->Bits->hasModifierExclusion |=line->Bits->Has52Modifier
AAE00752 EQU   *
AAE00753 EQU   *
AAE00754 EQU   *
AAE00755 L     R2,80(R12)   COMPDAY
         L     R3,72(R12)   LINE
         TM    44(R2),128   HASMODIFIEREXCLUSION
         JNE   AAE00756
         XR    R4,R4
         J     AAE00757
AAE00756 LHI   R4,1
AAE00757 EQU   *
AAE00758 TM    1077(R3),32   HAS52MODIFIER
         JNE   AAE00759
         XR    R5,R5
         J     AAE00760
AAE00759 LHI   R5,1
AAE00760 ST    R5,108(R12)
         O     R4,108(R12)
         LTR   R4,R4
         JNE   AAE00761
         NI    44(R2),127   HASMODIFIEREXCLUSION
         J     AAE00762
AAE00761 OI    44(R2),128   HASMODIFIEREXCLUSION
*S661: compDay->Bits->hasModifierExclusion |=line->Bits->Has73Modifier
AAE00762 L     R5,80(R12)   COMPDAY
         L     R6,72(R12)   LINE
         TM    44(R5),128   HASMODIFIEREXCLUSION
         JNE   AAE00763
         XR    R7,R7
         J     AAE00764
AAE00763 LHI   R7,1
AAE00764 EQU   *
AAE00765 TM    1077(R6),8   HAS73MODIFIER
         JNE   AAE00766
         XR    R8,R8
         J     AAE00767
AAE00766 LHI   R8,1
AAE00767 ST    R8,108(R12)
         O     R7,108(R12)
         LTR   R7,R7
         JNE   AAE00768
         NI    44(R5),127   HASMODIFIEREXCLUSION
         J     AAE00769
AAE00768 OI    44(R5),128   HASMODIFIEREXCLUSION
*S662: compDay->CompositeAPC :=MapCompositeTbl->CompositeApc;
AAE00769 L     R8,80(R12)   COMPDAY
         LA    R14,4(R8)   COMPOSITEAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3680(R9)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S663: compDay->SI :=DataApcTbl->StatusIndicator;
         L     R2,80(R12)   COMPDAY
         LA    R14,20(R2)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3100(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S664: compDay->PI :=DataApcTbl->PaymentIndicator;
         L     R3,80(R12)   COMPDAY
         XR    R4,R4
         TM    3112(R9),128   PAYMENTINDICATOR
         JE    AAE00770
         LHI   R4,-1
AAE00770 IC    R4,3112(R9)   PAYMENTINDICATOR
         ST    R4,60(R13)
         LA    R14,32(R3)   PI
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,36(R11)   DMNI2S
         BASR  R14,R15
*S665: }
*S667: /*SET COMPOSITE 2 LOGIC FLAGS (Observation Logic)
*S668:        * Extended Assessment and Management Composite
*S669:        * 8002
*S670:        * 8003
*S671:        * 8009 */
* V17.0 EFFECTIVE 2016-01-01, OBSERVATION COMPOSITE DEACTIVATED
*S674: if( base->Version < 62 ) then {
AAE00771 L     R2,1868(R9)   VERSION
         CHI   R2,62
         JNL   AAE00786
*FIX FOR CHANGE FROM 2 LEVELS TO 1 LEVEL FOR E/M COMPOSITE
*S677: levelcount:=( base->Version<54 )? 2 : 1;
         L     R3,1868(R9)   VERSION
         CHI   R3,54
         JL    AAE00772
         LHI   R2,1
         J     AAE00773
AAE00772 LHI   R2,2
AAE00773 ST    R2,92(R12)   LEVELCOUNT
*S678: if( 0<DataApcTbl->Comp2Id and DataApcTbl->Comp2Id<=levelcount )
         CLI   3125(R9),0   COMP2ID
         JNH   AAE00785
         XR    R14,R14
         TM    3125(R9),128   COMP2ID
         JE    AAE00774
         LHI   R14,-1
AAE00774 IC    R14,3125(R9)   COMP2ID
         CR    R2,R14
         JL    AAE00785
*S679: {
*S680: compLine :=&line->comp2Flags[DataApcTbl->Comp2Id];
         L     R2,72(R12)   LINE
         LA    R3,51(R2)   COMP2FLAGS
         XR    R14,R14
         TM    3125(R9),128   COMP2ID
         JE    AAE00775
         LHI   R14,-1
AAE00775 IC    R14,3125(R9)   COMP2ID
         AR    R3,R14
         ST    R3,84(R12)   COMPLINE
*S681: compDay :=&day->comp2Flags[DataApcTbl->Comp2Id];
         L     R4,76(R12)   DAY
         LA    R5,188(R4)   COMP2FLAGS
         XR    R6,R6
         TM    3125(R9),128   COMP2ID
         JE    AAE00776
         LHI   R6,-1
AAE00776 IC    R6,3125(R9)   COMP2ID
         MHI   R6,48
         AR    R5,R6
         ST    R5,80(R12)   COMPDAY
*S682: if( MapCompositeTbl->ListType="A" ) then {
         LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAE00781
*S683: if( line->flags->ObservationDirectAdmit ) then {
         L     R8,72(R12)   LINE
         TM    1091(R8),8   OBSERVATIONDIRECTADMIT
         JE    AAE00777
*S684: compLine->Bits->hasA2 :=1;/*direct admit has special condition
         L     R2,84(R12)   COMPLINE
         OI    0(R2),32   HASA2
*S685: compDay->Bits->hasA2 :=1;
         L     R3,80(R12)   COMPDAY
         OI    44(R3),32   HASA2
         J     AAE00778
*S686: }
*S687: else {
*S688: compLine->Bits->hasA :=1;
AAE00777 L     R2,84(R12)   COMPLINE
         OI    0(R2),64   HASA
*S689: compDay->Bits->hasA :=1;
         L     R3,80(R12)   COMPDAY
         OI    44(R3),64   HASA
*S690: }
*S691: /* IF PrimeCompositeLine DOES NOT EXISTS OR IF THE CURRENT LINE
*S692:           * THAN THE PrimeCompositeLine's APC PAYMENT, REPLACE
*S693: if( not compDay->PrimeCompositeLine
AAE00778 L     R2,80(R12)   COMPDAY
         L     R15,0(R2)   PRIMECOMPOSITELINE
         LTR   R15,R15
         JE    AAE00779
         L     R3,72(R12)   LINE
         L     R4,80(R12)   COMPDAY
         L     R5,0(R4)   PRIMECOMPOSITELINE
         L     R6,528(R3)   APCPAYMENT
         C     R6,528(R5)   APCPAYMENT
         JNH   AAE00780
*S694: or line->ApcPayment > compDay->PrimeCompositeLine->ApcPayment )
*S695: compDay->PrimeCompositeLine:=line;
AAE00779 L     R2,80(R12)   COMPDAY
         MVC   0(4,R2),72(R12)   LINE
AAE00780 J     AAE00783
*S696: }
*S704: }
*S705: else if( MapCompositeTbl->ListType="B" ) then {
AAE00781 LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,54(R11)   B
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAE00782
*S706: compLine->Bits->hasB :=1;
         L     R3,84(R12)   COMPLINE
         OI    0(R3),16   HASB
*S707: compDay->Bits->hasB :=1;
         L     R4,80(R12)   COMPDAY
         OI    44(R4),16   HASB
*S708: compDay->CntCrit +=line->ServiceUnits;/*count up units per day
         L     R5,80(R12)   COMPDAY
         L     R6,80(R12)   COMPDAY
         L     R7,72(R12)   LINE
         L     R8,16(R6)   CNTCRIT
         A     R8,468(R7)   SERVICEUNITS
         ST    R8,16(R5)   CNTCRIT
*S709: }
*S710: compDay->CompositeAPC :=MapCompositeTbl->CompositeApc;
AAE00782 EQU   *
AAE00783 L     R2,80(R12)   COMPDAY
         LA    R14,4(R2)   COMPOSITEAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3680(R9)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S711: compDay->SI :=DataApcTbl->StatusIndicator;
         L     R3,80(R12)   COMPDAY
         LA    R14,20(R3)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3100(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S712: compDay->PI :=DataApcTbl->PaymentIndicator;
         L     R4,80(R12)   COMPDAY
         XR    R5,R5
         TM    3112(R9),128   PAYMENTINDICATOR
         JE    AAE00784
         LHI   R5,-1
AAE00784 IC    R5,3112(R9)   PAYMENTINDICATOR
         ST    R5,60(R13)
         LA    R14,32(R4)   PI
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,36(R11)   DMNI2S
         BASR  R14,R15
*S713: }
*S715: }
*S717: /*SET COMPOSITE 3 LOGIC FLAGS (Imaging Logic)*/
*S718: /*we treat each as it's own composite APC counts within and
*S719:          logic will do the cross composite APC checking require
*S720: if( 0<DataApcTbl->Comp3Id and DataApcTbl->Comp3Id<=5 ) then
AAE00785 EQU   *
AAE00786 CLI   3126(R9),0   COMP3ID
         JNH   AAE00798
         CLI   3126(R9),5   COMP3ID
         JH    AAE00798
*S721: {
*S722: compLine :=&line->comp3Flags[DataApcTbl->Comp3Id];
         L     R2,72(R12)   LINE
         LA    R3,54(R2)   COMP3FLAGS
         XR    R14,R14
         TM    3126(R9),128   COMP3ID
         JE    AAE00787
         LHI   R14,-1
AAE00787 IC    R14,3126(R9)   COMP3ID
         AR    R3,R14
         ST    R3,84(R12)   COMPLINE
*S723: compDay :=&day->comp3Flags[DataApcTbl->Comp3Id];
         L     R4,76(R12)   DAY
         LA    R5,332(R4)   COMP3FLAGS
         XR    R6,R6
         TM    3126(R9),128   COMP3ID
         JE    AAE00788
         LHI   R6,-1
AAE00788 IC    R6,3126(R9)   COMP3ID
         MHI   R6,48
         AR    R5,R6
         ST    R5,80(R12)   COMPDAY
*S724: /*only one list representation - "A" per imaging group*/
*S725: if( MapCompositeTbl->ListType="A" ) then
         LA    R14,3696(R9)   LISTTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAE00796
*S726: {
*S727: if( line->Bits->Has52Modifier
         L     R8,72(R12)   LINE
         TM    1077(R8),32   HAS52MODIFIER
         JNE   AAE00789
         L     R2,72(R12)   LINE
         TM    1077(R2),8   HAS73MODIFIER
         JE    AAE00790
*S728: or line->Bits->Has73Modifier ) then
*S729: compLine->Bits->hasAexclusion:=1;
AAE00789 L     R2,84(R12)   COMPLINE
         OI    0(R2),4   HASAEXCLUSION
         J     AAE00795
*S730: else {
*S731: compLine->Bits->hasA :=1;
AAE00790 L     R2,84(R12)   COMPLINE
         OI    0(R2),64   HASA
*S732: compDay->Bits->hasA :=1;
         L     R3,80(R12)   COMPDAY
         OI    44(R3),64   HASA
*S733: /*v10.3, eff retro to this logic 1/1/09 count Independent/Condi
*S734: /*Q:  shouldn't this also apply to conditional bilats?- left th
*S735: if( line->Bits->Has50Modifier
         L     R4,72(R12)   LINE
         TM    1077(R4),64   HAS50MODIFIER
         JE    AAE00792
         L     R5,72(R12)   LINE
         TM    1088(R5),2   BILATERALINDEPENDENT
         JNE   AAE00791
         L     R6,72(R12)   LINE
         TM    1088(R6),4   BILATERALCONDITIONAL
         JE    AAE00792
*S736: and (line->flags->BilateralIndependent or line->flags->Bilatera
*S737: compDay->CntCrit+=2;
AAE00791 L     R2,80(R12)   COMPDAY
         L     R3,80(R12)   COMPDAY
         LHI   R4,2
         A     R4,16(R3)   CNTCRIT
         ST    R4,16(R2)   CNTCRIT
         J     AAE00793
*S738: else compDay->CntCrit+=line->ServiceUnits;/*use units; multiple
AAE00792 L     R2,80(R12)   COMPDAY
         L     R3,80(R12)   COMPDAY
         L     R4,72(R12)   LINE
         L     R5,16(R3)   CNTCRIT
         A     R5,468(R4)   SERVICEUNITS
         ST    R5,16(R2)   CNTCRIT
*S739: /*use first line to assign the composite APC*/
*S740: if( not compDay->PrimeCompositeLine ) then
AAE00793 L     R2,80(R12)   COMPDAY
         L     R15,0(R2)   PRIMECOMPOSITELINE
         LTR   R15,R15
         JNE   AAE00794
*S741: compDay->PrimeCompositeLine:=line;
         L     R3,80(R12)   COMPDAY
         MVC   0(4,R3),72(R12)   LINE
*S742: }
*S743: }
*S744: compDay->CompositeAPC :=MapCompositeTbl->CompositeApc;
AAE00794 EQU   *
AAE00795 EQU   *
AAE00796 L     R2,80(R12)   COMPDAY
         LA    R14,4(R2)   COMPOSITEAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3680(R9)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S745: compDay->SI :=DataApcTbl->StatusIndicator;
         L     R3,80(R12)   COMPDAY
         LA    R14,20(R3)   SI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3100(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S746: compDay->PI :=DataApcTbl->PaymentIndicator;
         L     R4,80(R12)   COMPDAY
         XR    R5,R5
         TM    3112(R9),128   PAYMENTINDICATOR
         JE    AAE00797
         LHI   R5,-1
AAE00797 IC    R5,3112(R9)   PAYMENTINDICATOR
         ST    R5,60(R13)
         LA    R14,32(R4)   PI
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,36(R11)   DMNI2S
         BASR  R14,R15
AAE00798 EQU   *
AAE00799 EQU   *
AAE00800 MVC   60(2,R13),50(R11)   7
         LA    R14,3660(R9)   MAPCOMPOSITETBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAE00801
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3668(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3680(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3692(2,R9),10(R3)
         AHI   R13,72
         LA    R14,3696(R9)   MAPCOMPOSITETBL
         ST    R14,60(R13)
         LA    R14,12(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   2
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
AAE00801 ST    R2,88(R12)   RC
         J     AAE00710
AAE00802 EQU   *
AAE00803 EQU   *
AAE00804 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00707
AAE00805 EQU   *
AAE00806 L     R2,76(R12)   DAY
         MVC   76(4,R12),0(R2)   NEXTVISIT
         J     AAE00706
AAE00807 EQU   *
AAE00808 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,40(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC066
**************************
GAPCC066 CSECT
GAPCC066 AMODE ANY
GAPCC066 RMODE ANY
*XREF - GAPCC066 GAPC.Composite1APC
*  R11 + 0000 Literals        (40 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 1120 (line2)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 45 (compDay)
*        0080(R12)-> Integer len 4 (i)
*        0084(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE00903
         DC    F'1' @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNS2I) @00008
         DC    A(GAPCC114) @00012
         DC    A(DMNSCMP) @00016
         DC    A(GAPCC088) @00020
         DC    A(GAPCC089) @00024
         DC    A(GAPCC069) @00028
         DC    A(GAPCC119) @00032
         DC    H'1'  0 1 @00036
         DC    CL1'T' @00038
AAE00903 XC    64(20,R12),64(R12)
* Edits (NONE)
*V19.0 APC 8001 no longer valid.
*S781: if (base->Version > 69) then return;
         L     R2,1868(R9)   VERSION
         CHI   R2,69
         JNH   AAE00906
         J     AAE00926
* v9.0, eff 1/1/08 General Composite APC Logic
*S784: loop( day:=base->firstVisit; day; day:=day->nextVisit )
AAE00906 MVC   72(4,R12),60(R9)   FIRSTVISIT
AAE00907 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAE00925
*S785: {
*S786: loop( i:=1; i<=2; i+=1 )
         MVC   80(4,R12),0(R11)   1
AAE00908 L     R2,80(R12)   I
         CHI   R2,2
         JH    AAE00923
*S787: {
*S788: compDay:=&day->comp1Flags[i];
         L     R3,72(R12)   DAY
         LA    R4,44(R3)   COMP1FLAGS
         L     R5,80(R12)   I
         MHI   R5,48
         AR    R4,R5
         ST    R4,76(R12)   COMPDAY
*S789: if( compDay->PrimeCompositeLine
         L     R6,76(R12)   COMPDAY
         L     R15,0(R6)   PRIMECOMPOSITELINE
         LTR   R15,R15
         JE    AAE00921
         L     R7,76(R12)   COMPDAY
         TM    44(R7),8   HASC
         JNE   AAE00910
         L     R8,76(R12)   COMPDAY
         TM    44(R8),64   HASA
         JE    AAE00909
         L     R2,76(R12)   COMPDAY
         TM    44(R2),16   HASB
         JNE   AAE00910
AAE00909 J     AAE00921
AAE00910 L     R2,76(R12)   COMPDAY
         L     R3,0(R2)   PRIMECOMPOSITELINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAE00921
         L     R4,76(R12)   COMPDAY
         L     R5,0(R4)   PRIMECOMPOSITELINE
         TM    1081(R5),32   IGNOREINPAT
         JNE   AAE00921
*S790: and (
*S791: compDay->Bits->hasC/*V14.0, EFFECTIVE 2013-01-01, NO VERSION CH
*S792: or ( compDay->Bits->hasA and compDay->Bits->hasB )
*S793: )
*S794: and not (
*S795: compDay->PrimeCompositeLine->Bits->IgnoreLine
*S796: or compDay->PrimeCompositeLine->Bits->IgnoreInpat
*S797: ) ) then {
*S799: /*V14.0, EFFECTIVE 2013-01-01, GROUP C IGNORES TERMINATING MODI
*S800: if( compDay->Bits->hasC
         L     R2,76(R12)   COMPDAY
         TM    44(R2),8   HASC
         JNE   AAE00911
         L     R3,76(R12)   COMPDAY
         TM    44(R3),128   HASMODIFIEREXCLUSION
         JNE   AAE00920
*S801: or not compDay->Bits->hasModifierExclusion ) then {
*S802: line :=compDay->PrimeCompositeLine;/*ASSIGN TARGET LINE*/
AAE00911 L     R2,76(R12)   COMPDAY
         MVC   64(4,R12),0(R2)   PRIMECOMPOSITELINE
*S803: line->APC :=compDay->CompositeAPC;
         L     R3,64(R12)   LINE
         L     R4,76(R12)   COMPDAY
         LA    R14,484(R3)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R4)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S804: line->PaymentApc :=compDay->CompositeAPC;
         L     R5,64(R12)   LINE
         L     R6,76(R12)   COMPDAY
         LA    R14,512(R5)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R6)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S805: line->StatusIndicator :=compDay->SI;
         L     R7,64(R12)   LINE
         L     R8,76(R12)   COMPDAY
         LA    R14,180(R7)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R8)   SI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S806: line->PaymentIndicator :=compDay->PI;
         L     R2,64(R12)   LINE
         L     R3,76(R12)   COMPDAY
         LA    R14,32(R3)   PI
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNS2I
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,204(R2)   PAYMENTINDICATOR
*S807: line->PackagingFlag :=0;
         L     R5,64(R12)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
*line->DenialFlag   :=0;
*S809: line->DiscountingFactor :=1;
         L     R6,64(R12)   LINE
         MVC   536(4,R6),0(R11)   1
*S810: do GAPC.ReduceUnits( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC114
         BASR  R14,R15
*S811: if( line->StatusIndicator="T" ) then
         L     R7,64(R12)   LINE
         LA    R14,180(R7)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,38(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JNE   AAE00912
*S812: day->Bits->HasTypeT:=1;%need this set for later observation tes
         L     R2,72(R12)   DAY
         OI    625(R2),32   HASTYPET
*S813: do GAPC.PrepPaymentMethodFlags( line );
AAE00912 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,20(R11)   GAPCC088
         BASR  R14,R15
*S814: do GAPC.SetAPCPay( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC089
         BASR  R14,R15
*S816: line->CompAdjFlag :=do GAPC.GetNextCAF();
         L     R2,64(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         L     R15,28(R11)   GAPCC069
         BASR  R14,R15
*S818: /*FIND ALL OTHER COMPOSITE LINES ON THE SAME DAY, PACKAGED THEM
*S819:       *AND EXCLUDE THEM FROM FURTHER COMPOSITE PROCESSING*/
*S820: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSame
         L     R3,72(R12)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAE00913 L     R15,68(R12)   LINE2
         LTR   R15,R15
         JE    AAE00919
*S821: {
*S822: if( line2<>line
         L     R2,68(R12)   LINE2
         C     R2,64(R12)   LINE
         JE    AAE00917
         L     R3,68(R12)   LINE2
         LA    R4,48(R3)   COMP1FLAGS
         A     R4,80(R12)   I
         TM    0(R4),8   HASC
         JNE   AAE00916
         L     R5,68(R12)   LINE2
         LA    R6,48(R5)   COMP1FLAGS
         A     R6,80(R12)   I
         TM    0(R6),64   HASA
         JE    AAE00914
         L     R7,76(R12)   COMPDAY
         TM    44(R7),16   HASB
         JNE   AAE00916
AAE00914 L     R2,68(R12)   LINE2
         LA    R3,48(R2)   COMP1FLAGS
         A     R3,80(R12)   I
         TM    0(R3),16   HASB
         JE    AAE00915
         L     R4,76(R12)   COMPDAY
         TM    44(R4),64   HASA
         JNE   AAE00916
AAE00915 J     AAE00917
*S823: and (
*S824: line2->comp1Flags[i]->Bits->hasC/*V14.0, EFFECTIVE 2013-01-01,
*S825: or ( line2->comp1Flags[i]->Bits->hasA and compDay->Bits->hasB )
*S826: or ( line2->comp1Flags[i]->Bits->hasB and compDay->Bits->hasA )
*S827: ) ) then {
*S829: do GAPC.PackageCode( line2 );
AAE00916 LA    R14,68(R12)   LINE2
         ST    R14,64(R13)
         L     R15,32(R11)   GAPCC119
         BASR  R14,R15
*S830: line2->CompAdjFlag :=line->CompAdjFlag;
         L     R2,68(R12)   LINE2
         L     R3,64(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,272(R3)   COMPADJFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S831: line2->Bits->IgnoreComp :=1;/*v10.1, eff 1/1/09 ignore in later
         L     R4,68(R12)   LINE2
         OI    1081(R4),8   IGNORECOMP
AAE00917 EQU   *
AAE00918 L     R2,68(R12)   LINE2
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE00913
AAE00919 EQU   *
AAE00920 EQU   *
AAE00921 EQU   *
AAE00922 LHI   R2,1
         A     R2,80(R12)   I
         ST    R2,80(R12)   I
         J     AAE00908
AAE00923 EQU   *
AAE00924 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAE00907
AAE00925 EQU   *
AAE00926 EQU   *
AAE00927 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC067
**************************
GAPCC067 CSECT
GAPCC067 AMODE ANY
GAPCC067 RMODE ANY
*XREF - GAPCC067 GAPC.Composite3APC
*  R11 + 0000 Literals        (44 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (36 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 1120 (line2)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 45 (compDay)
*        0080(R12)-> Integer len 4 (i)
*        0084(R12)-> Integer len 4 (compused)
*        0088(R12)-> Integer len 4 (n1)
*        0092(R12)-> Integer len 4 (n2)
*        0096(R12)-> Integer len 4 (isNonStandardCTScan)
*        0100(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE01003
         DC    F'1' @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNS2I) @00008
         DC    A(GAPCC114) @00012
         DC    A(DMNSCMP) @00016
         DC    A(GAPCC088) @00020
         DC    A(GAPCC089) @00024
         DC    A(GAPCC069) @00028
         DC    A(GAPCC119) @00032
         DC    F'14' @00036
         DC    H'1'  0 1 @00040
         DC    CL1'T' @00042
AAE01003 XC    64(36,R12),64(R12)
* Edits (NONE)
*S849: loop( day:=base->firstVisit; day; day:=day->nextVisit ) {
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAE01006 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAE01039
*S851: loop( i:=1; i<=5; i+=1 ) {
         MVC   80(4,R12),0(R11)   1
AAE01007 L     R2,80(R12)   I
         CHI   R2,5
         JH    AAE01037
*S853: reset line;
         XC    64(4,R12),64(R12)
*S854: compDay:=&day->comp3Flags[i];
         L     R3,72(R12)   DAY
         LA    R4,332(R3)   COMP3FLAGS
         L     R5,80(R12)   I
         MHI   R5,48
         AR    R4,R5
         ST    R4,76(R12)   COMPDAY
* V17.0 FIX
*S857: if( isNonStandardCTScan ) then {
         L     R15,96(R12)   ISNONSTANDARDCTSCAN
         LTR   R15,R15
         JE    AAE01008
*S858: reset isNonStandardCTScan;
         XC    96(4,R12),96(R12)
*S859: }
*S861: /*at least 2 lines with one in the composite group list must be
*S862: if( compDay->CntCrit>0 ) then {
AAE01008 L     R2,76(R12)   COMPDAY
         L     R3,16(R2)   CNTCRIT
         LTR   R3,R3
         JNH   AAE01035
*S863: /*
*S864:      * GROUP 1: ULTRASOUND, REQUIRES AT LEAST 2 FROM GROUP
*S865:      * GROUP 2: CTA WITHOUT CONTRAST, IF PAIRED WITH A CODE FRO
*S866:      * GROUP 3: CTA WITH CONTRAST
*S867:      * GROUP 4: MRI WITHOUT CONTRAST, IF PAIRED WITH A CODE FRO
*S868:      * GROUP 5: MRI WITH CONTRAST
*S869:      * NOTES:
*S870:      * GROUPS 2, 3, 4, & 5 MUST IMPLEMENT RELATED FAMILY LOGIC
*S871:      * FOR GROUPS 2 & 4, IF AT LEAST ONE IS IN THE NEXT CONTRAS
*S872:      * THE NEXT CONTRAST GROUP (3 OR 5); OTHERWISE, IF AT LEAST
*S873:      **/
*S874: compused:=i;
         L     R4,80(R12)   I
         ST    R4,84(R12)   COMPUSED
*S875: switch( i ){
         L     R5,80(R12)   I
         AHI   R5,-1
         LTR   R5,R5
         JL    AAE01022
         CHI   R5,4
         JH    AAE01022
         SLL   R5,2(R0)
         BRAS  R14,AAE01021
         J     AAE01009
         J     AAE01011
         J     AAE01018
         J     AAE01012
         J     AAE01019
AAE01021 B     0(R5,R14)
*S876: /*AT LEAST 2 REQUIRED*/
*S877: case 1:
*S878: if( compDay->CntCrit>=2 ) then {
AAE01009 L     R2,76(R12)   COMPDAY
         L     R3,16(R2)   CNTCRIT
         CHI   R3,2
         JL    AAE01010
*S879: line:=compDay->PrimeCompositeLine;
         L     R4,76(R12)   COMPDAY
         MVC   64(4,R12),0(R4)   PRIMECOMPOSITELINE
*S880: }
*S881: break;
AAE01010 J     AAE01022
*S882: /*CHECK TO SEE IF THERE ARE ANY CODES FROM GROUPS 3 (CTA WITH C
*S883: case 2:
*S884: case 4:
*S885: /*CHECK FOR CROSS GROUP SITUATION, DETERMINE THE MINIMUM LINE A
*S886:       BOTH A REFS WERE SET IN LOOKUPCOMPOSITES IN THIS CASE.*/
*S887: if( day->comp3Flags[i+1]->CntCrit>0 ) then {
AAE01011 EQU   *
AAE01012 L     R2,72(R12)   DAY
         LHI   R3,1
         A     R3,80(R12)   I
         LA    R4,332(R2)   COMP3FLAGS
         MHI   R3,48
         AR    R4,R3
         L     R5,16(R4)   CNTCRIT
         LTR   R5,R5
         JNH   AAE01015
*S888: compused:=i+1;
         LHI   R6,1
         A     R6,80(R12)   I
         ST    R6,84(R12)   COMPUSED
*S889: n1:=compDay->PrimeCompositeLine->LineNo;
         L     R7,76(R12)   COMPDAY
         L     R8,0(R7)   PRIMECOMPOSITELINE
         L     R2,460(R8)   LINENO
         ST    R2,88(R12)   N1
*S890: n2:=day->comp3Flags[i+1]->PrimeCompositeLine->LineNo;
         L     R3,72(R12)   DAY
         LHI   R4,1
         A     R4,80(R12)   I
         LA    R5,332(R3)   COMP3FLAGS
         MHI   R4,48
         AR    R5,R4
         L     R6,0(R5)   PRIMECOMPOSITELINE
         L     R7,460(R6)   LINENO
         ST    R7,92(R12)   N2
*S891: if( n1<n2 ) then
         CR    R2,R7
         JNL   AAE01013
*S892: line:=compDay->PrimeCompositeLine;
         L     R8,76(R12)   COMPDAY
         MVC   64(4,R12),0(R8)   PRIMECOMPOSITELINE
         J     AAE01014
*S893: else
*S894: line:=day->comp3Flags[i+1]->PrimeCompositeLine;
AAE01013 L     R2,72(R12)   DAY
         LHI   R3,1
         A     R3,80(R12)   I
         LA    R4,332(R2)   COMP3FLAGS
         MHI   R3,48
         AR    R4,R3
         MVC   64(4,R12),0(R4)   PRIMECOMPOSITELINE
AAE01014 J     AAE01017
*S895: }
*S896: else if( compDay->CntCrit>=2 ) then
AAE01015 L     R2,76(R12)   COMPDAY
         L     R3,16(R2)   CNTCRIT
         CHI   R3,2
         JL    AAE01016
*S897: line:=compDay->PrimeCompositeLine;
         L     R4,76(R12)   COMPDAY
         MVC   64(4,R12),0(R4)   PRIMECOMPOSITELINE
*S898: break;
AAE01016 EQU   *
AAE01017 J     AAE01022
*S899: case 3:
*S900: case 5:
*S901: /*CHECK FOR CROSS GROUP SITUATION, IF IT DOESN'T EXIST AND AT L
*S902:        *SET LINE TO THIS GROUP 3 (CTA WITH CONTRAST) OR 5 (MRI
*S903: /*only evaluate if we did not have a cross family group situati
*S904: if( day->comp3Flags[i-1]->CntCrit=0
AAE01018 EQU   *
AAE01019 L     R2,72(R12)   DAY
         L     R3,80(R12)   I
         AHI   R3,-1
         LA    R4,332(R2)   COMP3FLAGS
         MHI   R3,48
         AR    R4,R3
         L     R5,16(R4)   CNTCRIT
         LTR   R5,R5
         JNE   AAE01020
         L     R6,76(R12)   COMPDAY
         L     R7,16(R6)   CNTCRIT
         CHI   R7,2
         JL    AAE01020
*S905: and compDay->CntCrit>=2 ) then
*S906: line:=compDay->PrimeCompositeLine;
         L     R2,76(R12)   COMPDAY
         MVC   64(4,R12),0(R2)   PRIMECOMPOSITELINE
*S907: break;
*S908: }
*S910: /*IF THE LINE EXISTS WE HAVE A COMPOSITE ASSIGNED FOR THIS COMP
*S911:      * BE A DIFFERENT FROM THE COMP USED.*/
*S912: if( line
AAE01020 EQU   *
AAE01022 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE01034
         L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAE01034
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAE01034
*S913: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat ) )
*S914: line->APC :=day->comp3Flags[compused]->CompositeAPC;
         L     R2,64(R12)   LINE
         L     R3,72(R12)   DAY
         LA    R4,332(R3)   COMP3FLAGS
         L     R5,84(R12)   COMPUSED
         MHI   R5,48
         AR    R4,R5
         LA    R14,484(R2)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R4)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S915: line->PaymentApc :=day->comp3Flags[compused]->CompositeAPC;
         L     R6,64(R12)   LINE
         L     R7,72(R12)   DAY
         LA    R8,332(R7)   COMP3FLAGS
         L     R2,84(R12)   COMPUSED
         MHI   R2,48
         AR    R8,R2
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,4(R8)   COMPOSITEAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S916: line->StatusIndicator :=day->comp3Flags[compused]->SI;
         L     R3,64(R12)   LINE
         L     R4,72(R12)   DAY
         LA    R5,332(R4)   COMP3FLAGS
         L     R6,84(R12)   COMPUSED
         MHI   R6,48
         AR    R5,R6
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R5)   SI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S917: line->PaymentIndicator :=day->comp3Flags[compused]->PI;
         L     R7,64(R12)   LINE
         L     R8,72(R12)   DAY
         LA    R2,332(R8)   COMP3FLAGS
         L     R3,84(R12)   COMPUSED
         MHI   R3,48
         AR    R2,R3
         LA    R14,32(R2)   PI
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNS2I
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,204(R7)   PAYMENTINDICATOR
*S918: line->PackagingFlag :=0;
         L     R5,64(R12)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
*line->DenialFlag   :=0;
*S920: line->DiscountingFactor :=1;
         L     R6,64(R12)   LINE
         MVC   536(4,R6),0(R11)   1
*S922: do GAPC.ReduceUnits( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC114
         BASR  R14,R15
*S924: if( line->StatusIndicator="T" ) then
         L     R7,64(R12)   LINE
         LA    R14,180(R7)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,42(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JNE   AAE01023
*S925: day->Bits->HasTypeT :=1;%need this set for later observation te
         L     R2,72(R12)   DAY
         OI    625(R2),32   HASTYPET
*S926: do GAPC.PrepPaymentMethodFlags( line );
AAE01023 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,20(R11)   GAPCC088
         BASR  R14,R15
*S927: do GAPC.SetAPCPay( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,24(R11)   GAPCC089
         BASR  R14,R15
*S929: line->CompAdjFlag:=do GAPC.GetNextCAF();
         L     R2,64(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         L     R15,28(R11)   GAPCC069
         BASR  R14,R15
* V17.0 FIX
*S932: isNonStandardCTScan:=( line->flags->NonStandardCtScan and line-
         L     R3,64(R12)   LINE
         TM    1098(R3),32   NONSTANDARDCTSCAN
         JE    AAE01024
         L     R4,64(R12)   LINE
         TM    1079(R4),32   HASCTMODIFIER
         JE    AAE01024
         LHI   R2,1
         J     AAE01025
AAE01024 LHI   R2,0
AAE01025 ST    R2,96(R12)   ISNONSTANDARDCTSCAN
*S934: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSame
         L     R3,72(R12)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAE01026 L     R15,68(R12)   LINE2
         LTR   R15,R15
         JE    AAE01032
*S935: if( line2<>line
         L     R2,68(R12)   LINE2
         C     R2,64(R12)   LINE
         JE    AAE01030
         L     R3,68(R12)   LINE2
         LA    R4,54(R3)   COMP3FLAGS
         A     R4,84(R12)   COMPUSED
         TM    0(R4),64   HASA
         JNE   AAE01028
         L     R5,68(R12)   LINE2
         LA    R6,54(R5)   COMP3FLAGS
         A     R6,80(R12)   I
         TM    0(R6),64   HASA
         JE    AAE01027
         LHI   R7,1
         A     R7,80(R12)   I
         C     R7,84(R12)   COMPUSED
         JE    AAE01028
AAE01027 J     AAE01030
*S936: and ( line2->comp3Flags[compused]->Bits->hasA
*S937: or ( line2->comp3Flags[i]->Bits->hasA and compused=(i+1) )
*S938: ) ) then {
*S939: do GAPC.PackageCode( line2 );
AAE01028 LA    R14,68(R12)   LINE2
         ST    R14,64(R13)
         L     R15,32(R11)   GAPCC119
         BASR  R14,R15
*S940: line2->CompAdjFlag :=line->CompAdjFlag;/*v10.0, eff 1/1/09 - le
         L     R2,68(R12)   LINE2
         L     R3,64(R12)   LINE
         LA    R14,272(R2)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,272(R3)   COMPADJFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S941: line2->Bits->IgnoreComp := 1;/*v10.1, eff 1/1/09 ignore in late
         L     R4,68(R12)   LINE2
         OI    1081(R4),8   IGNORECOMP
* V17.0 FIX
*S944: if( not isNonStandardCTScan
         L     R15,96(R12)   ISNONSTANDARDCTSCAN
         LTR   R15,R15
         JNE   AAE01029
         L     R5,68(R12)   LINE2
         TM    1098(R5),32   NONSTANDARDCTSCAN
         JE    AAE01029
         L     R2,68(R12)   LINE2
         TM    1079(R2),32   HASCTMODIFIER
         JE    AAE01029
*S945: and line2->flags->NonStandardCtScan
*S946: and line2->Bits->HasCTModifier ) then {
*S947: isNonStandardCTScan:=1;
         MVC   96(4,R12),0(R11)   1
AAE01029 EQU   *
AAE01030 EQU   *
AAE01031 L     R2,68(R12)   LINE2
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE01026
*S948: }
*S949: }
*S950: }
* V17.0 FIX, IF THE PAYING COMPOSITE IS ON THE NON-STANDARD CT LIST WI
* BUT ANOTHER LINE IN THE IMAGING COMPOSITE GROUP IS A ON THE NON-STAN
* AND HAS THE CT MODIFIER SET, SET THE PAYING COMPOSITE PAF = 14
*S955: if( isNonStandardCTScan ) then {
AAE01032 L     R15,96(R12)   ISNONSTANDARDCTSCAN
         LTR   R15,R15
         JE    AAE01033
*S956: line->PayAdjFlag:=PaymentAdjustments->CT_SCAN_REDUCTION;% 14;
         L     R2,64(R12)   LINE
         MVC   544(4,R2),36(R11)   14
AAE01033 EQU   *
AAE01034 EQU   *
AAE01035 EQU   *
AAE01036 LHI   R2,1
         A     R2,80(R12)   I
         ST    R2,80(R12)   I
         J     AAE01007
AAE01037 EQU   *
AAE01038 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAE01006
AAE01039 EQU   *
AAE01040 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC068
**************************
GAPCC068 CSECT
GAPCC068 AMODE ANY
GAPCC068 RMODE ANY
*XREF - GAPCC068 GAPC.SetQ_SI
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> Integer len 4 (stage)
*  R12 + 0068 Local pool      (8 bytes)
*  R12 + 0076 Locals & temps  (28 bytes)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 628 (day)
*        0084(R12)-> Integer len 4 (i)
*        0088(R12)-> Integer len 4 (levelcount)
*        0092(R12)-> String ()
*        0104(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE01103
         DC    F'0' @00000
         DC    F'1' @00004
         DC    A(DMNSUBS) @00008
         DC    A(DMNSCMP) @00012
         DC    A(GAPCC117) @00016
         DC    A(DMNFREE) @00020
         DC    H'1'  0 1 @00024
         DC    CL1'Q' @00026
         DC    CL1'1' @00027
AAE01103 XC    68(8,R12),68(R12)
         LA    R2,68(R12)
         MVC   72(4,R12),44(R10)
         ST    R2,44(R10)
         XC    76(24,R12),76(R12)
         ST    R2,100(R12)
* Edits (NONE)
*S972: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   80(4,R12),60(R9)   FIRSTVISIT
AAE01106 L     R15,80(R12)   DAY
         LTR   R15,R15
         JE    AAE01140
*S973: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,80(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAE01107 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAE01138
*S975: if( StrPartial( line->StatusIndicator, 0, 1 )="Q" ) then {
         L     R2,76(R12)   LINE
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),0(R11)   0
         MVC   76(4,R13),4(R11)   1
         L     R15,8(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAE01136
*S976: switch( stage ){
         L     R4,64(R12)   STAGE
         L     R5,0(R4)   STAGE
         AHI   R5,-1
         LTR   R5,R5
         JL    AAE01135
         CHI   R5,3
         JH    AAE01135
         SLL   R5,2(R0)
         BRAS  R14,AAE01134
         J     AAE01108
         J     AAE01111
         J     AAE01118
         J     AAE01127
AAE01134 B     0(R5,R14)
*S977: case 1:
*S978: /*v10.1 fix to filter out denials to let the Q surface in those
*S979: /*v10.1 fix to allow standard SI to surface if action flag = 1*
*S980: if( line->flags->DailyMentalHealth
AAE01108 L     R2,76(R12)   LINE
         TM    1093(R2),1   DAILYMENTALHEALTH
         JE    AAE01110
         L     R3,76(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE01110
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE01110
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE01110
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE01109
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,27(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE01110
*S981: and not ( line->PackagingFlag or line->Bits->IgnoreLine or line
*S982: do GAPC.SetConditionalApc( line );
AAE01109 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC117
         BASR  R14,R15
*S983: }
*S984: break;
AAE01110 J     AAE01135
*S985: case 2:
*S986: loop( i:=1; i<=2; i+=1 ){
AAE01111 MVC   84(4,R12),4(R11)   1
AAE01112 L     R2,84(R12)   I
         CHI   R2,2
         JH    AAE01117
*S987: if( not ( line->PackagingFlag or line->Bits->IgnoreLine or line
         L     R3,76(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE01115
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE01115
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE01115
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE01113
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,27(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE01115
AAE01113 L     R2,76(R12)   LINE
         LA    R3,48(R2)   COMP1FLAGS
         A     R3,84(R12)   I
         TM    0(R3),64   HASA
         JNE   AAE01114
         L     R4,76(R12)   LINE
         LA    R5,48(R4)   COMP1FLAGS
         A     R5,84(R12)   I
         TM    0(R5),16   HASB
         JNE   AAE01114
         L     R2,76(R12)   LINE
         LA    R3,48(R2)   COMP1FLAGS
         A     R3,84(R12)   I
         TM    0(R3),8   HASC
         JE    AAE01115
*S988: and (
*S989: line->comp1Flags[i]->Bits->hasA
*S990: or line->comp1Flags[i]->Bits->hasB
*S991: or line->comp1Flags[i]->Bits->hasC
*S992: ) ) then {
*S993: do GAPC.SetConditionalApc( line );
AAE01114 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC117
         BASR  R14,R15
AAE01115 EQU   *
AAE01116 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAE01112
*S994: }
*S995: }
*S996: break;
AAE01117 J     AAE01135
*S997: case 3:
*FIX FOR CHANGE FROM 2 LEVELS TO ONE LEVEL FOR E/M COMPOSITE
*S999: levelcount:=( base->Version<54 )? 2 : 1;
AAE01118 L     R2,1868(R9)   VERSION
         CHI   R2,54
         JL    AAE01119
         LHI   R2,1
         J     AAE01120
AAE01119 LHI   R2,2
AAE01120 ST    R2,88(R12)   LEVELCOUNT
*S1000: loop( i:=1; i<=levelcount; i+=1 ){
         MVC   84(4,R12),4(R11)   1
AAE01121 L     R2,84(R12)   I
         C     R2,88(R12)   LEVELCOUNT
         JH    AAE01126
*S1001: if( not ( line->PackagingFlag or line->Bits->IgnoreLine or lin
         L     R3,76(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE01124
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE01124
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE01124
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE01122
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,27(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE01124
AAE01122 L     R2,76(R12)   LINE
         LA    R3,51(R2)   COMP2FLAGS
         A     R3,84(R12)   I
         TM    0(R3),64   HASA
         JNE   AAE01123
         L     R4,76(R12)   LINE
         LA    R5,51(R4)   COMP2FLAGS
         A     R5,84(R12)   I
         TM    0(R5),16   HASB
         JE    AAE01124
*S1002: and (
*S1003: line->comp2Flags[i]->Bits->hasA
*S1004: or line->comp2Flags[i]->Bits->hasB
*S1005: ) ) then {
*S1006: do GAPC.SetConditionalApc( line );
AAE01123 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC117
         BASR  R14,R15
AAE01124 EQU   *
AAE01125 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAE01121
*S1007: }
*S1008: }
*S1009: break;
AAE01126 J     AAE01135
*S1010: case 4:
*S1011: loop( i:=1; i<=5; i+=1 ){
AAE01127 MVC   84(4,R12),4(R11)   1
AAE01128 L     R2,84(R12)   I
         CHI   R2,5
         JH    AAE01133
*S1012: if( not ( line->PackagingFlag or line->Bits->IgnoreLine or lin
         L     R3,76(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAE01131
         L     R4,76(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAE01131
         L     R2,76(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAE01131
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAE01129
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,27(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAE01131
AAE01129 L     R2,76(R12)   LINE
         LA    R3,54(R2)   COMP3FLAGS
         A     R3,84(R12)   I
         TM    0(R3),64   HASA
         JNE   AAE01130
         L     R4,76(R12)   LINE
         LA    R5,54(R4)   COMP3FLAGS
         A     R5,84(R12)   I
         TM    0(R5),4   HASAEXCLUSION
         JE    AAE01131
*S1013: and (
*S1014: line->comp3Flags[i]->Bits->hasA
*S1015: or line->comp3Flags[i]->Bits->hasAexclusion
*S1016: ) ) then {
*S1017: do GAPC.SetConditionalApc( line );
AAE01130 LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC117
         BASR  R14,R15
AAE01131 EQU   *
AAE01132 LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
         J     AAE01128
*S1018: }
*S1019: }
*S1020: break;
AAE01133 EQU   *
AAE01135 EQU   *
AAE01136 EQU   *
AAE01137 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE01107
AAE01138 EQU   *
AAE01139 L     R2,80(R12)   DAY
         MVC   80(4,R12),0(R2)   NEXTVISIT
         J     AAE01106
AAE01140 EQU   *
AAE01141 LA    R3,68(R12)
         ST    R3,60(R13)
         L     R15,20(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC069
**************************
GAPCC069 CSECT
GAPCC069 AMODE ANY
GAPCC069 RMODE ANY
*XREF - GAPCC069 GAPC.GetNextCAF
*  R11 + 0000 Literals        (80 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> String len 12 (frame return)
*  R12 + 0072 Local pool      (8 bytes)
*  R12 + 0080 Locals & temps  (52 bytes)
*        0080(R12)-> Integer len 4 (nextval)
*        0084(R12)-> Integer len 4 (anval)
*        0088(R12)-> Integer len 4 (part1int)
*        0092(R12)-> Integer len 4 (part2int)
*        0096(R12)-> String (nextCAF)
*        0108(R12)-> String (part1)
*        0120(R12)-> String (part2)
*  R13 + 0000 Stack           (R12 + 136)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,136  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE01203
         DC    A(V40PACK) @00000
         DC    F'9' @00004
         DC    F'1' @00008
         DC    A(DMNSUBS) @00012
         DC    A(DMNI2S) @00016
         DC    A(DMNCCAT) @00020
         DC    F'25' @00024
         DC    A(DMNSCPY) @00028
         DC    A(DMNFREE) @00032
         DC    XL12'000C00010001000800024000' @00036
         DC    H'25'  0 25 @00048
         DC    H'2'  0 2 @00050
         DC    CL25'ABCDEFGHIJKLMNPQRSTUVWXYZ' @00052
         DC    CL2'00' @00077
AAE01203 XC    72(8,R12),72(R12)
         LA    R3,72(R12)
         MVC   76(4,R12),44(R10)
         ST    R3,44(R10)
         XC    80(24,R12),80(R12)
         ST    R3,104(R12)
         XC    108(8,R12),108(R12)
         ST    R3,116(R12)
         XC    120(8,R12),120(R12)
         ST    R3,128(R12)
* Edits (NONE)
*S1036: nextval :=claim->CompositePayAdjCounter+1;
         LHI   R2,1
         A     R2,2976(R9)   COMPOSITEPAYADJCOUNTER
         ST    R2,80(R12)   NEXTVAL
*S1037: claim->CompositePayAdjCounter :=nextval;
         ST    R2,2976(R9)   COMPOSITEPAYADJCOUNTER
*S1039: /*if less than 100 - pack it zero filled  (possibly 99 values
*S1040:    else less than 325 construct A1-Z9 (possible 225 values in
*S1041:    else construct AA - ZZ (possible 625 values in this segment
*S1042:     949 potential assignment values w. 450 line limit would fa
*S1043:     FA would be 450 distinct values in this scheme*/
*S1045: if( nextval<100 ) then {
         L     R3,80(R12)   NEXTVAL
         CHI   R3,100
         JNL   AAE01206
*S1046: pack( nextCAF, "i02", nextval );
         LA    R14,96(R12)   NEXTCAF
         ST    R14,64(R13)
         LA    R14,80(R12)   NEXTVAL
         ST    R14,68(R13)
         LA    R14,36(R11)
         ST    R14,60(R13)
         L     R15,0(R11)   V40PACK
         BASR  R14,R15
         J     AAE01215
*S1047: }
*S1048: else if( nextval<325 ) then {
AAE01206 L     R2,80(R12)   NEXTVAL
         CHI   R2,325
         JNL   AAE01209
*S1049: anval :=(nextval - 100);
         L     R3,80(R12)   NEXTVAL
         AHI   R3,-100
         ST    R3,84(R12)   ANVAL
*S1050: part1int :=anval / 9;/* converted will yield the alpha part of
         XR    R14,R14
         LR    R15,R3
         LTR   R15,R15
         JNL   AAE01207
         LHI   R14,-1
AAE01207 D     R14,4(R11)   9
         LR    R4,R15
         ST    R4,88(R12)   PART1INT
*S1051: part1 :=StrPartial( "ABCDEFGHIJKLMNPQRSTUVWXYZ", part1int, 1 )
         LA    R14,108(R12)   PART1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   ABCDEFGHIJKLMNPQRSTUVWXYZ
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   25
         MVC   72(4,R13),88(R12)   PART1INT
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
*S1052: part2int :=(anval mod 9)+1;/* converted will yield the numeric
         XR    R14,R14
         LR    R15,R3
         LTR   R15,R15
         JNL   AAE01208
         LHI   R14,-1
AAE01208 D     R14,4(R11)   9
         LR    R5,R14
         AHI   R5,1
         ST    R5,92(R12)   PART2INT
*S1053: part2 :=part2int;
         ST    R5,60(R13)
         LA    R14,120(R12)   PART2
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,16(R11)   DMNI2S
         BASR  R14,R15
*S1054: nextCAF :=part1+part2;
         LA    R14,96(R12)   NEXTCAF
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,108(R12)   PART1
         ST    R14,64(R13)
         XC    74(2,R13),74(R13)
         LA    R14,120(R12)   PART2
         ST    R14,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,20(R11)   DMNCCAT
         BASR  R14,R15
         J     AAE01214
*S1055: }
*S1056: else if( nextval<950 ) then {
AAE01209 L     R2,80(R12)   NEXTVAL
         CHI   R2,950
         JNL   AAE01212
*S1057: anval :=(nextval - 325);
         L     R3,80(R12)   NEXTVAL
         AHI   R3,-325
         ST    R3,84(R12)   ANVAL
*S1058: part1int :=anval / 25;/* converted will yield the alpha part o
         XR    R14,R14
         LR    R15,R3
         LTR   R15,R15
         JNL   AAE01210
         LHI   R14,-1
AAE01210 D     R14,24(R11)   25
         LR    R4,R15
         ST    R4,88(R12)   PART1INT
*S1059: part1 :=StrPartial( "ABCDEFGHIJKLMNPQRSTUVWXYZ", part1int, 1 )
         LA    R14,108(R12)   PART1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   ABCDEFGHIJKLMNPQRSTUVWXYZ
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   25
         MVC   72(4,R13),88(R12)   PART1INT
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
*S1060: part2int :=(anval mod 25);/* converted will yield the numeric
         XR    R14,R14
         LR    R15,R3
         LTR   R15,R15
         JNL   AAE01211
         LHI   R14,-1
AAE01211 D     R14,24(R11)   25
         LR    R5,R14
         ST    R5,92(R12)   PART2INT
*S1061: part2 :=StrPartial( "ABCDEFGHIJKLMNPQRSTUVWXYZ", 25-(25-part2i
         LHI   R6,25
         SR    R6,R5
         LHI   R7,25
         SR    R7,R6
         LA    R14,120(R12)   PART2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   ABCDEFGHIJKLMNPQRSTUVWXYZ
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   25
         ST    R7,72(R13)
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
*S1062: nextCAF :=part1+part2;
         LA    R14,96(R12)   NEXTCAF
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,108(R12)   PART1
         ST    R14,64(R13)
         XC    74(2,R13),74(R13)
         LA    R14,120(R12)   PART2
         ST    R14,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,20(R11)   DMNCCAT
         BASR  R14,R15
         J     AAE01213
*S1063: }
*S1064: else nextCAF :="00";/*historical CAF on limit reached was not
AAE01212 LA    R14,96(R12)   NEXTCAF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,77(R11)   00
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   2
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
*S1065: return nextCAF;
AAE01213 EQU   *
AAE01214 EQU   *
AAE01215 L     R2,60(R12)
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R12)   NEXTCAF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
AAE01216 LA    R4,72(R12)
         ST    R4,60(R13)
         L     R15,32(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC070
**************************
GAPCC070 CSECT
GAPCC070 AMODE ANY
GAPCC070 RMODE ANY
*XREF - GAPCC070 GAPC.E74RollUp
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (32 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> reference to Struct len 628 (day)
*        0072(R12)-> reference to Struct len 1120 (firstBilat)
*        0076(R12)-> reference to Struct len 1120 (lastBilat)
*        0080(R12)-> reference to Struct len 1120 (biline)
*        0084(R12)-> Unknown ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAE01303
         DC    A(DMNSCMP) @00000
         DC    F'74' @00004
         DC    F'2' @00008
         DC    A(GAPCC091) @00012
AAE01303 XC    64(32,R12),64(R12)
* Edits 74
*S1077: if( claim->Bits->HasProfServiceRC ) then {
         TM    3005(R9),8   HASPROFSERVICERC
         JE    AAE01336
*S1078: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   68(4,R12),60(R9)   FIRSTVISIT
AAE01306 L     R15,68(R12)   DAY
         LTR   R15,R15
         JE    AAE01335
*S1080: reset biline;/*start fresh each visit on list of bilines*/
         XC    80(4,R12),80(R12)
*S1081: reset firstBilat;
         XC    72(4,R12),72(R12)
*S1082: reset lastBilat;
         XC    76(4,R12),76(R12)
*S1083: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAE01307 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE01324
*S1085: if( line->Bits->HasProfServiceRC
         L     R2,64(R12)   LINE
         TM    1084(R2),1   HASPROFSERVICERC
         JE    AAE01322
         L     R3,64(R12)   LINE
         TM    1088(R3),4   BILATERALCONDITIONAL
         JNE   AAE01308
         L     R4,64(R12)   LINE
         TM    1088(R4),2   BILATERALINDEPENDENT
         JE    AAE01322
AAE01308 L     R2,64(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAE01322
         L     R3,64(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAE01322
*S1086: and ( line->flags->BilateralConditional or line->flags->Bilate
*S1087: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1089: /* look at unique list of bilaterals: HCPCS+RC - see if this o
*S1090: loop( biline:=firstBilat; biline; biline:=biline->nextCondIndB
         MVC   80(4,R12),72(R12)   FIRSTBILAT
AAE01309 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JE    AAE01312
*S1091: if( line->Hcpcs=biline->Hcpcs
         L     R2,64(R12)   LINE
         L     R3,80(R12)   BILINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE01310
         L     R5,64(R12)   LINE
         L     R6,80(R12)   BILINE
         L     R7,464(R5)   REVENUECODE
         C     R7,464(R6)   REVENUECODE
         JNE   AAE01310
*S1092: and line->RevenueCode=biline->RevenueCode ) then break;
         J     AAE01312
AAE01310 EQU   *
AAE01311 L     R2,80(R12)   BILINE
         MVC   80(4,R12),12(R2)   NEXTCONDINDBI
         J     AAE01309
*S1093: }
*S1095: if( not biline ) then {
AAE01312 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JNE   AAE01315
*S1096: /* No other procedure like this on the list - create new eleme
*S1097: if( lastBilat ) then
         L     R15,76(R12)   LASTBILAT
         LTR   R15,R15
         JE    AAE01313
*S1098: lastBilat->nextCondIndBi:=line;
         L     R2,76(R12)   LASTBILAT
         MVC   12(4,R2),64(R12)   LINE
         J     AAE01314
*S1099: else firstBilat:=line;
AAE01313 MVC   72(4,R12),64(R12)   LINE
*S1100: lastBilat:=line;
AAE01314 MVC   76(4,R12),64(R12)   LINE
*S1102: reset line->nextCondIndBi;
         L     R2,64(R12)   LINE
         XC    12(4,R2),12(R2)
*S1103: biline:=line;
         MVC   80(4,R12),64(R12)   LINE
*S1104: }
*S1106: /*keep track of the bilines that have no modifiers*/
*S1107: if( line->ModCount=0 ) then {
AAE01315 L     R2,64(R12)   LINE
         L     R3,1032(R2)   MODCOUNT
         LTR   R3,R3
         JNE   AAE01316
*S1108: biline->BilatNoMods+=line->ServiceUnits;
         L     R4,80(R12)   BILINE
         L     R5,80(R12)   BILINE
         L     R6,64(R12)   LINE
         L     R7,1036(R5)   BILATNOMODS
         A     R7,468(R6)   SERVICEUNITS
         ST    R7,1036(R4)   BILATNOMODS
         J     AAE01321
*S1109: }
*S1110: /*keep track of the bilines that have a mix of 50 and also onl
*S1111: else if( line->Bits->Has50Modifier ) then {
AAE01316 L     R2,64(R12)   LINE
         TM    1077(R2),64   HAS50MODIFIER
         JE    AAE01319
*S1112: if( line->Bits->HasOthThan50 ) then {
         L     R3,64(R12)   LINE
         TM    1084(R3),4   HASOTHTHAN50
         JE    AAE01317
*S1113: biline->BilatW50AndOthMod+=line->ServiceUnits;
         L     R4,80(R12)   BILINE
         L     R5,80(R12)   BILINE
         L     R6,64(R12)   LINE
         L     R7,1040(R5)   BILATW50ANDOTHMOD
         A     R7,468(R6)   SERVICEUNITS
         ST    R7,1040(R4)   BILATW50ANDOTHMOD
         J     AAE01318
*S1114: }
*S1115: else {
*S1116: biline->BilatOnlyMod50 +=line->ServiceUnits;
AAE01317 L     R2,80(R12)   BILINE
         L     R3,80(R12)   BILINE
         L     R4,64(R12)   LINE
         L     R5,1044(R3)   BILATONLYMOD50
         A     R5,468(R4)   SERVICEUNITS
         ST    R5,1044(R2)   BILATONLYMOD50
*S1117: line->Bits->BilatOnlyMod50 :=1;
         L     R6,64(R12)   LINE
         OI    1084(R6),2   BILATONLYMOD50
AAE01318 J     AAE01320
*S1118: }
*S1119: }
*S1120: else biline->BilatOnlyOthMod50+=line->ServiceUnits;/*keep trac
AAE01319 L     R2,80(R12)   BILINE
         L     R3,80(R12)   BILINE
         L     R4,64(R12)   LINE
         L     R5,1048(R3)   BILATONLYOTHMOD50
         A     R5,468(R4)   SERVICEUNITS
         ST    R5,1048(R2)   BILATONLYOTHMOD50
AAE01320 EQU   *
AAE01321 EQU   *
AAE01322 EQU   *
AAE01323 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE01307
*S1122: }
*S1124: }/*first pass at days items to accumulate*/
*S1126: /*
*S1127:     * we have accumulated the distinct hcpcs that are cond or
*S1128:     * we can go back through and check to see for this hcpcs c
*S1129:     * total rolled up units > 1 that have only a 50 and also d
*S1130:     */
* Edit 74 - Units Greater Than One for Bilateral Procedure Billed with
*S1132: loop( biline:=firstBilat; biline; biline:=biline->nextCondIndB
AAE01324 MVC   80(4,R12),72(R12)   FIRSTBILAT
AAE01325 L     R15,80(R12)   BILINE
         LTR   R15,R15
         JE    AAE01333
*S1133: if( 0 < biline->BilatOnlyMod50
         L     R2,80(R12)   BILINE
         L     R3,1044(R2)   BILATONLYMOD50
         LTR   R3,R3
         JNH   AAE01331
         L     R4,80(R12)   BILINE
         L     R5,80(R12)   BILINE
         L     R6,1036(R4)   BILATNOMODS
         A     R6,1044(R5)   BILATONLYMOD50
         CHI   R6,1
         JNH   AAE01331
*S1134: and ( biline->BilatNoMods+biline->BilatOnlyMod50 )>1 ) then {
*S1135: /*for this bilateral hcpcs, go back through and edit the lines
*S1136: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,68(R12)   DAY
         MVC   64(4,R12),8(R2)   FIRSTDAYSITEMS
AAE01326 L     R15,64(R12)   LINE
         LTR   R15,R15
         JE    AAE01330
*S1137: if( line->Hcpcs=biline->Hcpcs
         L     R2,64(R12)   LINE
         L     R3,80(R12)   BILINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAE01328
         L     R5,64(R12)   LINE
         L     R6,80(R12)   BILINE
         L     R7,464(R5)   REVENUECODE
         C     R7,464(R6)   REVENUECODE
         JNE   AAE01328
         L     R2,64(R12)   LINE
         TM    1084(R2),2   BILATONLYMOD50
         JNE   AAE01327
         L     R3,64(R12)   LINE
         L     R4,1032(R3)   MODCOUNT
         LTR   R4,R4
         JNE   AAE01328
*S1138: and line->RevenueCode=biline->RevenueCode
*S1139: and ( line->Bits->BilatOnlyMod50 or line->ModCount=0 ) ) then
*S1140: do GAPC.SetEdit( Edit->Modif50BilatUnits, line, base->NoDxp, b
AAE01327 MVC   84(4,R12),4(R11)   74
         LA    R14,84(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   88(4,R12),8(R11)   2
         LA    R14,88(R12)
         ST    R14,80(R13)
         XC    92(4,R12),92(R12)
         LA    R14,92(R12)
         ST    R14,84(R13)
         L     R15,12(R11)   GAPCC091
         BASR  R14,R15
AAE01328 EQU   *
AAE01329 L     R2,64(R12)   LINE
         MVC   64(4,R12),0(R2)   NEXTSAMEDAY
         J     AAE01326
AAE01330 EQU   *
AAE01331 EQU   *
AAE01332 L     R2,80(R12)   BILINE
         MVC   80(4,R12),12(R2)   NEXTCONDINDBI
         J     AAE01325
AAE01333 EQU   *
AAE01334 L     R2,68(R12)   DAY
         MVC   68(4,R12),0(R2)   NEXTVISIT
         J     AAE01306
AAE01335 EQU   *
AAE01336 EQU   *
AAE01337 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:36 2020
*^ IDENTS - GAPCC AAF
**************************
*    GAPCC071
**************************
GAPCC071 CSECT
GAPCC071 AMODE ANY
GAPCC071 RMODE ANY
*XREF - GAPCC071 GAPC.findDx
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> reference to Struct len 148 (dxp)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAF00103
         DC    A(DMNATFD) @00000
         DC    F'1' @00004
         DC    H'6'  0 6 @00008
         DC    H'148'  0 148 @00010
AAF00103 XC    68(4,R12),68(R12)
*S130: if( base->currentDx=0 ) then {
         L     R2,1920(R9)   CURRENTDX
         LTR   R2,R2
         JNE   AAF00111
*S131: loop( dx:=base->dx->first; dx and (dxp:=&dx->Dx, dxp); dx+=1 )
         L     R3,12(R9)   DX
         ST    R3,0(R9)   DX
AAF00106 L     R15,0(R9)   DX
         LTR   R15,R15
         JE    AAF00110
         MVC   60(4,R13),0(R9)   DX
         MVC   64(2,R13),8(R11)   6
         MVC   66(2,R13),10(R11)   148
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   DXP
         LTR   R2,R2   DX
         JE    AAF00110
*S132: if( occurrence=dxp->occurrence ) then {
         L     R2,68(R12)   DXP
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,0(R2)   OCCURRENCE
         JNE   AAF00107
*S133: base->curdx:=dx;
         MVC   44(4,R9),0(R9)   DX
*S134: base->curDx:=dxp;
         MVC   52(4,R9),68(R12)   DXP
*S135: base->currentDx:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1920(R9)   CURRENTDX
*S136: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00126
AAF00107 EQU   *
AAF00108 L     R2,0(R9)   DX
         LTR   R2,R2
         JE    AAF00109
         L     R2,8(R2)
AAF00109 ST    R2,0(R9)   DX
         J     AAF00106
AAF00110 J     AAF00125
*S137: }
*S138: }
*S139: }
*S140: else if( occurrence<base->currentDx ) then {
AAF00111 L     R2,64(R12)   OCCURRENCE
         L     R3,0(R2)   OCCURRENCE
         C     R3,1920(R9)   CURRENTDX
         JNL   AAF00118
*S141: loop( dx:=base->curdx-1; dx and (dxp:=&dx->Dx, dxp); dx-=1 ){
         L     R4,44(R9)   CURDX
         LTR   R4,R4
         JE    AAF00112
         L     R4,12(R4)
AAF00112 ST    R4,0(R9)   DX
AAF00113 L     R15,0(R9)   DX
         LTR   R15,R15
         JE    AAF00117
         MVC   60(4,R13),0(R9)   DX
         MVC   64(2,R13),8(R11)   6
         MVC   66(2,R13),10(R11)   148
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   DXP
         LTR   R2,R2   DX
         JE    AAF00117
*S142: if( occurrence = dxp->occurrence ) then {
         L     R2,68(R12)   DXP
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,0(R2)   OCCURRENCE
         JNE   AAF00114
*S143: base->curdx:=dx;
         MVC   44(4,R9),0(R9)   DX
*S144: base->curDx:=dxp;
         MVC   52(4,R9),68(R12)   DXP
*S145: base->currentDx:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1920(R9)   CURRENTDX
*S146: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00126
AAF00114 EQU   *
AAF00115 L     R2,0(R9)   DX
         LTR   R2,R2
         JE    AAF00116
         L     R2,12(R2)
AAF00116 ST    R2,0(R9)   DX
         J     AAF00113
AAF00117 J     AAF00124
*S147: }
*S148: }
*S149: }
*S150: else {
*S151: loop( dx:=base->curdx; dx and (dxp:=&dx->Dx, dxp); dx+=1 ){
AAF00118 MVC   0(4,R9),44(R9)   CURDX
AAF00119 L     R15,0(R9)   DX
         LTR   R15,R15
         JE    AAF00123
         MVC   60(4,R13),0(R9)   DX
         MVC   64(2,R13),8(R11)   6
         MVC   66(2,R13),10(R11)   148
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   DXP
         LTR   R2,R2   DX
         JE    AAF00123
*S152: if( occurrence = dxp->occurrence ) then {
         L     R2,68(R12)   DXP
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,0(R2)   OCCURRENCE
         JNE   AAF00120
*S153: base->curdx:=dx;
         MVC   44(4,R9),0(R9)   DX
*S154: base->curDx:=dxp;
         MVC   52(4,R9),68(R12)   DXP
*S155: base->currentDx:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1920(R9)   CURRENTDX
*S156: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00126
AAF00120 EQU   *
AAF00121 L     R2,0(R9)   DX
         LTR   R2,R2
         JE    AAF00122
         L     R2,8(R2)
AAF00122 ST    R2,0(R9)   DX
         J     AAF00119
*S157: }
*S158: }
*S159: }
*S177: base->currentDx:=0;
AAF00123 EQU   *
AAF00124 EQU   *
AAF00125 XC    1920(4,R9),1920(R9)   CURRENTDX
*S178: return 1;
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
AAF00126 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC072
**************************
GAPCC072 CSECT
GAPCC072 AMODE ANY
GAPCC072 RMODE ANY
*XREF - GAPCC072 GAPC.findLine
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAF00203
         DC    A(DMNATFD) @00000
         DC    F'1' @00004
         DC    H'10'  0 10 @00008
         DC    H'1120'  4 96 @00010
AAF00203 XC    68(4,R12),68(R12)
*S186: if( base->currentLine=0 ) then {
         L     R2,1924(R9)   CURRENTLINE
         LTR   R2,R2
         JNE   AAF00211
*S187: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAF00206 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAF00210
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),8(R11)   10
         MVC   66(2,R13),10(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAF00210
*S188: if( occurrence=line->LineNo ) then {
         L     R2,68(R12)   LINE
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,460(R2)   LINENO
         JNE   AAF00207
*S189: base->curline:=item;
         MVC   48(4,R9),4(R9)   ITEM
*S190: base->curLine:=line;
         MVC   56(4,R9),68(R12)   LINE
*S191: base->currentLine:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1924(R9)   CURRENTLINE
*S192: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00226
AAF00207 EQU   *
AAF00208 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAF00209
         L     R2,8(R2)
AAF00209 ST    R2,4(R9)   ITEM
         J     AAF00206
AAF00210 J     AAF00225
*S193: }
*S194: }
*S195: }
*S196: else if( occurrence<base->currentLine ) then {
AAF00211 L     R2,64(R12)   OCCURRENCE
         L     R3,0(R2)   OCCURRENCE
         C     R3,1924(R9)   CURRENTLINE
         JNL   AAF00218
*S197: loop( item:=base->curline-1; item and (line:=&item->line, line)
         L     R4,48(R9)   CURLINE
         LTR   R4,R4
         JE    AAF00212
         L     R4,12(R4)
AAF00212 ST    R4,4(R9)   ITEM
AAF00213 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAF00217
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),8(R11)   10
         MVC   66(2,R13),10(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAF00217
*S198: if( occurrence=line->LineNo ) then {
         L     R2,68(R12)   LINE
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,460(R2)   LINENO
         JNE   AAF00214
*S199: base->curline:=item;
         MVC   48(4,R9),4(R9)   ITEM
*S200: base->curLine:=line;
         MVC   56(4,R9),68(R12)   LINE
*S201: base->currentLine:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1924(R9)   CURRENTLINE
*S202: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00226
AAF00214 EQU   *
AAF00215 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAF00216
         L     R2,12(R2)
AAF00216 ST    R2,4(R9)   ITEM
         J     AAF00213
AAF00217 J     AAF00224
*S203: }
*S204: }
*S205: }
*S206: else{
*S207: loop( item:=base->curline; item and (line:=&item->line, line);
AAF00218 MVC   4(4,R9),48(R9)   CURLINE
AAF00219 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAF00223
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),8(R11)   10
         MVC   66(2,R13),10(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,68(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAF00223
*S208: if( occurrence=line->LineNo ) then {
         L     R2,68(R12)   LINE
         L     R3,64(R12)   OCCURRENCE
         L     R4,0(R3)   OCCURRENCE
         C     R4,460(R2)   LINENO
         JNE   AAF00220
*S209: base->curline:=item;
         MVC   48(4,R9),4(R9)   ITEM
*S210: base->curLine:=line;
         MVC   56(4,R9),68(R12)   LINE
*S211: base->currentLine:=occurrence;
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,1924(R9)   CURRENTLINE
*S212: return 0;
         L     R7,60(R12)
         XC    0(4,R7),0(R7)
         J     AAF00226
AAF00220 EQU   *
AAF00221 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAF00222
         L     R2,8(R2)
AAF00222 ST    R2,4(R9)   ITEM
         J     AAF00219
*S213: }
*S214: }
*S215: }
*S232: base->currentLine:=0;
AAF00223 EQU   *
AAF00224 EQU   *
AAF00225 XC    1924(4,R9),1924(R9)   CURRENTLINE
*S233: return 1;
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
AAF00226 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAG
**************************
*    GAPCC073
**************************
GAPCC073 CSECT
GAPCC073 AMODE ANY
GAPCC073 RMODE ANY
*XREF - GAPCC073 GAPC.initializeLineItem
*  R11 + 0000 Literals        (156 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (56 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> String (tstr)
*        0088(R12)-> Integer len 4 (validDateCount)
*        0092(R12)-> Void ()
*        0104(R12)-> String ()
*        0116(R12)-> Unknown ()
*        0116(R12)-> Void ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00103
         DC    A(DMNATFD) @00000
         DC    A(DMNLONG) @00004
         DC    F'1' @00008
         DC    A(DMNGDATX) @00012
         DC    F'2' @00016
         DC    A(DMNSCPY) @00020
         DC    F'3' @00024
         DC    A(DMNTRMR) @00028
         DC    A(DMNSLOG) @00032
         DC    F'7' @00036
         DC    A(DMNSUBS) @00040
         DC    A(DMNSCMP) @00044
         DC    A(DMNSLAM) @00048
         DC    A(DMNS2I) @00052
         DC    X'FFFFFFFF' @00056
         DC    A(GAPCC075) @00060
         DC    A(GAPCC076) @00064
         DC    F'9' @00068
         DC    A(GAPCC077) @00072
         DC    A(GAPCC118) @00076
         DC    A(GAPCC088) @00080
         DC    A(DMNFREE) @00084
         DC    H'10'  0 10 @00088
         DC    H'1120'  4 96 @00090
         DC    H'1'  0 1 @00092
         DC    H'2'  0 2 @00094
         DC    H'5'  0 5 @00096
         DC    H'9'  0 9 @00098
         DC    H'6'  0 6 @00100
         DC    CL1'W' @00102
         DC    CL2'00' @00103
         DC    CL5'00000' @00105
         DC    CL1' ' @00110
         DC    CL1'.' @00111
         DC    CL9'000000001' @00112
         DC    CL6'      ' @00121
         DC    CL1'N' @00127
         DC    CL1'E' @00128
         DC    CL2'E1' @00129
         DC    CL1'B' @00131
         DC    CL1'F' @00132
         DC    CL1'4' @00133
         DC    CL1'Z' @00134
         DC    CL1'3' @00135
         DC    CL2'13' @00136
         DC    CL2'76' @00138
         DC    CL2'J2' @00140
         DC    CL5'G0463' @00142
         DC    CL2'14' @00147
         DC    CL2'12' @00149
         DC    CL1'2' @00151
         DC    CL1'0' @00152
AAG00103 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(12,R12),72(R12)
         ST    R2,84(R12)
         XC    88(24,R12),88(R12)
         ST    R2,112(R12)
         XC    116(12,R12),116(R12)
* Lookup HCPCS codes - check line dates
* Edits (NONE)
*S21: base->LowestDate :=base->ThruDate;/* actual claims will set this
         L     R2,104(R9)   THRUDATE
         ST    R2,108(R9)   LOWESTDATE
*S22: base->HighestDate :=base->FromDate;/* actual claims will set thi
         L     R3,96(R9)   FROMDATE
         ST    R3,112(R9)   HIGHESTDATE
*S24: loop( item:=base->lines->first; item and (line:=&item->line, lin
         L     R4,28(R9)   LINES
         ST    R4,4(R9)   ITEM
AAG00106 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00139
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),88(R11)   10
         MVC   66(2,R13),90(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00139
* ADJUST LOWEST/HIGHEST SERVICE DATES
*S27: if( line->ServiceDate>=base->FromDate
         L     R2,72(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,96(R9)   FROMDATE
         JL    AAG00109
         L     R4,72(R12)   LINE
         L     R5,60(R4)   SERVICEDATE
         CL    R5,104(R9)   THRUDATE
         JH    AAG00109
*S28: and line->ServiceDate<=base->ThruDate ) then {
*S30: validDateCount+=1;
         LHI   R2,1
         A     R2,88(R12)   VALIDDATECOUNT
         ST    R2,88(R12)   VALIDDATECOUNT
*S31: if( line->ServiceDate < base->LowestDate ) then {
         L     R3,72(R12)   LINE
         L     R4,60(R3)   SERVICEDATE
         CL    R4,108(R9)   LOWESTDATE
         JNL   AAG00107
*S32: base->LowestDate:=line->ServiceDate;
         L     R5,72(R12)   LINE
         L     R6,60(R5)   SERVICEDATE
         ST    R6,108(R9)   LOWESTDATE
*S33: }
*S34: if( line->ServiceDate > base->HighestDate ) then {
AAG00107 L     R2,72(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,112(R9)   HIGHESTDATE
         JNH   AAG00108
*S35: base->HighestDate:=line->ServiceDate;
         L     R4,72(R12)   LINE
         L     R5,60(R4)   SERVICEDATE
         ST    R5,112(R9)   HIGHESTDATE
*S36: }
*S38: }
*S51: line->month :=gdate(line->ServiceDate ,1);/*V4.x*/
AAG00108 EQU   *
AAG00109 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   60(4,R13),8(R11)   1
         L     R15,12(R11)   DMNGDATX
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,452(R2)   MONTH
*S52: line->day :=gdate(line->ServiceDate ,2);/*V4.x*/
         L     R5,72(R12)   LINE
         L     R6,72(R12)   LINE
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R6)   SERVICEDATE
         L     R15,4(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         STD   F2,64(R13)
         MVC   60(4,R13),16(R11)   2
         L     R15,12(R11)   DMNGDATX
         BASR  R14,R15
         L     R7,60(R13)
         ST    R7,456(R5)   DAY
* INITIALIZE DEFAULT LINE VALUES
*S55: line->StatusIndicator :="W";/*V5.0 defaults if a)HCPCS not found
         L     R8,72(R12)   LINE
         LA    R14,180(R8)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)   W
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S56: line->PaymentIndicator :=3;/*V5.0*/
         L     R2,72(R12)   LINE
         MVC   204(4,R2),24(R11)   3
*S57: line->DiscountingFactor :=1;
         L     R3,72(R12)   LINE
         MVC   536(4,R3),8(R11)   1
*S58: line->CompAdjFlag :="00";/*initialize CAF string flag to zeros*/
         L     R4,72(R12)   LINE
         LA    R14,272(R4)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,103(R11)   00
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S60: line->APC :="00000";%CAN'T BE NULL ANYMORE
         L     R5,72(R12)   LINE
         LA    R14,484(R5)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S61: line->PaymentApc:="00000";%CAN'T BE NULL ANYMORE
         L     R6,72(R12)   LINE
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S62: line->HcpcsApc :="00000";%CAN'T BE NULL ANYMORE
         L     R7,72(R12)   LINE
         LA    R14,500(R7)   HCPCSAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
* LOAD LINE CHARGE INFORMATION
*S65: tstr:=line->LineChargesInput;
         L     R8,72(R12)   LINE
         LA    R14,76(R12)   TSTR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,220(R8)   LINECHARGESINPUT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S66: StrTrimRight( tstr, " " );
         LA    R14,76(R12)   TSTR
         ST    R14,60(R13)
         LA    R14,110(R11)
         ST    R14,92(R12)
         MVC   96(2,R12),92(R11)   1
         MVC   98(2,R12),92(R11)   1
         XC    100(4,R12),100(R12)
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R15,28(R11)   DMNTRMR
         BASR  R14,R15
*S67: if( tstr ) then {
         LA    R14,76(R12)   TSTR
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,32(R11)   DMNSLOG
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG00112
* ONLY STRIP THE DECIMAL IF LOCATED AT POSITION 8  - FUNCTION IS 0 BAS
*S70: if( StrPartial( tstr, 7, 1 )="." ) then {
         LA    R14,104(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,76(R12)   TSTR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),36(R11)   7
         MVC   76(4,R13),8(R11)   1
         L     R15,40(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,104(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,111(R11)   .
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00110
*S71: StrSlam( tstr, 7, 1 );
         LA    R14,76(R12)   TSTR
         ST    R14,60(R13)
         MVC   64(4,R13),36(R11)   7
         MVC   68(4,R13),8(R11)   1
         L     R15,48(R11)   DMNSLAM
         BASR  R14,R15
*S72: }
*S74: line->LineCharges:=tstr;
AAG00110 L     R2,72(R12)   LINE
         LA    R14,76(R12)   TSTR
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,52(R11)   DMNS2I
         BASR  R14,R15
         L     R3,60(R13)
         ST    R3,564(R2)   LINECHARGES
*S75: if( LastError ) then {
         L     R15,144(R10)   LASTERROR
         LTR   R15,R15
         JE    AAG00111
*S76: line->LineCharges:=-1;/*not a valid charge, legacy compatible*/
         L     R4,72(R12)   LINE
         MVC   564(4,R4),56(R11)   -1
*S77: reset LastError;
         XC    144(4,R10),144(R10)
AAG00111 J     AAG00113
*S78: }
*S80: }
*S81: else line->LineCharges:=0;/*only for legacy compatibility, blank
AAG00112 L     R2,72(R12)   LINE
         XC    564(4,R2),564(R2)   LINECHARGES
* SET DEFAULT SERVICE UNIT VALUE
*S84: /*spec says all blanks default to 1, so interfaces must send in
*S85: if( line->ServiceUnits=0 ) then {
AAG00113 L     R2,72(R12)   LINE
         L     R3,468(R2)   SERVICEUNITS
         LTR   R3,R3
         JNE   AAG00114
*S86: line->ServiceUnits :=1;/*orig integer value with default for edi
         L     R4,72(R12)   LINE
         MVC   468(4,R4),8(R11)   1
*S87: line->ServiceUnitsPay :=1;/*6.0 - to hold manipulated units for
         L     R5,72(R12)   LINE
         MVC   568(4,R5),8(R11)   1
*S88: line->ServiceUnitsInput :="000000001";%test workaround-output
         L     R6,72(R12)   LINE
         LA    R14,232(R6)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,112(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),98(R11)   9
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S89: }
* LOAD LINE REVENUE CENTER INFORMATION
*S92: do GAPC.LoadRevenueCode( line );
AAG00114 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,60(R11)   GAPCC075
         BASR  R14,R15
* LOAD LINE PROCEDURE INFORMATION
*S95: if( line->Hcpcs > "      " ) then {
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,121(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),100(R11)   6
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNH   AAG00115
*S96: do GAPC.LoadHcpcs( line );
         LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,64(R11)   GAPCC076
         BASR  R14,R15
         J     AAG00127
*S97: }
*S98: else {
* Blank HCPCS with some revenue codes get N/9, E/3 or B/3,or F/2
*S101: line->Bits->BlankHcpcs:=1;
AAG00115 L     R2,72(R12)   LINE
         OI    1076(R2),64   BLANKHCPCS
*S111: if( line->Bits->BlankHcpcsOK_N ) then {% V1.1
         L     R3,72(R12)   LINE
         TM    1076(R3),32   BLANKHCPCSOK_N
         JE    AAG00116
*S112: line->StatusIndicator :="N";
         L     R4,72(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,127(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S113: line->PaymentIndicator :=9;
         L     R5,72(R12)   LINE
         MVC   204(4,R5),68(R11)   9
*S114: line->PackagingFlag :=1;
         L     R6,72(R12)   LINE
         MVC   540(4,R6),8(R11)   1
*S115: claim->Bits->HadValidProc :=1;% V2.0 retro (for Edit 27 test)
         OI    3002(R9),32   HADVALIDPROC
         J     AAG00126
*S116: }
*S117: else if( line->Bits->BlankHcpcsOK_E ) then {% V1.1
AAG00116 L     R2,72(R12)   LINE
         TM    1076(R2),16   BLANKHCPCSOK_E
         JE    AAG00119
*S118: line->StatusIndicator := ( 65 < base->Version )? "E1" : "E";% V
         L     R3,72(R12)   LINE
         L     R4,1868(R9)   VERSION
         CHI   R4,65
         JH    AAG00117
         LA    R14,128(R11)   E
         ST    R14,92(R12)   E
         MVC   96(2,R12),92(R11)   1
         MVC   98(2,R12),92(R11)   1
         XC    100(4,R12),100(R12)   E
         LA    R2,92(R12)   E
         J     AAG00118
AAG00117 LA    R14,129(R11)   E1
         ST    R14,116(R12)   E1
         MVC   120(2,R12),94(R11)   2
         MVC   122(2,R12),94(R11)   2
         XC    124(4,R12),124(R12)   E1
         LA    R2,116(R12)   E1
AAG00118 LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S119: line->PaymentIndicator :=3;
         L     R4,72(R12)   LINE
         MVC   204(4,R4),24(R11)   3
*S120: line->PackagingFlag :=0;
         L     R5,72(R12)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
         J     AAG00125
*S121: }
*S122: else if( line->Bits->BlankHcpcsOK_B ) then {% V2.0
AAG00119 L     R2,72(R12)   LINE
         TM    1076(R2),8   BLANKHCPCSOK_B
         JE    AAG00120
*S123: line->StatusIndicator :="B";
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,131(R11)   B
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S124: line->PaymentIndicator :=3;
         L     R4,72(R12)   LINE
         MVC   204(4,R4),24(R11)   3
*S125: line->PackagingFlag :=0;
         L     R5,72(R12)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
         J     AAG00124
*S126: }
*S127: else if( line->Bits->BlankHcpcsOK_F ) then {% V4.1
AAG00120 L     R2,72(R12)   LINE
         TM    1076(R2),4   BLANKHCPCSOK_F
         JE    AAG00121
*S128: line->StatusIndicator :="F";
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,132(R11)   F
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S129: line->PaymentIndicator :="4";
         L     R4,72(R12)   LINE
         LA    R14,133(R11)   4
         ST    R14,60(R13)
         MVC   64(4,R13),8(R11)   1
         L     R15,52(R11)   DMNS2I
         BASR  R14,R15
         L     R5,60(R13)
         ST    R5,204(R4)   PAYMENTINDICATOR
*S130: line->PackagingFlag :=0;
         L     R6,72(R12)   LINE
         XC    540(4,R6),540(R6)   PACKAGINGFLAG
         J     AAG00123
*S131: }
*S132: else if( line->Bits->FoundRevenue ) then {% V5.0
AAG00121 L     R2,72(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAG00122
*S133: /*V5.0 line is blank, rev is valid, and N/E/B/F not assigned; d
*S134: line->StatusIndicator :="Z";
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,134(R11)   Z
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S135: line->PaymentIndicator :="3";% V5.0
         L     R4,72(R12)   LINE
         LA    R14,135(R11)   3
         ST    R14,60(R13)
         MVC   64(4,R13),8(R11)   1
         L     R15,52(R11)   DMNS2I
         BASR  R14,R15
         L     R5,60(R13)
         ST    R5,204(R4)   PAYMENTINDICATOR
*S136: }
*S137: /*default else to this is the default W of invalid revenue code
*S139: }
* LOAD LINE MODIFIERS INFORMATION
*S142: do GAPC.LoadModifiers( line );
AAG00122 EQU   *
AAG00123 EQU   *
AAG00124 EQU   *
AAG00125 EQU   *
AAG00126 EQU   *
AAG00127 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,72(R11)   GAPCC077
         BASR  R14,R15
*S145: if( 65 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAG00129
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,136(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00128
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,138(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00129
AAG00128 L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,140(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00129
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,142(R11)   G0463
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00129
*S146: and ( base->BillType="13" or base->BillType="76" )
*S147: and line->StatusIndicator="J2"
*S148: and line->Hcpcs<>"G0463" ) then {
*S149: line->Bits->Section603E101Candidate:=1;
         L     R2,72(R12)   LINE
         OI    1085(R2),1   SECTION603E101CANDIDATE
*S150: }
* V15.0.0 SET LAB SERVICES TO SI=A FOR BILLTYPE 14X
* V15.2.0 SET LAB SERVICES TO SI=A FOR BILLTYPE 13X WITH MODIFIER L1,
*S155: if( base->Version < 62% V17.0, 2016-01-01, DEACTIVATED AND RE-I
AAG00129 L     R2,1868(R9)   VERSION
         CHI   R2,62
         JNL   AAG00133
         L     R3,1868(R9)   VERSION
         CHI   R3,53
         JNH   AAG00133
         L     R2,72(R12)   LINE
         TM    1095(R2),2   LABSERVICE
         JE    AAG00133
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,127(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00133
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,147(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG00132
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,136(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00130
         L     R4,72(R12)   LINE
         TM    1078(R4),4   HASL1MODIFIER
         JNE   AAG00132
AAG00130 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,149(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),94(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG00131
         TM    3001(R9),16   HASCCW2
         JE    AAG00132
AAG00131 J     AAG00133
*S156: and base->Version > 53
*S157: and line->flags->LabService
*S158: and line->StatusIndicator="N"
*S159: and ( base->BillType="14"
*S160: or ( base->BillType="13" and line->Bits->HasL1Modifier )
*S162: or ( base->BillType="12" and not claim->Bits->HasCcW2 )
*S164: ) ) then {
*S165: do GAPC.SetSeparatelyPayable( line );
AAG00132 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,76(R11)   GAPCC118
         BASR  R14,R15
*S166: }
* SET SERVICE INDICATOR FLAGS FOR PAYMENT METHOD FLAG PROCESSING
*S169: do GAPC.PrepPaymentMethodFlags( line );% V8.0 isolated to a com
AAG00133 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,80(R11)   GAPCC088
         BASR  R14,R15
* IF ACTION FLAG VALUE IS BETWEEN 2 AND 4, ADJUST THE APC AND, IF APPL
* MARK THE LINE TO BE IGNORED FOR ALL EDITTING OCCURRING AFTER THIS LO
*S173: if( line->ActionFlag>="2"
         L     R2,72(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,151(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JL    AAG00136
         L     R4,72(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,133(R11)   4
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JH    AAG00136
*S174: and line->ActionFlag<="4" ) then {
*S175: if( line->ActionFlag="4" ) then {% V3.1 ONLY FOR LIAF VALUE OF
         L     R2,72(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,133(R11)   4
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00134
*S176: line->PayMethFlag :="0";
         L     R4,72(R12)   LINE
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,152(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAG00135
*S177: }
*S178: else {% V3.1 ONLY FOR LIAF VALUE OF 2 OR 3
*S179: line->PaymentApc :="00000";% V2.0 retro
AAG00134 L     R2,72(R12)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S180: line->HcpcsApc :="00000";% V2.0 retro
         L     R3,72(R12)   LINE
         LA    R14,500(R3)   HCPCSAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),96(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S181: line->PayMethFlag :="4";% V2.0 retro
         L     R4,72(R12)   LINE
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,133(R11)   4
         ST    R14,64(R13)
         MVC   70(2,R13),92(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S182: }
*S183: line->Bits->IgnoreLine :=1;% V2.0 retro
AAG00135 L     R2,72(R12)   LINE
         OI    1081(R2),64   IGNORELINE
*S184: line->Bits->IgnoreForObs :=1;% V2.0 retro
         L     R3,72(R12)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S185: base->LinesIgnored +=1;% V2.1 retro correction
         LHI   R4,1
         A     R4,1932(R9)   LINESIGNORED
         ST    R4,1932(R9)   LINESIGNORED
*S186: }
*S187: base->LinesProcessed +=1;% V2.1 retro correction
AAG00136 LHI   R2,1
         A     R2,1928(R9)   LINESPROCESSED
         ST    R2,1928(R9)   LINESPROCESSED
AAG00137 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00138
         L     R2,8(R2)
AAG00138 ST    R2,4(R9)   ITEM
         J     AAG00106
*S189: }
*S191: if( validDateCount<1 ) then {% V13.1
AAG00139 L     R2,88(R12)   VALIDDATECOUNT
         CHI   R2,1
         JNL   AAG00140
* IF NOT REJECTED, DATES WILL BE SET TO FROMDATE
*S193: base->LowestDate :=base->FromDate;
         L     R3,96(R9)   FROMDATE
         ST    R3,108(R9)   LOWESTDATE
*S194: base->HighestDate :=base->FromDate;
         L     R4,96(R9)   FROMDATE
         ST    R4,112(R9)   HIGHESTDATE
AAG00140 EQU   *
AAG00141 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,84(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC074
**************************
GAPCC074 CSECT
GAPCC074 AMODE ANY
GAPCC074 RMODE ANY
*XREF - GAPCC074 GAPC.LoadContractorBypass
*  R11 + 0000 Literals        (68 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (64 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> Integer len 4 (y)
*        0084(R12)-> Integer len 4 (rc)
*        0088(R12)-> Integer len 4 (edit)
*        0092(R12)-> Integer len 4 (isEditValid)
*        0096(R12)-> Integer len 4 (isEditExist)
*        0100(R12)-> Integer len 4 (numOfEditsInTable)
*        0104(R12)-> Integer len 4 (hasLineOutputBypass)
*        0108(R12)-> String ()
*        0120(R12)-> Void ()
*        0132(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 136)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,136  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00203
         DC    A(DMNCNTT) @00000
         DC    F'4' @00004
         DC    A(DMNNEW) @00008
         DC    A(DMNATFD) @00012
         DC    A(DMNSCMP) @00016
         DC    A(DMNSCPY) @00020
         DC    A(DMNTRML) @00024
         DC    A(DMNS2I) @00028
         DC    A(DMNSEL) @00032
         DC    F'1' @00036
         DC    A(GAPCC130) @00040
         DC    F'26' @00044
         DC    A(V40LJMP) @00048
         DC    A(DMNFREE) @00052
         DC    H'10'  0 10 @00056
         DC    H'1120'  4 96 @00058
         DC    H'1'  0 1 @00060
         DC    H'4'  0 4 @00062
         DC    H'7'  0 7 @00064
         DC    CL1'0' @00066
AAG00203 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(44,R12),72(R12)
         ST    R2,116(R12)
         XC    120(16,R12),120(R12)
* V20.1 This frame is the line and edit bypass processing. We have 3 m
* 1) For OPPS, line level output data can be bypassed and replaced wit
* 2) For OPPS, line and claim level edits can be bypassed
* 3) For Non-OPPS only edits can be bypassed
* Count how many claim level edits are valid for the given claim versi
* We need to do this at runtime because claim level edits can be put o
* line so in theory we could process N line x 4 claim edits but are li
* many are in the table. This technically can count out of scoped edit
* but it is better than potentially N x 4 space when N > possible edit
*S214: numOfEditsInTable := #DataEditBypassTbl;
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,60(R13)
         L     R15,0(R11)   DMNCNTT
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,100(R12)   NUMOFEDITSINTABLE
*MAINTAINER NOTE: We cannot make an array of length 0. We check numOfE
* lower on in processing to ensure we're not accessing this array.
*S218: if (numOfEditsInTable > 0) then {
         LTR   R2,R2
         JNH   AAG00207
*S219: claim->BypassEdits := new reference to struct ClaimEditBypassSt
         LR    R3,R9
         AHI   R3,4236
         MVC   60(4,R13),100(R12)   NUMOFEDITSINTABLE
         MVC   64(4,R13),4(R11)   4
         ST    R3,68(R13)
         L     R15,8(R11)   DMNNEW
         BASR  R14,R15
         L     R4,60(R13)
         LR    R5,R4
         L     R6,100(R12)   NUMOFEDITSINTABLE
AAG00206 XC    0(4,R5),0(R5)
         LA    R5,4(R5)
         BRCT  R6,AAG00206
         ST    R4,3008(R9)   BYPASSEDITS
*S220: }
*S222: loop( item:=base->lines->first; item and (line:=&item->line, li
AAG00207 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG00208 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00233
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,12(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00233
* We want to look at any line that doesn't have an action flag. Curren
* range from 0(valid) to 5 so we want to omit 1-5 here.
*S225: if (line->ActionFlag = "0") then {
         L     R2,72(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),60(R11)   1
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00230
*S226: reset hasLineOutputBypass;
         XC    104(4,R12),104(R12)
*MAINTAINER NOTE: Edits are checked first because we need the claim
* and line level edit bypass flags set before we check the other bypas
* There are 4 edits per line of three characters each. We need to chec
* 4 edits on each line. This logic is applicable for OPPS and Non-OPPS
*S231: for(i:=0 until 4-1){
         XC    76(4,R12),76(R12)   I
AAG00209 L     R2,76(R12)   I
         CHI   R2,3
         JH    AAG00228
*S232: reset isEditValid;
         XC    92(4,R12),92(R12)
* Covert the string input to a trimmed integer to compare to our exist
*S235: edit := StrTrimLeftC(line->CBEdits[i],"0");
         L     R3,72(R12)   LINE
         LA    R4,308(R3)   CBEDITS
         L     R5,76(R12)   I
         MHI   R5,12
         AR    R4,R5
         LA    R14,108(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R4,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         LA    R14,108(R12)
         ST    R14,60(R13)
         LA    R14,66(R11)   0
         ST    R14,120(R12)   0
         MVC   124(2,R12),60(R11)   1
         MVC   126(2,R12),60(R11)   1
         XC    128(4,R12),128(R12)   0
         LA    R14,120(R12)   0
         ST    R14,64(R13)
         L     R15,24(R11)   DMNTRML
         BASR  R14,R15
         LA    R14,108(R12)
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,28(R11)   DMNS2I
         BASR  R14,R15
         L     R6,60(R13)
         ST    R6,88(R12)   EDIT
* We need to break on the first 0 as we assume edits are put in
* from left to right with no breaks in between.
*S239: if (edit = 0) then break;
         LTR   R6,R6
         JNE   AAG00210
         J     AAG00228
* Here we manage two sets of bypasses. One for claim level edits and o
* for line level edits. Line level edits are only associated with the
* they are placed on while a claim level edit bypass can be on any lin
* Check the bypass edits against the table for validity. If any valid
* exists we set the line for the flag.
*S246: loop(rc:=select DataEditBypassTbl using byEdit(edit); rc<1; rc:
AAG00210 MVC   60(2,R13),62(R11)   4
         MVC   62(2,R13),60(R11)   1
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         L     R3,88(R12)   EDIT
         STH   R3,0(R2)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAG00211
         L     R5,64(R13)
         LR    R1,R9
         AHI   R1,4228
         MVC   0(5,R1),0(R5)
AAG00211 ST    R4,84(R12)   RC
AAG00212 L     R2,84(R12)   RC
         CHI   R2,1
         JNL   AAG00225
*S247: if(base->Version >= DataEditBypassTbl->LoVersion
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4230
         TM    0(R1),128   LOVERSION
         JE    AAG00213
         LHI   R14,-1
AAG00213 LR    R1,R9
         AHI   R1,4230
         IC    R14,0(R1)   LOVERSION
         CR    R3,R14
         JL    AAG00222
         XR    R4,R4
         LR    R1,R9
         AHI   R1,4231
         TM    0(R1),128   HIVERSION
         JE    AAG00214
         LHI   R4,-1
AAG00214 LR    R1,R9
         AHI   R1,4231
         IC    R4,0(R1)   HIVERSION
         C     R4,1868(R9)   VERSION
         JL    AAG00222
         L     R2,88(R12)   EDIT
         LR    R1,R9
         AHI   R1,4228
         CH    R2,0(R1)   EDIT
         JNE   AAG00222
*S248: and DataEditBypassTbl->HiVersion >= base->Version
*S249: and edit = DataEditBypassTbl->Edit) then {
* The trigger for the output flag of Z is the presence of some valid e
*S252: isEditValid := 1;
         MVC   92(4,R12),36(R11)   1
*S253: line->Bits->isRequiresZPMF := 1;
         L     R2,72(R12)   LINE
         OI    1086(R2),2   ISREQUIRESZPMF
* We have two types of bypass-able edits. Ones that are bypass require
* linebypassrequired edits require that all other bypass fields are in
* not enforced) and the OCE will take all values from these fields and
* value. Non-linebypassrequired edits can just be overridden and the o
* for the line.
*S259: if (DataEditBypassTbl->flags->LineBypassRequired) then {
         LR    R1,R9
         AHI   R1,4232
         TM    0(R1),128   LINEBYPASSREQUIRED
         JE    AAG00215
*S260: hasLineOutputBypass := 1;
         MVC   104(4,R12),36(R11)   1
*S261: line->BypassEdits[do GAPC.findNextEmptyBypass(line->BypassEdits
         L     R3,72(R12)   LINE
         LA    R14,132(R12)
         ST    R14,60(R13)
         L     R4,72(R12)   LINE
         LA    R14,1104(R4)   BYPASSEDITS
         ST    R14,64(R13)
         L     R15,40(R11)   GAPCC130
         BASR  R14,R15
         LA    R5,1104(R3)   BYPASSEDITS
         L     R6,132(R12)
         MHI   R6,4
         AR    R5,R6
         L     R7,88(R12)   EDIT
         ST    R7,0(R5)   BYPASSEDITS
         J     AAG00221
*S262: }
*S263: else {
* For non-linebypassrequired edits we need to add new structs to the a
* need to do it this way because each line can add claim level edits t
* buffer so line over line we don't want to overwrite what we have.
*
* Additionally, we need to check for duplicates even though it doesnt
* the lookup later on in processing. The reason being is that a duplic
* would take up a slot in the bypass array and we could potentially en
* with a case where we wouldn't have enough space to bypass all possib
* NOTE: We need to use this additional pointer because at this point w
* filled up the array yet.
*S274: reset isEditExist;
AAG00215 XC    96(4,R12),96(R12)
*S275: for (y:=0 until claim->LastBypEditIdx-1) {
         XC    80(4,R12),80(R12)   Y
AAG00216 L     R2,3012(R9)   LASTBYPEDITIDX
         AHI   R2,-1
         C     R2,80(R12)   Y
         JL    AAG00219
*S276: if (numOfEditsInTable > 0 and claim->BypassEdits[y]->edit = edi
         L     R3,100(R12)   NUMOFEDITSINTABLE
         LTR   R3,R3
         JNH   AAG00217
         L     R4,3008(R9)   BYPASSEDITS
         L     R5,80(R12)   Y
         MHI   R5,4
         AR    R4,R5
         L     R6,0(R4)   BYPASSEDITS
         L     R7,0(R6)   EDIT
         C     R7,88(R12)   EDIT
         JNE   AAG00217
         MVC   96(4,R12),36(R11)   1
AAG00217 EQU   *
AAG00218 LHI   R2,1
         A     R2,80(R12)   Y
         ST    R2,80(R12)   Y
         J     AAG00216
*S277: }
*S278: if (not isEditExist) then {
AAG00219 L     R15,96(R12)   ISEDITEXIST
         LTR   R15,R15
         JNE   AAG00220
*S279: claim->BypassEdits[claim->LastBypEditIdx] := new struct ClaimEd
         L     R2,3008(R9)   BYPASSEDITS
         L     R3,3012(R9)   LASTBYPEDITIDX
         MHI   R3,4
         AR    R2,R3
         LR    R4,R9
         AHI   R4,4236
         MVC   60(4,R13),36(R11)   1
         MVC   64(4,R13),4(R11)   4
         ST    R4,68(R13)
         L     R15,8(R11)   DMNNEW
         BASR  R14,R15
         L     R5,60(R13)
         XC    0(4,R5),0(R5)
         ST    R5,0(R2)   BYPASSEDITS
*S280: claim->BypassEdits[claim->LastBypEditIdx]->edit := edit;
         L     R6,3008(R9)   BYPASSEDITS
         L     R7,3012(R9)   LASTBYPEDITIDX
         MHI   R7,4
         AR    R6,R7
         L     R8,0(R6)   BYPASSEDITS
         L     R2,88(R12)   EDIT
         ST    R2,0(R8)   EDIT
*S281: claim->LastBypEditIdx += 1;
         LHI   R3,1
         A     R3,3012(R9)   LASTBYPEDITIDX
         ST    R3,3012(R9)   LASTBYPEDITIDX
*S282: }
*S283: }
* Once we've put the edit in the right place we can move on.
*S285: break;
AAG00220 EQU   *
AAG00221 J     AAG00225
AAG00222 EQU   *
AAG00223 MVC   60(2,R13),64(R11)   7
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,64(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG00224
         L     R3,64(R13)
         LR    R1,R9
         AHI   R1,4228
         MVC   0(5,R1),0(R3)
AAG00224 ST    R2,84(R12)   RC
         J     AAG00212
*S286: }
*S287: }
* IF we try bypassing an edit that isn't valid we exit out with a CPF
*S290: if not (isEditValid) then {
AAG00225 L     R15,92(R12)   ISEDITVALID
         LTR   R15,R15
         JNE   AAG00226
*S291: base->OutClm_ClaimFlag := 4;
         MVC   1884(4,R9),4(R11)   4
*S292: { return_code:=Error->RC_InvalidEditBypass; goto exit_now; }
         MVC   3016(4,R9),44(R11)   26
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
AAG00226 EQU   *
AAG00227 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAG00209
*S293: }
*S294: }
* OPPS claims that have valid line level edit bypasses can also have t
* fields bypassed as well. This isBypassOCEOutput is the overarching f
* later on in processing. Non-Opps claims can only bypass edits.
*S299: if (not claim->Bits->Nopps and hasLineOutputBypass) then {
AAG00228 TM    3004(R9),1   NOPPS
         JNE   AAG00229
         L     R15,104(R12)   HASLINEOUTPUTBYPASS
         LTR   R15,R15
         JE    AAG00229
*S300: line->Bits->isBypassOCEOutput := 1;
         L     R2,72(R12)   LINE
         OI    1086(R2),4   ISBYPASSOCEOUTPUT
AAG00229 EQU   *
AAG00230 EQU   *
AAG00231 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00232
         L     R2,8(R2)
AAG00232 ST    R2,4(R9)   ITEM
         J     AAG00208
AAG00233 EQU   *
AAG00234 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,52(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC075
**************************
GAPCC075 CSECT
GAPCC075 AMODE ANY
GAPCC075 RMODE ANY
*XREF - GAPCC075 GAPC.LoadRevenueCode
*  R11 + 0000 Literals        (60 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Local pool      (8 bytes)
*  R12 + 0076 Locals & temps  (32 bytes)
*        0076(R12)-> String (status_indicator)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> Void ()
*        0104(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 112)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,112  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00303
         DC    A(DMNSEL) @00000
         DC    F'1' @00004
         DC    A(DMNZSTR) @00008
         DC    F'2' @00012
         DC    A(DMNSCPYX) @00016
         DC    A(DMNSCPY) @00020
         DC    A(DMNTRML) @00024
         DC    A(DMNTRMR) @00028
         DC    A(DMNSTBL) @00032
         DC    A(DMNSCMP) @00036
         DC    A(DMNFREE) @00040
         DC    H'4'  0 4 @00044
         DC    H'1'  0 1 @00046
         DC    H'6'  0 6 @00048
         DC    H'2'  0 2 @00050
         DC    H'7'  0 7 @00052
         DC    CL1' ' @00054
         DC    CL2'32' @00055
AAG00303 XC    68(8,R12),68(R12)
         LA    R2,68(R12)
         MVC   72(4,R12),44(R10)
         ST    R2,44(R10)
         XC    76(8,R12),76(R12)
         ST    R2,84(R12)
         XC    88(20,R12),88(R12)
* Edits (NONE)
* Set revenue code bits
*S313: if( line->RevenueCode=0 ) then return;/*V2.0 */
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         LTR   R4,R4
         JNE   AAG00306
         J     AAG00372
*S315: loop(
*S316: rc:=select DataValidRevenueTbl using byRevenueCode( line->Reven
AAG00306 MVC   60(2,R13),44(R11)   4
         MVC   62(2,R13),46(R11)   1
         LA    R14,3464(R9)   DATAVALIDREVENUETBL
         ST    R14,64(R13)
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R4,68(R13)
         L     R5,464(R3)   REVENUECODE
         STH   R5,0(R4)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAG00307
         L     R7,64(R13)
         L     R8,68(R13)
         MVC   3472(4,R9),0(R7)
         AHI   R13,80
         ST    R8,60(R13)
         LA    R14,3476(R9)   DATAVALIDREVENUETBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,8(R11)   DMNZSTR
         BASR  R14,R15
         L     R8,60(R13)
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3488(R9)   DATAVALIDREVENUETBL
         ST    R14,60(R13)
         LA    R14,4(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),12(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3500(1,R9),6(R7)
AAG00307 ST    R6,88(R12)   RC
AAG00308 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAG00358
*S317: rc<1;
*S318: rc:=select next DataValidRevenueTbl
*S319: ){
*S320: if( line->RevenueCode=DataValidRevenueTbl->RevenueCode ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R5,464(R4)   REVENUECODE
         CH    R5,3472(R9)   REVENUECODE
         JNE   AAG00355
*S322: if( base->Version < DataValidRevenueTbl->LoVersion
         L     R6,1868(R9)   VERSION
         XR    R14,R14
         TM    3474(R9),128   LOVERSION
         JE    AAG00309
         LHI   R14,-1
AAG00309 IC    R14,3474(R9)   LOVERSION
         CR    R6,R14
         JL    AAG00311
         L     R7,1868(R9)   VERSION
         XR    R14,R14
         TM    3475(R9),128   HIVERSION
         JE    AAG00310
         LHI   R14,-1
AAG00310 IC    R14,3475(R9)   HIVERSION
         CR    R7,R14
         JNH   AAG00312
*S323: or base->Version > DataValidRevenueTbl->HiVersion ) then contin
AAG00311 J     AAG00356
*S325: line->Bits->FoundRevenue :=1;
AAG00312 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1076(R3),2   FOUNDREVENUE
*S326: status_indicator :=DataValidRevenueTbl->StatusIndicator;
         LA    R14,76(R12)   STATUS_INDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3488(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*S332: StrTrimLeft( status_indicator, " " );
         LA    R14,76(R12)   STATUS_INDICATOR
         ST    R14,60(R13)
         LA    R14,54(R11)
         ST    R14,92(R12)
         MVC   96(2,R12),46(R11)   1
         MVC   98(2,R12),46(R11)   1
         XC    100(4,R12),100(R12)
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R15,24(R11)   DMNTRML
         BASR  R14,R15
*S333: StrTrimRight( status_indicator, " " );
         LA    R14,76(R12)   STATUS_INDICATOR
         ST    R14,60(R13)
         LA    R14,54(R11)
         ST    R14,92(R12)
         MVC   96(2,R12),46(R11)   1
         MVC   98(2,R12),46(R11)   1
         XC    100(4,R12),100(R12)
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R15,28(R11)   DMNTRMR
         BASR  R14,R15
*S334: switch( status_indicator ){
         LA    R14,76(R12)   STATUS_INDICATOR
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),48(R11)   6
         MVC   68(2,R13),50(R11)   2
         MVC   70(2,R13),50(R11)   2
         L     R15,32(R11)   DMNSTBL
         BASR  R14,R15
         J     AAG00313
         DC    CL1'N'
         DC    X'00'
         J     AAG00314
         DC    CL1'E'
         DC    X'00'
         J     AAG00315
         DC    CL2'E1'
         J     AAG00316
         DC    CL2'E2'
         J     AAG00317
         DC    CL1'B'
         DC    X'00'
         J     AAG00318
         DC    CL1'F'
         DC    X'00'
         J     AAG00319
*S335: case "N": line->Bits->BlankHcpcsOK_N :=1; break;
AAG00313 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1076(R3),32   BLANKHCPCSOK_N
         J     AAG00319
*S336: case "E":
*S337: case "E1":
*S338: case "E2": line->Bits->BlankHcpcsOK_E :=1; break;
AAG00314 EQU   *
AAG00315 EQU   *
AAG00316 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1076(R3),16   BLANKHCPCSOK_E
         J     AAG00319
*S339: case "B": line->Bits->BlankHcpcsOK_B :=1; break;
AAG00317 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1076(R3),8   BLANKHCPCSOK_B
         J     AAG00319
*S340: case "F": line->Bits->BlankHcpcsOK_F :=1; break;
AAG00318 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1076(R3),4   BLANKHCPCSOK_F
*S341: }
*S342: line->Bits->RevNotRecMcare |=DataValidRevenueTbl->flags->NotRec
AAG00319 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1083(R3),32   REVNOTRECMCARE
         JNE   AAG00320
         XR    R4,R4
         J     AAG00321
AAG00320 LHI   R4,1
AAG00321 EQU   *
AAG00322 TM    3500(R9),128   NOTRECOGNIZED
         JNE   AAG00323
         XR    R5,R5
         J     AAG00324
AAG00323 LHI   R5,1
AAG00324 ST    R5,104(R12)
         O     R4,104(R12)
         LTR   R4,R4
         JNE   AAG00325
         NI    1083(R3),223   REVNOTRECMCARE
         J     AAG00326
AAG00325 OI    1083(R3),32   REVNOTRECMCARE
*S343: line->Bits->HasTherapyRev |=DataValidRevenueTbl->flags->Therapy
AAG00326 L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    1084(R6),128   HASTHERAPYREV
         JNE   AAG00327
         XR    R7,R7
         J     AAG00328
AAG00327 LHI   R7,1
AAG00328 EQU   *
AAG00329 TM    3500(R9),64   THERAPY
         JNE   AAG00330
         XR    R8,R8
         J     AAG00331
AAG00330 LHI   R8,1
AAG00331 ST    R8,104(R12)
         O     R7,104(R12)
         LTR   R7,R7
         JNE   AAG00332
         NI    1084(R6),127   HASTHERAPYREV
         J     AAG00333
AAG00332 OI    1084(R6),128   HASTHERAPYREV
*S344: line->Bits->Byp48 |=DataValidRevenueTbl->flags->BypassE48;%V7.2
AAG00333 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         TM    1084(R2),64   BYP48
         JNE   AAG00334
         XR    R3,R3
         J     AAG00335
AAG00334 LHI   R3,1
AAG00335 EQU   *
AAG00336 TM    3500(R9),32   BYPASSE48
         JNE   AAG00337
         XR    R4,R4
         J     AAG00338
AAG00337 LHI   R4,1
AAG00338 ST    R4,104(R12)
         O     R3,104(R12)
         LTR   R3,R3
         JNE   AAG00339
         NI    1084(R2),191   BYP48
         J     AAG00340
AAG00339 OI    1084(R2),64   BYP48
*S345: line->Bits->NonCoveredRCStatExcl |=DataValidRevenueTbl->flags->
AAG00340 L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         TM    1083(R5),128   NONCOVEREDRCSTATEXCL
         JNE   AAG00341
         XR    R6,R6
         J     AAG00342
AAG00341 LHI   R6,1
AAG00342 EQU   *
AAG00343 TM    3500(R9),16   STATUTORYEXCLUSION
         JNE   AAG00344
         XR    R7,R7
         J     AAG00345
AAG00344 LHI   R7,1
AAG00345 ST    R7,104(R12)
         O     R6,104(R12)
         LTR   R6,R6
         JNE   AAG00346
         NI    1083(R5),127   NONCOVEREDRCSTATEXCL
         J     AAG00347
AAG00346 OI    1083(R5),128   NONCOVEREDRCSTATEXCL
*S346: line->Bits->BundledInBiologicalRC |=DataValidRevenueTbl->flags-
AAG00347 L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         TM    1087(R8),32   BUNDLEDINBIOLOGICALRC
         JNE   AAG00348
         XR    R2,R2
         J     AAG00349
AAG00348 LHI   R2,1
AAG00349 EQU   *
AAG00350 TM    3500(R9),8   BUNDLEDINBIOLOGICAL
         JNE   AAG00351
         XR    R3,R3
         J     AAG00352
AAG00351 LHI   R3,1
AAG00352 ST    R3,104(R12)
         O     R2,104(R12)
         LTR   R2,R2
         JNE   AAG00353
         NI    1087(R8),223   BUNDLEDINBIOLOGICALRC
         J     AAG00354
AAG00353 OI    1087(R8),32   BUNDLEDINBIOLOGICALRC
*S347: }
*S348: break;
AAG00354 EQU   *
AAG00355 J     AAG00358
AAG00356 MVC   60(2,R13),52(R11)   7
         LA    R14,3464(R9)   DATAVALIDREVENUETBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG00357
         L     R3,64(R13)
         L     R4,68(R13)
         MVC   3472(4,R9),0(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3476(R9)   DATAVALIDREVENUETBL
         ST    R14,64(R13)
         MVC   68(4,R13),4(R11)   1
         L     R15,8(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3488(R9)   DATAVALIDREVENUETBL
         ST    R14,60(R13)
         LA    R14,4(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),12(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3500(1,R9),6(R3)
AAG00357 ST    R2,88(R12)   RC
         J     AAG00308
*S349: }
* V20.0 We only want to set corresponding rev code flags if the rev co
* not just in the numeric range. Without this check, edits may be prop
* invalid revenue codes.
*S354: if( line->Bits->FoundRevenue ) then {
AAG00358 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1076(R3),2   FOUNDREVENUE
         JE    AAG00370
* BE WARY OF OVERLAPPING RANGES WHERE MULTIPLE FLAGS WOULD NEED TO BE
* IF THIS HAPPENS, BREAK THE IF-ELSE LADDER TO ASSIGN FLAGS BASED ON T
*S358: if( 379<line->RevenueCode and line->RevenueCode<390 ) then {
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         L     R6,464(R5)   REVENUECODE
         CHI   R6,379
         JNH   AAG00359
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         L     R2,464(R8)   REVENUECODE
         CHI   R2,390
         JNL   AAG00359
*S359: line->Bits->Has38x:=1;% V6.2
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1083(R3),8   HAS38X
         J     AAG00369
*S360: }
*S361: else if( 389<line->RevenueCode and line->RevenueCode<400 ) then
AAG00359 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,389
         JNH   AAG00360
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         L     R7,464(R6)   REVENUECODE
         CHI   R7,400
         JNL   AAG00360
*S362: line->Bits->Has39x:=1;% V6.2
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1083(R3),16   HAS39X
         J     AAG00368
*S363: }
*S364: else if( line->RevenueCode=760 ) then {
AAG00360 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,760
         JNE   AAG00361
*S365: line->Bits->NonCoveredRC:=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1082(R6),1   NONCOVEREDRC
         J     AAG00367
*S366: }
*S367: else if( line->RevenueCode=762 ) then {
AAG00361 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,762
         JNE   AAG00362
*S368: line->Bits->HasRev762:=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1076(R6),1   HASREV762
         J     AAG00366
*S369: }
*S370: else if( 959<line->RevenueCode and line->RevenueCode<990 ) then
AAG00362 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,959
         JNH   AAG00363
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         L     R7,464(R6)   REVENUECODE
         CHI   R7,990
         JNL   AAG00363
*S371: line->Bits->HasProfServiceRC:=1;% V11.0
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1084(R3),1   HASPROFSERVICERC
*S372: claim->Bits->HasProfServiceRC:=1;% V11.0
         OI    3005(R9),8   HASPROFSERVICERC
         J     AAG00365
*S373: }
*S374: else if( 989<line->RevenueCode and line->RevenueCode<1000 ) the
AAG00363 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,464(R3)   REVENUECODE
         CHI   R4,989
         JNH   AAG00364
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         L     R7,464(R6)   REVENUECODE
         CHI   R7,1000
         JNL   AAG00364
*S375: line->Bits->NonCoveredRC:=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1082(R3),1   NONCOVEREDRC
*S376: }
*S378: }
* TODO: DOES REV CODE 23 NEED TO BE A VALID REV CODE? THINK THIS MIGHT
*S381: if( base->BillType="32" and line->RevenueCode=23 ) then {
AAG00364 EQU   *
AAG00365 EQU   *
AAG00366 EQU   *
AAG00367 EQU   *
AAG00368 EQU   *
AAG00369 EQU   *
AAG00370 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   2
         L     R15,36(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG00371
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R5,464(R4)   REVENUECODE
         CHI   R5,23
         JNE   AAG00371
*S382: line->Bits->isHIPPSCode := 1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1086(R3),128   ISHIPPSCODE
AAG00371 EQU   *
AAG00372 EQU   *
AAG00373 LA    R3,68(R12)
         ST    R3,60(R13)
         L     R15,40(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC076
**************************
GAPCC076 CSECT
GAPCC076 AMODE ANY
GAPCC076 RMODE ANY
*XREF - GAPCC076 GAPC.LoadHcpcs
*  R11 + 0000 Literals        (72 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Local pool      (8 bytes)
*  R12 + 0076 Locals & temps  (20 bytes)
*        0076(R12)-> Integer len 4 (rc)
*        0080(R12)-> String ()
*        0092(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00403
         DC    A(DMNSCPY) @00000
         DC    A(DMNSEL) @00004
         DC    F'5' @00008
         DC    A(DMNSCPYX) @00012
         DC    F'1' @00016
         DC    A(DMNZSTR) @00020
         DC    F'2' @00024
         DC    A(DMNSCMP) @00028
         DC    F'0' @00032
         DC    A(DMNSUBS) @00036
         DC    A(GAPCC123) @00040
         DC    A(DMNFREE) @00044
         DC    H'4'  0 4 @00048
         DC    H'1'  0 1 @00050
         DC    H'5'  0 5 @00052
         DC    H'7'  0 7 @00054
         DC    CL5'64569' @00056
         DC    CL5'33249' @00061
         DC    CL1'T' @00066
         DC    CL1'Q' @00067
         DC    CL1'X' @00068
         DC    CL1'C' @00069
         DC    CL1'S' @00070
AAG00403 XC    68(8,R12),68(R12)
         LA    R2,68(R12)
         MVC   72(4,R12),44(R10)
         ST    R2,44(R10)
         XC    76(12,R12),76(R12)
         ST    R2,88(R12)
         XC    92(4,R12),92(R12)
* Look up HCPCS and APC code and copy data into workspace
* Edits (NONE)
*S419: loop( rc:=select DataHcpcsTbl using byHCPCS( line->Hcpcs ); rc<
         MVC   60(2,R13),48(R11)   4
         MVC   62(2,R13),50(R11)   1
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),52(R11)   5
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAG00406
         L     R6,64(R13)
         L     R7,68(R13)
         AHI   R13,80
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R6,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3308(4,R9),5(R6)
         AHI   R13,80
         ST    R7,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   1
         L     R15,20(R11)   DMNZSTR
         BASR  R14,R15
         L     R7,60(R13)
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3336(5,R9),14(R6)
         AHI   R13,80
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   2
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3356(1,R9),21(R6)
         MVC   3358(23,R9),22(R6)
AAG00406 ST    R5,76(R12)   RC
AAG00407 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAG00414
*S420: if( line->Hcpcs<>DataHcpcsTbl->HCPCS ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3296(R9)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG00408
*S421: rc:=1;
         MVC   76(4,R12),16(R11)   1
*S422: break;
         J     AAG00414
*S423: }
*S425: if( base->Version>=DataHcpcsTbl->LoVersion
AAG00408 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3310(R9),128   LOVERSION
         JE    AAG00409
         LHI   R14,-1
AAG00409 IC    R14,3310(R9)   LOVERSION
         CR    R2,R14
         JL    AAG00411
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3311(R9),128   HIVERSION
         JE    AAG00410
         LHI   R14,-1
AAG00410 IC    R14,3311(R9)   HIVERSION
         CR    R3,R14
         JH    AAG00411
*S426: and base->Version<=DataHcpcsTbl->HiVersion ) then {
*S427: break;
         J     AAG00414
AAG00411 EQU   *
AAG00412 MVC   60(2,R13),54(R11)   7
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG00413
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3308(4,R9),5(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   1
         L     R15,20(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3336(5,R9),14(R3)
         AHI   R13,72
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   2
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3356(1,R9),21(R3)
         MVC   3358(23,R9),22(R3)
AAG00413 ST    R2,76(R12)   RC
         J     AAG00407
*S428: }
*S430: }
* LOOK UP HCPCS CODE IN THE HCPCS TABLE AND SAVE IF FOUND
*S433: if( rc=0 ) then {
AAG00414 L     R2,76(R12)   RC
         LTR   R2,R2
         JNE   AAG00558
*S434: line->Bits->FoundHcpcs :=1;
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         OI    1076(R4),128   FOUNDHCPCS
*S435: claim->Bits->HadValidProc :=1;
         OI    3002(R9),32   HADVALIDPROC
*S436: line->flags :=DataHcpcsTbl->flags;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         MVC   1088(12,R6),3369(R9)   FLAGS
*S437: line->Index :=DataHcpcsTbl->Index;
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         LH    R2,3308(R9)   INDEX
         ST    R2,444(R8)   INDEX
*S439: if( not claim->Bits->Nopps ) then {%! OPPS APC USED
         TM    3004(R9),1   NOPPS
         JNE   AAG00415
*S440: line->APC :=DataHcpcsTbl->Apc;
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R14,484(R4)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3324(R9)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S441: line->OriginalAPC :=DataHcpcsTbl->Apc;% V17.1 USED FOR OFFSET L
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,472(R6)   ORIGINALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3324(R9)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S442: }
*S444: if( line->Hcpcs = "64569" ) then {
AAG00415 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   64569
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   5
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00416
*S445: line->Bits->DeviceReqExclusion:=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1087(R6),8   DEVICEREQEXCLUSION
*S446: }
* ASSIGN SERVICE AND PAYMENT INDICATOR
*S449: if( 45 < base->Version
AAG00416 L     R2,1868(R9)   VERSION
         CHI   R2,45
         JNH   AAG00417
         L     R3,1868(R9)   VERSION
         CHI   R3,58
         JNL   AAG00417
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,144(R3)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   33249
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   5
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00417
*S450: and base->Version < 58
*S451: and line->Hcpcs="33249" ) then {
*S452: line->StatusIndicator :="T";%V13.0.0 EFFECTIVE 2012-01-01, ALWA
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S453: line->PaymentIndicator :=1;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   204(4,R5),16(R11)   1
         J     AAG00421
*S454: }
*S455: else{
*S456: line->StatusIndicator :=DataHcpcsTbl->StatusIndicator;
AAG00417 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3344(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S457: line->PaymentIndicator :=DataHcpcsTbl->PaymentIndicator;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         XR    R6,R6
         TM    3356(R9),128   PAYMENTINDICATOR
         JE    AAG00418
         LHI   R6,-1
AAG00418 IC    R6,3356(R9)   PAYMENTINDICATOR
         ST    R6,204(R5)   PAYMENTINDICATOR
* ASSIGN CONDITIONAL VARIABLES IF APPLICABLE
*S460: if( StrPartial( line->StatusIndicator, 0, 1 )="Q"
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         LA    R14,80(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R8)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),32(R11)   0
         MVC   76(4,R13),16(R11)   1
         L     R15,36(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,80(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,67(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG00420
         LA    R14,92(R12)
         ST    R14,60(R13)
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R14,484(R4)   APC
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,40(R11)   GAPCC123
         BASR  R14,R15
         L     R15,92(R12)
         LTR   R15,R15
         JE    AAG00420
*S461: and do GAPC.findApcData( line->APC, base->Version ) ) then {
*S462: line->ConditionalAPC :=line->APC;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,1012(R3)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,484(R5)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S463: line->ConditionalSI :=DataApcTbl->StatusIndicator;
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         LA    R14,256(R7)   CONDITIONALSI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3100(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S464: line->ConditionalPI :=DataApcTbl->PaymentIndicator;
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         XR    R3,R3
         TM    3112(R9),128   PAYMENTINDICATOR
         JE    AAG00419
         LHI   R3,-1
AAG00419 IC    R3,3112(R9)   PAYMENTINDICATOR
         ST    R3,268(R2)   CONDITIONALPI
*S465: line->ConditionalApcPayment :=DataApcTbl->ApcPayment;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         L     R6,3116(R9)   APCPAYMENT
         ST    R6,1024(R5)   CONDITIONALAPCPAYMENT
*S466: }
*S467: }
*S469: line->Duration :=DataHcpcsTbl->PhDuration;
AAG00420 EQU   *
AAG00421 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         XR    R4,R4
         TM    3368(R9),128   PHDURATION
         JE    AAG00422
         LHI   R4,-1
AAG00422 IC    R4,3368(R9)   PHDURATION
         ST    R4,1056(R3)   DURATION
*S470: line->OriginalSI :=DataHcpcsTbl->StatusIndicator;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,192(R6)   ORIGINALSI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3344(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S471: line->ApprovalDt :=DataHcpcsTbl->DateApproved;%V5.2
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         L     R2,3360(R9)   DATEAPPROVED
         ST    R2,64(R8)   APPROVALDT
*S472: line->ApprovalDtEdit :=DataHcpcsTbl->MidQuarterDateEdit;%V6.0
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LH    R5,3358(R9)   MIDQUARTERDATEEDIT
         ST    R5,524(R4)   APPROVALDTEDIT
*S473: line->TerminationDt :=DataHcpcsTbl->DateTerminated;%V6.0
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         L     R8,3364(R9)   DATETERMINATED
         ST    R8,68(R7)   TERMINATIONDT
*S474: line->LoAge :=DataHcpcsTbl->LoAge;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LH    R4,3336(R9)   LOAGE
         ST    R4,552(R3)   LOAGE
*S475: line->HiAge :=DataHcpcsTbl->HiAge;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LH    R7,3338(R9)   HIAGE
         ST    R7,556(R6)   HIAGE
*S476: line->validSex :=DataHcpcsTbl->Sex;
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         XR    R3,R3
         TM    3340(R9),128   SEX
         JE    AAG00423
         LHI   R3,-1
AAG00423 IC    R3,3340(R9)   SEX
         ST    R3,560(R2)   VALIDSEX
*S478: /*V7.2 moved si checks below*/
*S479: line->Bits->QualifiesForDiscount |=DataHcpcsTbl->flags->Bilater
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         TM    1080(R5),1   QUALIFIESFORDISCOUNT
         JNE   AAG00424
         XR    R6,R6
         J     AAG00425
AAG00424 LHI   R6,1
AAG00425 EQU   *
AAG00426 TM    3369(R9),4   BILATERALCONDITIONAL
         JNE   AAG00427
         XR    R7,R7
         J     AAG00428
AAG00427 LHI   R7,1
AAG00428 ST    R7,92(R12)
         O     R6,92(R12)
         LTR   R6,R6
         JNE   AAG00429
         NI    1080(R5),254   QUALIFIESFORDISCOUNT
         J     AAG00430
AAG00429 OI    1080(R5),1   QUALIFIESFORDISCOUNT
*S480: line->Bits->QualifiesForDiscount |=DataHcpcsTbl->flags->Bilater
AAG00430 L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         TM    1080(R8),1   QUALIFIESFORDISCOUNT
         JNE   AAG00431
         XR    R2,R2
         J     AAG00432
AAG00431 LHI   R2,1
AAG00432 EQU   *
AAG00433 TM    3369(R9),2   BILATERALINDEPENDENT
         JNE   AAG00434
         XR    R3,R3
         J     AAG00435
AAG00434 LHI   R3,1
AAG00435 ST    R3,92(R12)
         O     R2,92(R12)
         LTR   R2,R2
         JNE   AAG00436
         NI    1080(R8),254   QUALIFIESFORDISCOUNT
         J     AAG00437
AAG00436 OI    1080(R8),1   QUALIFIESFORDISCOUNT
*S481: line->Bits->HasObs2 :=DataHcpcsTbl->flags->ObservationHourly;%t
AAG00437 L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         TM    3372(R9),16   OBSERVATIONHOURLY
         JNE   AAG00438
         NI    1082(R4),239   HASOBS2
         J     AAG00439
AAG00438 OI    1082(R4),16   HASOBS2
*S482: line->Bits->HasDirectAdmObs :=DataHcpcsTbl->flags->ObservationD
AAG00439 L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    3372(R9),8   OBSERVATIONDIRECTADMIT
         JNE   AAG00440
         NI    1082(R6),253   HASDIRECTADMOBS
         J     AAG00441
AAG00440 OI    1082(R6),2   HASDIRECTADMOBS
*S483: line->Bits->NonCoveredService :=DataHcpcsTbl->flags->NonCovered
AAG00441 L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         TM    3369(R9),16   NONCOVERED
         JNE   AAG00442
         NI    1084(R8),223   NONCOVEREDSERVICE
         J     AAG00443
AAG00442 OI    1084(R8),32   NONCOVEREDSERVICE
*S484: line->Bits->TypeOneSatisfied := not DataHcpcsTbl->flags->AddonT
AAG00443 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    3379(R9),1   ADDONTYPE1
         JNE   AAG00444
         OI    1086(R3),64   TYPEONESATISFIED
         J     AAG00445
AAG00444 NI    1086(R3),191   TYPEONESATISFIED
*S485: line->Bits->TypeThreeSatisfied := not DataHcpcsTbl->flags->Addo
AAG00445 L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         TM    3380(R9),64   ADDONTYPE3
         JNE   AAG00446
         OI    1086(R5),32   TYPETHREESATISFIED
         J     AAG00447
AAG00446 NI    1086(R5),223   TYPETHREESATISFIED
*S486: line->Bits->DrugCodeAddonSatisfied := not DataHcpcsTbl->flags->
AAG00447 L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         TM    3380(R9),4   ADDONDRUGADMIN
         JNE   AAG00448
         OI    1086(R7),16   DRUGCODEADDONSATISFIED
         J     AAG00449
AAG00448 NI    1086(R7),239   DRUGCODEADDONSATISFIED
*S487: line->Bits->ROModel := DataHcpcsTbl->flags->ROModel;
AAG00449 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         TM    3380(R9),1   ROMODEL
         JNE   AAG00450
         NI    1087(R2),251   ROMODEL
         J     AAG00451
AAG00450 OI    1087(R2),4   ROMODEL
*S495: claim->Bits->HasAntigen |=DataHcpcsTbl->flags->Antigen;
AAG00451 TM    3003(R9),16   HASANTIGEN
         JNE   AAG00452
         XR    R3,R3
         J     AAG00453
AAG00452 LHI   R3,1
AAG00453 EQU   *
AAG00454 TM    3370(R9),16   ANTIGEN
         JNE   AAG00455
         XR    R4,R4
         J     AAG00456
AAG00455 LHI   R4,1
AAG00456 ST    R4,92(R12)
         O     R3,92(R12)
         LTR   R3,R3
         JNE   AAG00457
         NI    3003(R9),239   HASANTIGEN
         J     AAG00458
AAG00457 OI    3003(R9),16   HASANTIGEN
*S496: claim->Bits->HasSplint |=DataHcpcsTbl->flags->Splint;
AAG00458 TM    3003(R9),8   HASSPLINT
         JNE   AAG00459
         XR    R4,R4
         J     AAG00460
AAG00459 LHI   R4,1
AAG00460 EQU   *
AAG00461 TM    3370(R9),8   SPLINT
         JNE   AAG00462
         XR    R5,R5
         J     AAG00463
AAG00462 LHI   R5,1
AAG00463 ST    R5,92(R12)
         O     R4,92(R12)
         LTR   R4,R4
         JNE   AAG00464
         NI    3003(R9),247   HASSPLINT
         J     AAG00465
AAG00464 OI    3003(R9),8   HASSPLINT
*S497: claim->Bits->HasCast |=DataHcpcsTbl->flags->Cast;
AAG00465 TM    3003(R9),4   HASCAST
         JNE   AAG00466
         XR    R5,R5
         J     AAG00467
AAG00466 LHI   R5,1
AAG00467 EQU   *
AAG00468 TM    3370(R9),4   CAST
         JNE   AAG00469
         XR    R6,R6
         J     AAG00470
AAG00469 LHI   R6,1
AAG00470 ST    R6,92(R12)
         O     R5,92(R12)
         LTR   R5,R5
         JNE   AAG00471
         NI    3003(R9),251   HASCAST
         J     AAG00472
AAG00471 OI    3003(R9),4   HASCAST
*S498: claim->Bits->NegativePressureWoundTherapy |=DataHcpcsTbl->flags
AAG00472 TM    3006(R9),128   NEGATIVEPRESSUREWOUNDTHERAPY
         JNE   AAG00473
         XR    R6,R6
         J     AAG00474
AAG00473 LHI   R6,1
AAG00474 EQU   *
AAG00475 TM    3370(R9),2   NEGATIVEPRESSUREWOUNDTHERAPY
         JNE   AAG00476
         XR    R7,R7
         J     AAG00477
AAG00476 LHI   R7,1
AAG00477 ST    R7,92(R12)
         O     R6,92(R12)
         LTR   R6,R6
         JNE   AAG00478
         NI    3006(R9),127   NEGATIVEPRESSUREWOUNDTHERAPY
         J     AAG00479
AAG00478 OI    3006(R9),128   NEGATIVEPRESSUREWOUNDTHERAPY
*S499: claim->Bits->HasVaccine |=DataHcpcsTbl->flags->Vaccine;
AAG00479 TM    3003(R9),2   HASVACCINE
         JNE   AAG00480
         XR    R7,R7
         J     AAG00481
AAG00480 LHI   R7,1
AAG00481 EQU   *
AAG00482 TM    3370(R9),32   VACCINE
         JNE   AAG00483
         XR    R8,R8
         J     AAG00484
AAG00483 LHI   R8,1
AAG00484 ST    R8,92(R12)
         O     R7,92(R12)
         LTR   R7,R7
         JNE   AAG00485
         NI    3003(R9),253   HASVACCINE
         J     AAG00486
AAG00485 OI    3003(R9),2   HASVACCINE
*S500: claim->Bits->RadioPharm |=DataHcpcsTbl->flags->RadioPharm;/*V9.
AAG00486 TM    3005(R9),64   RADIOPHARM
         JNE   AAG00487
         XR    R8,R8
         J     AAG00488
AAG00487 LHI   R8,1
AAG00488 EQU   *
AAG00489 TM    3374(R9),128   RADIOPHARM
         JNE   AAG00490
         XR    R2,R2
         J     AAG00491
AAG00490 LHI   R2,1
AAG00491 ST    R2,92(R12)
         O     R8,92(R12)
         LTR   R8,R8
         JNE   AAG00492
         NI    3005(R9),191   RADIOPHARM
         J     AAG00493
AAG00492 OI    3005(R9),64   RADIOPHARM
*S501: claim->Bits->HadComprehensive |=DataHcpcsTbl->flags->NcciCode1;
AAG00493 TM    3002(R9),16   HADCOMPREHENSIVE
         JNE   AAG00494
         XR    R2,R2
         J     AAG00495
AAG00494 LHI   R2,1
AAG00495 EQU   *
AAG00496 TM    3370(R9),128   NCCICODE1
         JNE   AAG00497
         XR    R3,R3
         J     AAG00498
AAG00497 LHI   R3,1
AAG00498 ST    R3,92(R12)
         O     R2,92(R12)
         LTR   R2,R2
         JNE   AAG00499
         NI    3002(R9),239   HADCOMPREHENSIVE
         J     AAG00500
AAG00499 OI    3002(R9),16   HADCOMPREHENSIVE
*S502: claim->Bits->HadComponent |=DataHcpcsTbl->flags->NcciCode2;
AAG00500 TM    3002(R9),8   HADCOMPONENT
         JNE   AAG00501
         XR    R3,R3
         J     AAG00502
AAG00501 LHI   R3,1
AAG00502 EQU   *
AAG00503 TM    3370(R9),64   NCCICODE2
         JNE   AAG00504
         XR    R4,R4
         J     AAG00505
AAG00504 LHI   R4,1
AAG00505 ST    R4,92(R12)
         O     R3,92(R12)
         LTR   R3,R3
         JNE   AAG00506
         NI    3002(R9),247   HADCOMPONENT
         J     AAG00507
AAG00506 OI    3002(R9),8   HADCOMPONENT
*S503: claim->Bits->HasObs2 |=DataHcpcsTbl->flags->ObservationHourly;
AAG00507 TM    3004(R9),2   HASOBS2
         JNE   AAG00508
         XR    R4,R4
         J     AAG00509
AAG00508 LHI   R4,1
AAG00509 EQU   *
AAG00510 TM    3372(R9),16   OBSERVATIONHOURLY
         JNE   AAG00511
         XR    R5,R5
         J     AAG00512
AAG00511 LHI   R5,1
AAG00512 ST    R5,92(R12)
         O     R4,92(R12)
         LTR   R4,R4
         JNE   AAG00513
         NI    3004(R9),253   HASOBS2
         J     AAG00514
AAG00513 OI    3004(R9),2   HASOBS2
*S504: claim->Bits->HadBloodProd |=DataHcpcsTbl->flags->BloodProduct;
AAG00514 TM    3003(R9),1   HADBLOODPROD
         JNE   AAG00515
         XR    R5,R5
         J     AAG00516
AAG00515 LHI   R5,1
AAG00516 EQU   *
AAG00517 TM    3371(R9),2   BLOODPRODUCT
         JNE   AAG00518
         XR    R6,R6
         J     AAG00519
AAG00518 LHI   R6,1
AAG00519 ST    R6,92(R12)
         O     R5,92(R12)
         LTR   R5,R5
         JNE   AAG00520
         NI    3003(R9),254   HADBLOODPROD
         J     AAG00521
AAG00520 OI    3003(R9),1   HADBLOODPROD
*S505: claim->Bits->FilmXray |=DataHcpcsTbl->flags->FilmXray;
AAG00521 TM    3006(R9),64   FILMXRAY
         JNE   AAG00522
         XR    R6,R6
         J     AAG00523
AAG00522 LHI   R6,1
AAG00523 EQU   *
AAG00524 TM    3379(R9),16   FILMXRAY
         JNE   AAG00525
         XR    R7,R7
         J     AAG00526
AAG00525 LHI   R7,1
AAG00526 ST    R7,92(R12)
         O     R6,92(R12)
         LTR   R6,R6
         JNE   AAG00527
         NI    3006(R9),191   FILMXRAY
         J     AAG00528
AAG00527 OI    3006(R9),64   FILMXRAY
*S506: claim->Bits->AllogeneicTransplant |=DataHcpcsTbl->flags->Alloge
AAG00528 TM    3006(R9),32   ALLOGENEICTRANSPLANT
         JNE   AAG00529
         XR    R7,R7
         J     AAG00530
AAG00529 LHI   R7,1
AAG00530 EQU   *
AAG00531 TM    3379(R9),8   ALLOGENEICTRANSPLANT
         JNE   AAG00532
         XR    R8,R8
         J     AAG00533
AAG00532 LHI   R8,1
AAG00533 ST    R8,92(R12)
         O     R7,92(R12)
         LTR   R7,R7
         JNE   AAG00534
         NI    3006(R9),223   ALLOGENEICTRANSPLANT
         J     AAG00535
AAG00534 OI    3006(R9),32   ALLOGENEICTRANSPLANT
* Look up APC of current HCPCS code in the APC table; save info if fou
*S509: if( do GAPC.findApcData( line->APC, base->Version ) ) then {
AAG00535 LA    R14,92(R12)
         ST    R14,60(R13)
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R14,484(R2)   APC
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,40(R11)   GAPCC123
         BASR  R14,R15
         L     R15,92(R12)
         LTR   R15,R15
         JE    AAG00543
*S511: /*if an apc is pre-assigned in the table via Add B in the Q cas
*S512:    and could lookup the standard SI/PI here - SI editing has be
*S513: /*currently the following special Q logic are not preassigning
*S514:     1. PHP and MH
*S515:     2. General Composites
*S516:     3. Dir Admit Observation Assignment
*S517:     4. Observation Composites (extended evaluation and assessme
*S518:     5. STVX and T special packaged logic
*S519:    */
*S520: line->ApcPayment :=DataApcTbl->ApcPayment;
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R5,3116(R9)   APCPAYMENT
         ST    R5,528(R4)   APCPAYMENT
*S521: line->DeviceOffset :=DataApcTbl->DeviceOffset;/*V8.0 Device off
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         L     R8,3120(R9)   DEVICEOFFSET
         ST    R8,532(R7)   DEVICEOFFSET
*S522: line->Bits->NucRadFb :=DataApcTbl->flags->NucRadFb;/*V12.1 EFFE
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    3127(R9),32   NUCRADFB
         JNE   AAG00536
         NI    1085(R3),127   NUCRADFB
         J     AAG00537
AAG00536 OI    1085(R3),128   NUCRADFB
*S523: line->Bits->ERVisit :=DataApcTbl->flags->ERVisit;
AAG00537 L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         TM    3127(R9),64   ERVISIT
         JNE   AAG00538
         NI    1082(R5),247   ERVISIT
         J     AAG00539
AAG00538 OI    1082(R5),8   ERVISIT
*S524: line->Bits->CapcSrs :=DataApcTbl->flags->CapcSrs;% MOVED TO THE
AAG00539 L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         TM    3127(R9),16   CAPCSRS
         JNE   AAG00540
         NI    1087(R7),239   CAPCSRS
         J     AAG00541
AAG00540 OI    1087(R7),16   CAPCSRS
*S526: if( line->StatusIndicator="X"
AAG00541 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00542
         L     R4,1868(R9)   VERSION
         CHI   R4,58
         JNL   AAG00542
*S527: and base->Version < 58) then {
*S528: line->Bits->HadTypeSTX:=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),2   HADTYPESTX
*S529: }
*S531: }
*S533: /* Is it a type C code, and is the separate procedure flag on (
*S534: /*V7.2 moved these si checks due to si possibly changing mid-qu
*S535: /*V9.0 moved these again below the Q SI assignment from hcpcsap
*S536: if( line->StatusIndicator="C" ) then {/*V2.3*/
AAG00542 EQU   *
AAG00543 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,69(R11)   C
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00546
*S537: if( DataHcpcsTbl->flags->SeparateProcedure ) then/*V2.3*/
         TM    3373(R9),8   SEPARATEPROCEDURE
         JE    AAG00544
*S538: line->Bits->HasSepProc :=1;/*V2.3*/
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1081(R6),1   HASSEPPROC
         J     AAG00545
*S539: else line->Bits->HasNonSepProc :=1;/*V2.3*/
AAG00544 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1082(R3),128   HASNONSEPPROC
AAG00545 J     AAG00550
*S545: }/*V2.3*/
*S546: else if( line->StatusIndicator="T" ) then {
AAG00546 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00547
*S547: line->Bits->QualifiesForDiscount:=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1080(R6),1   QUALIFIESFORDISCOUNT
*S548: line->Bits->HadTypeSTX :=1;/*V2.2*/
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         OI    1081(R8),2   HADTYPESTX
*S549: line->Bits->HasTypeT :=1;/*V2.3*/
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1082(R3),32   HASTYPET
         J     AAG00549
*S550: }
*S551: else if( line->StatusIndicator="S" ) then {/*V2.2*/
AAG00547 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   1
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00548
*S552: line->Bits->HadTypeSTX :=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1081(R6),2   HADTYPESTX
*S553: }/*V2.2*/
*S554: /*V7.2 end moved*/
*S555: claim->Bits->HadTypeSTX|=line->Bits->HadTypeSTX;/*V6.1 - now ch
AAG00548 EQU   *
AAG00549 EQU   *
AAG00550 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    3004(R9),4   HADTYPESTX
         JNE   AAG00551
         XR    R4,R4
         J     AAG00552
AAG00551 LHI   R4,1
AAG00552 EQU   *
AAG00553 TM    1081(R3),2   HADTYPESTX
         JNE   AAG00554
         XR    R5,R5
         J     AAG00555
AAG00554 LHI   R5,1
AAG00555 ST    R5,92(R12)
         O     R4,92(R12)
         LTR   R4,R4
         JNE   AAG00556
         NI    3004(R9),251   HADTYPESTX
         J     AAG00557
AAG00556 OI    3004(R9),4   HADTYPESTX
*S557: }
* V18.3.0, RETROACTIVE 2015-01-01, MOVED CAPC RANK AND COMPLEXITY ADJU
*S560: loop( rc:=select DataCAPCTbl using byHCPCS( line->Hcpcs ); rc<1
AAG00557 EQU   *
AAG00558 MVC   60(2,R13),48(R11)   4
         MVC   62(2,R13),50(R11)   1
         LA    R14,3128(R9)   DATACAPCTBL
         ST    R14,64(R13)
         L     R14,3128(R9)   DATACAPCTBL
         LTR   R14,R14
         JE    AAG00559
         L     R14,52(R14)
         LHI   R2,4096
         N     R2,12(R14)
AAG00559 L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R5,68(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),52(R11)   5
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAG00562
         L     R7,64(R13)
         LTR   R2,R2
         JNE   AAG00560
         MVC   60(7,R13),0(R7)
         MVC   67(4,R13),8(R7)
         LA    R7,60(R13)
         AHI   R13,16
AAG00560 AHI   R13,80
         LA    R14,3136(R9)   DATACAPCTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3148(2,R9),5(R7)
         MVC   3151(4,R9),7(R7)
         LTR   R2,R2
         JNE   AAG00561
         AHI   R13,-16
AAG00561 EQU   *
AAG00562 ST    R6,76(R12)   RC
AAG00563 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAG00575
*S561: if( line->Hcpcs=DataCAPCTbl->HCPCS ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3136(R9)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAG00569
*S562: if( base->Version < DataCAPCTbl->LoVersion
         L     R6,1868(R9)   VERSION
         XR    R14,R14
         TM    3148(R9),128   LOVERSION
         JE    AAG00564
         LHI   R14,-1
AAG00564 IC    R14,3148(R9)   LOVERSION
         CR    R6,R14
         JL    AAG00566
         XR    R7,R7
         TM    3149(R9),128   HIVERSION
         JE    AAG00565
         LHI   R7,-1
AAG00565 IC    R7,3149(R9)   HIVERSION
         C     R7,1868(R9)   VERSION
         JNL   AAG00567
*S563: or DataCAPCTbl->HiVersion < base->Version ) then continue;
AAG00566 J     AAG00570
*S564: line->capcFlags :=DataCAPCTbl->flags;
AAG00567 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   1100(1,R3),3154(R9)   FLAGS
*S565: line->ComprehensiveApcRank :=DataCAPCTbl->Rank;%V16.0.0, EFFECT
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         XR    R6,R6
         TM    3151(R9),128   RANK
         JE    AAG00568
         LHI   R6,-1
AAG00568 ICM   R6,7,3151(R9)   RANK
         ST    R6,1052(R5)   COMPREHENSIVEAPCRANK
*S566: }
*S567: break;
AAG00569 J     AAG00575
AAG00570 MVC   60(2,R13),54(R11)   7
         LA    R14,3128(R9)   DATACAPCTBL
         ST    R14,64(R13)
         L     R14,3128(R9)   DATACAPCTBL
         LTR   R14,R14
         JE    AAG00571
         L     R14,52(R14)
         LHI   R2,4096
         N     R2,12(R14)
AAG00571 L     R15,4(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JH    AAG00574
         L     R4,64(R13)
         LTR   R2,R2
         JNE   AAG00572
         MVC   60(7,R13),0(R4)
         MVC   67(4,R13),8(R4)
         LA    R4,60(R13)
         AHI   R13,16
AAG00572 AHI   R13,72
         LA    R14,3136(R9)   DATACAPCTBL
         ST    R14,60(R13)
         ST    R4,64(R13)
         MVC   68(4,R13),8(R11)   5
         L     R15,12(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3148(2,R9),5(R4)
         MVC   3151(4,R9),7(R4)
         LTR   R2,R2
         JNE   AAG00573
         AHI   R13,-16
AAG00573 EQU   *
AAG00574 ST    R3,76(R12)   RC
         J     AAG00563
AAG00575 EQU   *
AAG00576 LA    R3,68(R12)
         ST    R3,60(R13)
         L     R15,44(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC077
**************************
GAPCC077 CSECT
GAPCC077 AMODE ANY
GAPCC077 RMODE ANY
*XREF - GAPCC077 GAPC.LoadModifiers
*  R11 + 0000 Literals        (48 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Locals & temps  (12 bytes)
*        0068(R12)-> Integer len 4 (rc)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00603
         DC    A(DMNSCMP) @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNSEL) @00008
         DC    F'2' @00012
         DC    A(DMNSCPYX) @00016
         DC    F'1' @00020
         DC    A(DMNZSTR) @00024
         DC    A(DMNSTBL) @00028
         DC    H'2'  0 2 @00032
         DC    H'4'  0 4 @00034
         DC    H'1'  0 1 @00036
         DC    H'31'  0 31 @00038
         DC    H'7'  0 7 @00040
         DC    CL2'  ' @00042
         DC    CL1'T' @00044
         DC    CL2'50' @00045
AAG00603 XC    68(12,R12),68(R12)
*S576: for( i:=0 until 5-1 ){
         XC    72(4,R12),72(R12)   I
AAG00606 L     R2,72(R12)   I
         CHI   R2,4
         JH    AAG00699
*S577: if( "  "<line->Modifiers[i] ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R5,84(R4)   MODIFIERS
         L     R6,72(R12)   I
         MHI   R6,12
         AR    R5,R6
         ST    R5,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,42(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),32(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNH   AAG00696
*S578: loop(
*S579: rc:=select DataModifierTbl using byModifier( line->Modifiers[i]
         MVC   60(2,R13),34(R11)   4
         MVC   62(2,R13),36(R11)   1
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R3,84(R2)   MODIFIERS
         L     R4,72(R12)   I
         MHI   R4,12
         AR    R3,R4
         LA    R5,68(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),32(R11)   2
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAG00607
         L     R7,64(R13)
         L     R8,68(R13)
         AHI   R13,80
         LA    R14,3392(R9)   DATAMODIFIERTBL
         ST    R14,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),12(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3404(2,R9),2(R7)
         AHI   R13,80
         ST    R8,60(R13)
         LA    R14,3408(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R8,60(R13)
         AHI   R13,-80
         MVC   3420(5,R9),4(R7)
AAG00607 ST    R6,68(R12)   RC
AAG00608 L     R2,68(R12)   RC
         CHI   R2,1
         JNL   AAG00695
*S580: rc<1;
*S581: rc:=select next DataModifierTbl ){
*S583: if( line->Modifiers[i]<>DataModifierTbl->Modif ) then break;
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R5,84(R4)   MODIFIERS
         L     R6,72(R12)   I
         MHI   R6,12
         AR    R5,R6
         ST    R5,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3392(R9)   MODIF
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JE    AAG00609
         J     AAG00695
*if( base->Version < DataModifierTbl->LoVersion
*or DataModifierTbl->HiVersion < base->Version ) continue;
*S588: if( base->Version>=DataModifierTbl->LoVersion
AAG00609 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3404(R9),128   LOVERSION
         JE    AAG00610
         LHI   R14,-1
AAG00610 IC    R14,3404(R9)   LOVERSION
         CR    R2,R14
         JL    AAG00692
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3405(R9),128   HIVERSION
         JE    AAG00611
         LHI   R14,-1
AAG00611 IC    R14,3405(R9)   HIVERSION
         CR    R3,R14
         JH    AAG00692
*S589: and base->Version<=DataModifierTbl->HiVersion ) then {
* OR'ING REQUIRED, MULTIPLE MODIFIFERS ALLOWED PER LINE
*line->modflags|=DataModifierTbl->flags;
*S594: line->Bits->HasNcciModifier |=DataModifierTbl->flags->Ncci;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1079(R3),16   HASNCCIMODIFIER
         JNE   AAG00612
         XR    R4,R4
         J     AAG00613
AAG00612 LHI   R4,1
AAG00613 EQU   *
AAG00614 TM    3424(R9),128   NCCI
         JNE   AAG00615
         XR    R5,R5
         J     AAG00616
AAG00615 LHI   R5,1
AAG00616 ST    R5,76(R12)
         O     R4,76(R12)
         LTR   R4,R4
         JNE   AAG00617
         NI    1079(R3),239   HASNCCIMODIFIER
         J     AAG00618
AAG00617 OI    1079(R3),16   HASNCCIMODIFIER
*S595: line->Bits->DiedOrTransferred |=DataModifierTbl->flags->DiedTra
AAG00618 L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    1082(R6),64   DIEDORTRANSFERRED
         JNE   AAG00619
         XR    R7,R7
         J     AAG00620
AAG00619 LHI   R7,1
AAG00620 EQU   *
AAG00621 TM    3424(R9),16   DIEDTRANSFERRED
         JNE   AAG00622
         XR    R8,R8
         J     AAG00623
AAG00622 LHI   R8,1
AAG00623 ST    R8,76(R12)
         O     R7,76(R12)
         LTR   R7,R7
         JNE   AAG00624
         NI    1082(R6),191   DIEDORTRANSFERRED
         J     AAG00625
AAG00624 OI    1082(R6),64   DIEDORTRANSFERRED
*line->Bits->HasMaxUnitsDAMod   |=DataModifierTbl->flags->MaxUnitsDrug
*S597: line->Bits->HasDeviceReqExclusionMod |=DataModifierTbl->flags->
AAG00625 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         TM    1080(R2),8   HASDEVICEREQEXCLUSIONMOD
         JNE   AAG00626
         XR    R3,R3
         J     AAG00627
AAG00626 LHI   R3,1
AAG00627 EQU   *
AAG00628 TM    3424(R9),8   DEVICEREQEXCLUSION
         JNE   AAG00629
         XR    R4,R4
         J     AAG00630
AAG00629 LHI   R4,1
AAG00630 ST    R4,76(R12)
         O     R3,76(R12)
         LTR   R3,R3
         JNE   AAG00631
         NI    1080(R2),247   HASDEVICEREQEXCLUSIONMOD
         J     AAG00632
AAG00631 OI    1080(R2),8   HASDEVICEREQEXCLUSIONMOD
*S598: line->Bits->HasTherapyMod |=DataModifierTbl->flags->Therapy;
AAG00632 L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         TM    1083(R5),1   HASTHERAPYMOD
         JNE   AAG00633
         XR    R6,R6
         J     AAG00634
AAG00633 LHI   R6,1
AAG00634 EQU   *
AAG00635 TM    3424(R9),64   THERAPY
         JNE   AAG00636
         XR    R7,R7
         J     AAG00637
AAG00636 LHI   R7,1
AAG00637 ST    R7,76(R12)
         O     R6,76(R12)
         LTR   R6,R6
         JNE   AAG00638
         NI    1083(R5),254   HASTHERAPYMOD
         J     AAG00639
AAG00638 OI    1083(R5),1   HASTHERAPYMOD
*S600: if( line->StatusIndicator="T" ) then {
AAG00639 L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         LA    R14,180(R8)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,44(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG00647
*S601: line->Bits->HasNonDiscount |=DataModifierTbl->flags->NonDiscoun
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         TM    1081(R4),128   HASNONDISCOUNT
         JNE   AAG00640
         XR    R5,R5
         J     AAG00641
AAG00640 LHI   R5,1
AAG00641 EQU   *
AAG00642 TM    3424(R9),32   NONDISCOUNT
         JNE   AAG00643
         XR    R6,R6
         J     AAG00644
AAG00643 LHI   R6,1
AAG00644 ST    R6,76(R12)
         O     R5,76(R12)
         LTR   R5,R5
         JNE   AAG00645
         NI    1081(R4),127   HASNONDISCOUNT
         J     AAG00646
AAG00645 OI    1081(R4),128   HASNONDISCOUNT
*S602: }
*S604: switch( line->Modifiers[i] ){
AAG00646 EQU   *
AAG00647 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R4,84(R3)   MODIFIERS
         L     R5,72(R12)   I
         MHI   R5,12
         AR    R4,R5
         ST    R4,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),38(R11)   31
         MVC   68(2,R13),32(R11)   2
         MVC   70(2,R13),32(R11)   2
         L     R15,28(R11)   DMNSTBL
         BASR  R14,R15
         J     AAG00648
         DC    CL2'25'
         J     AAG00649
         DC    CL2'50'
         J     AAG00650
         DC    CL2'52'
         J     AAG00651
         DC    CL2'59'
         J     AAG00652
         DC    CL2'73'
         J     AAG00653
         DC    CL2'74'
         J     AAG00654
         DC    CL2'76'
         J     AAG00655
         DC    CL2'77'
         J     AAG00656
         DC    CL2'91'
         J     AAG00657
         DC    CL2'BL'
         J     AAG00658
         DC    CL2'CG'
         J     AAG00659
         DC    CL2'CS'
         J     AAG00660
         DC    CL2'CT'
         J     AAG00661
         DC    CL2'FB'
         J     AAG00662
         DC    CL2'FC'
         J     AAG00663
         DC    CL2'FX'
         J     AAG00664
         DC    CL2'FY'
         J     AAG00665
         DC    CL2'L1'
         J     AAG00666
         DC    CL2'PT'
         J     AAG00667
         DC    CL2'PN'
         J     AAG00669
         DC    CL2'PO'
         J     AAG00670
         DC    CL2'Q3'
         J     AAG00671
         DC    CL2'XE'
         J     AAG00672
         DC    CL2'XP'
         J     AAG00673
         DC    CL2'XS'
         J     AAG00674
         DC    CL2'XU'
         J     AAG00685
         DC    CL2'ZA'
         J     AAG00686
         DC    CL2'ZB'
         J     AAG00687
         DC    CL2'ZC'
         J     AAG00688
         DC    CL2'JG'
         J     AAG00689
         DC    CL2'V3'
         J     AAG00690
*S605: case "25":
*S606: line->Bits->Has25Modifier :=1;
AAG00648 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),128   HAS25MODIFIER
*S607: break;
         J     AAG00690
*S613: case "50":
*S614: line->Bits->Has50Modifier :=1;
AAG00649 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),64   HAS50MODIFIER
*S615: line->Bits->QualifiesForDiscount :=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),1   QUALIFIESFORDISCOUNT
*S616: break;
         J     AAG00690
*S617: case "52":
*S618: line->Bits->Has52Modifier :=1;
AAG00650 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),32   HAS52MODIFIER
*S619: line->Bits->QualifiesForDiscount :=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),1   QUALIFIESFORDISCOUNT
*S620: break;
         J     AAG00690
*S621: case "59":
*S622: line->Bits->Has59Modifier :=1;
AAG00651 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),16   HAS59MODIFIER
*S623: claim->Bits->Has59Modifier :=1;
         OI    3001(R9),1   HAS59MODIFIER
*S624: break;
         J     AAG00690
*S625: case "73":
*S626: line->Bits->Has73Modifier :=1;
AAG00652 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),8   HAS73MODIFIER
*S627: line->Bits->QualifiesForDiscount :=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),1   QUALIFIESFORDISCOUNT
*S628: break;
         J     AAG00690
*S629: case "74":
*S630: line->Bits->Has74Modifier :=1;
AAG00653 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),4   HAS74MODIFIER
*S631: break;
         J     AAG00690
*S632: case "76":
*S633: line->Bits->Has76Modifier :=1;
AAG00654 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),2   HAS76MODIFIER
*S634: break;
         J     AAG00690
*S635: case "77":
*S636: line->Bits->Has77Modifier :=1;
AAG00655 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1077(R3),1   HAS77MODIFIER
*S637: break;
         J     AAG00690
*S638: case "91":
*S639: line->Bits->Has91Modifier :=1;
AAG00656 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),128   HAS91MODIFIER
*S640: break;
         J     AAG00690
*S641: case "BL":
*S642: line->Bits->HasBLModifier :=1;
AAG00657 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1083(R3),4   HASBLMODIFIER
*S643: break;
         J     AAG00690
*S644: case "CG":
*S645: line->Bits->HasCGModifier :=1;
AAG00658 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),64   HASCGMODIFIER
*S646: break;
         J     AAG00690
*S647: case "CS":
*S648: line->Bits->HasCSModifier :=1;
AAG00659 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),32   HASCSMODIFIER
*S649: break;
         J     AAG00690
*S650: case "CT":
*S651: line->Bits->HasCTModifier :=1;
AAG00660 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),32   HASCTMODIFIER
*S652: break;
         J     AAG00690
*S653: case "FB":
*S654: line->Bits->HasFBModifier :=1;
AAG00661 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),16   HASFBMODIFIER
*S655: break;
         J     AAG00690
*S656: case "FC":
*S657: line->Bits->HasFCModifier :=1;
AAG00662 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),8   HASFCMODIFIER
*S658: break;
         J     AAG00690
*S659: case "FX":
*S660: line->Bits->HasFXModifier :=1;
AAG00663 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),8   HASFXMODIFIER
*S661: break;
         J     AAG00690
*S662: case "FY":
*S663: line->Bits->HasFYModifier :=1;
AAG00664 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),4   HASFYMODIFIER
*S664: break;
         J     AAG00690
*S665: case "L1":
*S666: line->Bits->HasL1Modifier :=1;
AAG00665 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),4   HASL1MODIFIER
*S667: break;
         J     AAG00690
*S668: case "PT":
*S669: line->Bits->HasPTModifier :=1;
AAG00666 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),2   HASPTMODIFIER
*S670: break;
         J     AAG00690
*S671: case "PN":
*S672: line->Bits->HasPNModifier :=1;
AAG00667 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1078(R3),1   HASPNMODIFIER
*S673: if( not claim->Bits->HasPNModifier ) then {
         TM    3002(R9),128   HASPNMODIFIER
         JNE   AAG00668
*S674: claim->Bits->HasPNModifier :=1;
         OI    3002(R9),128   HASPNMODIFIER
*S675: }
*S676: break;
AAG00668 J     AAG00690
*S677: case "PO":%V19.0, reinstated V20.0
*S678: line->Bits->HasPOModifier :=1;
AAG00669 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),128   HASPOMODIFIER
*S679: break;
         J     AAG00690
*S680: case "Q3":
*S681: line->Bits->HasQ3Modifier :=1;
AAG00670 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),64   HASQ3MODIFIER
*S682: break;
         J     AAG00690
*S683: case "XE":
*S684: case "XP":
*S685: case "XS":
*S686: case "XU":
*S687: line->Bits->HasXModifier |=1;
AAG00671 EQU   *
AAG00672 EQU   *
AAG00673 EQU   *
AAG00674 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1079(R3),2   HASXMODIFIER
         JNE   AAG00675
         XR    R4,R4
         J     AAG00676
AAG00675 LHI   R4,1
AAG00676 EQU   *
AAG00677 O     R4,20(R11)   1
         LTR   R4,R4
         JNE   AAG00678
         NI    1079(R3),253   HASXMODIFIER
         J     AAG00679
AAG00678 OI    1079(R3),2   HASXMODIFIER
*S688: claim->Bits->HasXModifier |=1;
AAG00679 TM    3002(R9),64   HASXMODIFIER
         JNE   AAG00680
         XR    R2,R2
         J     AAG00681
AAG00680 LHI   R2,1
AAG00681 EQU   *
AAG00682 O     R2,20(R11)   1
         LTR   R2,R2
         JNE   AAG00683
         NI    3002(R9),191   HASXMODIFIER
         J     AAG00684
AAG00683 OI    3002(R9),64   HASXMODIFIER
*S689: break;
AAG00684 J     AAG00690
*S690: case "ZA":
*S691: line->Bits->HasZAModifier :=1;
AAG00685 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1079(R3),1   HASZAMODIFIER
*S692: break;
         J     AAG00690
*S693: case "ZB":
*S694: line->Bits->HasZBModifier :=1;
AAG00686 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),128   HASZBMODIFIER
*S695: break;
         J     AAG00690
*S696: case "ZC":
*S697: line->Bits->HasZCModifier :=1;
AAG00687 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),64   HASZCMODIFIER
*S698: break;
         J     AAG00690
*S699: /*                  case "ZD":
*S700:                         line->Bits->HasZDModifier :=TRUE;
*S701:                         break;*/
*S702: case "JG":
*S703: line->Bits->HasJGModifier :=1;
AAG00688 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),32   HASJGMODIFIER
*S704: break;
         J     AAG00690
*S705: case "V3":
*S706: line->Bits->HasV3Modifier :=1;
AAG00689 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),16   HASV3MODIFIER
*S707: break;
*S708: }
*S709: if( line->Modifiers[i]<>"50" ) then {
AAG00690 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R4,84(R3)   MODIFIERS
         L     R5,72(R12)   I
         MHI   R5,12
         AR    R4,R5
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   50
         ST    R14,64(R13)
         MVC   70(2,R13),32(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JE    AAG00691
*S710: line->Bits->HasOthThan50 :=1;
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         OI    1084(R8),4   HASOTHTHAN50
*S711: }
*S712: break;
AAG00691 J     AAG00695
AAG00692 EQU   *
AAG00693 MVC   60(2,R13),40(R11)   7
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG00694
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3392(R9)   DATAMODIFIERTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),12(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3404(2,R9),2(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3408(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         MVC   3420(5,R9),4(R3)
AAG00694 ST    R2,68(R12)   RC
         J     AAG00608
AAG00695 J     AAG00697
*S713: }
*S714: }
*S715: }
*S716: else break;
AAG00696 J     AAG00699
AAG00697 EQU   *
AAG00698 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAG00606
*S717: }
*S718: line->ModCount:=i;
AAG00699 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,72(R12)   I
         ST    R4,1032(R3)   MODCOUNT
AAG00700 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC078
**************************
GAPCC078 CSECT
GAPCC078 AMODE ANY
GAPCC078 RMODE ANY
*XREF - GAPCC078 GAPC.initializeLabServices
*  R11 + 0000 Literals        (52 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (payableServicePresent)
*        0072(R12)-> Integer len 4 (labServicePresent)
*        0076(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00803
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    F'1' @00008
         DC    A(GAPCC118) @00012
         DC    A(GAPCC119) @00016
         DC    H'2'  0 2 @00020
         DC    H'10'  0 10 @00022
         DC    H'1120'  4 96 @00024
         DC    H'1'  0 1 @00026
         DC    CL2'13' @00028
         DC    CL2'J1' @00030
         DC    CL2'J2' @00032
         DC    CL2'Q1' @00034
         DC    CL2'Q3' @00036
         DC    CL1'S' @00038
         DC    CL1'T' @00039
         DC    CL1'V' @00040
         DC    CL1'2' @00041
         DC    CL1'3' @00042
         DC    CL2'Q2' @00043
         DC    CL2'Q4' @00045
         DC    CL2'14' @00047
         DC    CL2'12' @00049
AAG00803 XC    64(12,R12),64(R12)
*S727: if( base->BillType="13" ) then {
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG00831
* DO ANY PAYABLE SERVICES EXIST ON THE CLAIM?
* V20.1. Lab packaging was changed. There are now 3 "branches"
* 1) For claims later than v65, Q1, Q3, S, T, V are payable only if th
* 2) For claims before on on v65 Q1, Q3, S, T, V are payable always
* 3) For all claims, J1, J2, Q2 are payable always.
*S734: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAG00806 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00820
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),22(R11)   10
         MVC   66(2,R13),24(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00820
*S735: if( payableServicePresent
         L     R15,68(R12)   PAYABLESERVICEPRESENT
         LTR   R15,R15
         JE    AAG00807
         L     R15,72(R12)   LABSERVICEPRESENT
         LTR   R15,R15
         JE    AAG00807
*S736: and labServicePresent ) then {
*S737: break;
         J     AAG00820
         J     AAG00817
*S738: }
*S739: else if( not payableServicePresent
AAG00807 L     R15,68(R12)   PAYABLESERVICEPRESENT
         LTR   R15,R15
         JNE   AAG00814
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00813
         L     R4,64(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,32(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG00813
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,34(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00808
         L     R4,64(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,36(R11)   Q3
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG00808
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,38(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00808
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,39(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00808
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,40(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00809
AAG00808 L     R2,64(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,41(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00809
         L     R4,64(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,42(R11)   3
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG00809
         L     R2,1868(R9)   VERSION
         CHI   R2,65
         JH    AAG00813
AAG00809 L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,34(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00810
         L     R4,1868(R9)   VERSION
         CHI   R4,66
         JL    AAG00813
AAG00810 L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,43(R11)   Q2
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00813
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,36(R11)   Q3
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00811
         L     R4,64(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,38(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG00811
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,39(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00811
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,40(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00812
AAG00811 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAG00813
AAG00812 J     AAG00814
*S740: and (line->StatusIndicator="J1"
*S741: or line->StatusIndicator="J2"
*S742: or (((line->StatusIndicator="Q1"
*S743: or line->StatusIndicator="Q3"
*S744: or line->StatusIndicator="S"
*S745: or line->StatusIndicator="T"
*S746: or line->StatusIndicator="V")
*S747: and not (line->ActionFlag="2"
*S749: or line->ActionFlag="3"
*S751: ))
*S752: and base->Version > 65)
*S753: or (line->StatusIndicator="Q1" and base->Version < 66)
*S754: or line->StatusIndicator="Q2"
*S755: or ((line->StatusIndicator="Q3"
*S756: or line->StatusIndicator="S"
*S757: or line->StatusIndicator="T"
*S758: or line->StatusIndicator="V") and base->Version <= 65))) then {
*S759: payableServicePresent:=1;
AAG00813 MVC   68(4,R12),8(R11)   1
         J     AAG00816
*S760: }
*S761: else if( not labServicePresent
AAG00814 L     R15,72(R12)   LABSERVICEPRESENT
         LTR   R15,R15
         JNE   AAG00815
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   Q4
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00815
*S762: and line->StatusIndicator="Q4" ) then {
*S763: labServicePresent:=1;
         MVC   72(4,R12),8(R11)   1
AAG00815 EQU   *
AAG00816 EQU   *
AAG00817 EQU   *
AAG00818 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00819
         L     R2,8(R2)
AAG00819 ST    R2,4(R9)   ITEM
         J     AAG00806
*S764: }
*S765: }
* FOR BILL TYPE 13X WITH OTHER PAYABLE SERVICES, MAKE LAB SERVICES WIT
* L1 MODIFIER PAYABLE, PACKAGE ALL OTHERS (DEACTIVATED V18.0, EFFECTIV
*S769: if( labServicePresent ) then {
AAG00820 L     R15,72(R12)   LABSERVICEPRESENT
         LTR   R15,R15
         JE    AAG00830
*S770: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG00821 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00829
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),22(R11)   10
         MVC   66(2,R13),24(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00829
*S771: if( line->StatusIndicator="Q4" ) then {
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   Q4
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00826
*S772: if( not payableServicePresent
         L     R15,68(R12)   PAYABLESERVICEPRESENT
         LTR   R15,R15
         JE    AAG00823
         L     R4,64(R12)   LINE
         TM    1078(R4),4   HASL1MODIFIER
         JE    AAG00822
         L     R5,1868(R9)   VERSION
         CHI   R5,66
         JL    AAG00823
AAG00822 J     AAG00824
*S773: or ( line->Bits->HasL1Modifier and base->Version < 66 ) ) then
*S774: do GAPC.SetSeparatelyPayable( line );
AAG00823 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC118
         BASR  R14,R15
         J     AAG00825
*S775: }
*S776: else {
*S777: do GAPC.PackageCode( line );
AAG00824 LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC119
         BASR  R14,R15
AAG00825 EQU   *
AAG00826 EQU   *
AAG00827 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00828
         L     R2,8(R2)
AAG00828 ST    R2,4(R9)   ITEM
         J     AAG00821
AAG00829 EQU   *
AAG00830 J     AAG00846
*S778: }
*S779: }
*S780: }
*S781: }
*S783: }
* FOR BILL TYPE BILL TYPE 14X OR 12X W/O CCW2, MAKE ALL LAB SERVICES P
*S785: else if( base->BillType="14"
AAG00831 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG00833
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,49(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00832
         TM    3001(R9),16   HASCCW2
         JE    AAG00833
AAG00832 J     AAG00839
*S786: or ( base->BillType="12" and not claim->Bits->HasCcW2 ) ) then
*S787: loop( item:=base->lines->first; item and (line:=&item->line, li
AAG00833 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG00834 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00838
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),22(R11)   10
         MVC   66(2,R13),24(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00838
*S788: if( line->StatusIndicator="Q4" ) then {
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   Q4
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00835
*S789: do GAPC.SetSeparatelyPayable( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC118
         BASR  R14,R15
AAG00835 EQU   *
AAG00836 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00837
         L     R2,8(R2)
AAG00837 ST    R2,4(R9)   ITEM
         J     AAG00834
AAG00838 J     AAG00845
*S790: }
*S791: }
*S792: }
* FOR ALL OTHER BILL TYPES, PACKAGE LAB SERVICES NOT ALREADY PACKAGED
*S794: else{
*S795: loop( item:=base->lines->first; item and (line:=&item->line, li
AAG00839 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG00840 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00844
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),22(R11)   10
         MVC   66(2,R13),24(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00844
*S796: if( line->StatusIndicator="Q4" ) then {
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   Q4
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00841
*S797: do GAPC.PackageCode( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,16(R11)   GAPCC119
         BASR  R14,R15
AAG00841 EQU   *
AAG00842 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00843
         L     R2,8(R2)
AAG00843 ST    R2,4(R9)   ITEM
         J     AAG00840
AAG00844 EQU   *
AAG00845 EQU   *
AAG00846 EQU   *
AAG00847 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC079
**************************
GAPCC079 CSECT
GAPCC079 AMODE ANY
GAPCC079 RMODE ANY
*XREF - GAPCC079 GAPC.SetPrimaryComprehensive
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG00903
         DC    A(DMNSCMP) @00000
         DC    A(DMNATFD) @00004
         DC    A(GAPCC116) @00008
         DC    H'2'  0 2 @00012
         DC    H'5'  0 5 @00014
         DC    H'10'  0 10 @00016
         DC    H'1120'  4 96 @00018
         DC    CL2'13' @00020
         DC    CL2'12' @00022
         DC    CL5'05881' @00024
         DC    CL2'J1' @00029
         DC    CL2'J2' @00031
AAG00903 XC    64(4,R12),64(R12)
*S807: if( 57 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,57
         JNH   AAG00927
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG00907
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG00906
         TM    3001(R9),16   HASCCW2
         JNE   AAG00907
AAG00906 J     AAG00927
*S808: and ( base->BillType="13"
*S809: or ( base->BillType="12" and claim->Bits->HasCcW2 )
*S810: ) ) then {
* DO NOT OVERRIDE IF INPATIENT COMPREHENSIVE ALREADY SET, REGARDLESS O
*S813: if( claim->PrimaryComprehensive
AAG00907 L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAG00908
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   05881
         ST    R14,64(R13)
         MVC   70(2,R13),14(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00908
*S814: and claim->PrimaryComprehensive->PaymentApc="05881" ) then {
*S815: return;
         J     AAG00928
*S816: }
*S818: loop( item:=base->lines->first; item and (line:=&item->line, li
AAG00908 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG00909 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00920
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00920
* V16.0, EFFECTIVE 2015-01-01, SET PRIMARY COMPREHENSIVE
* 1. IDENTIFY THE HIGHEST PAYING J1 COMPREHENSIVE HCPCS ON THE CLAIM I
* ANY J1 WILL ALWAYS TAKE PRECEDENCE OVER A J2
*S823: if( line->StatusIndicator="J1" ) then {
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,29(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00917
* 1A. IF MODIFIER 52, 73, OR 74 EXISTS FOR ANY J1 PROCEDURE, DO NOT AS
*S825: if( not claim->Bits->SuppressComplexityAdjustment
         TM    3005(R9),2   SUPPRESSCOMPLEXITYADJUSTMENT
         JNE   AAG00911
         L     R4,64(R12)   LINE
         TM    1077(R4),32   HAS52MODIFIER
         JNE   AAG00910
         L     R5,64(R12)   LINE
         TM    1077(R5),8   HAS73MODIFIER
         JNE   AAG00910
         L     R2,64(R12)   LINE
         TM    1077(R2),4   HAS74MODIFIER
         JE    AAG00911
*S826: and ( line->Bits->Has52Modifier
*S827: or line->Bits->Has73Modifier
*S828: or line->Bits->Has74Modifier ) ) then {
*S829: claim->Bits->SuppressComplexityAdjustment:=1;
AAG00910 OI    3005(R9),2   SUPPRESSCOMPLEXITYADJUSTMENT
*S830: }
*V18.0 REWRITTEN, IF A RANK ISN'T PROVIDED (RANK=0), INTERPRET AS THE
*S832: if( not claim->PrimaryComprehensive ) then {
AAG00911 L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JNE   AAG00912
*S833: claim->PrimaryComprehensive:=line;
         MVC   1972(4,R9),64(R12)   LINE
         J     AAG00916
*S834: }
*S835: else if( line->ComprehensiveApcRank ) then {
AAG00912 L     R2,64(R12)   LINE
         L     R15,1052(R2)   COMPREHENSIVEAPCRANK
         LTR   R15,R15
         JE    AAG00915
*S836: if( claim->PrimaryComprehensive->ComprehensiveApcRank=0
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R4,1052(R3)   COMPREHENSIVEAPCRANK
         LTR   R4,R4
         JE    AAG00913
         L     R5,64(R12)   LINE
         L     R6,1972(R9)   PRIMARYCOMPREHENSIVE
         L     R7,1052(R5)   COMPREHENSIVEAPCRANK
         C     R7,1052(R6)   COMPREHENSIVEAPCRANK
         JNL   AAG00914
*S837: or line->ComprehensiveApcRank < claim->PrimaryComprehensive->Co
*S838: claim->PrimaryComprehensive:=line;
AAG00913 MVC   1972(4,R9),64(R12)   LINE
AAG00914 EQU   *
AAG00915 EQU   *
AAG00916 EQU   *
AAG00917 EQU   *
AAG00918 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00919
         L     R2,8(R2)
AAG00919 ST    R2,4(R9)   ITEM
         J     AAG00909
*S839: }
*S840: }
*S841: }
*S843: }
* V17.1.0 FLAG J2 COMPREHENSIVE OBSERVATION CODES. GIVE ALL J2 CODES T
*S846: if( 61 < base->Version ) then {
AAG00920 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAG00926
*S847: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAG00921 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG00925
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG00925
*S848: if( line->StatusIndicator="J2" ) then {
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,31(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG00922
*S849: do GAPC.SetDefaultAssignment( line );
         LA    R14,64(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC116
         BASR  R14,R15
* USED BY COMPREHENSIVE OBSERVATION AND MATERNITY OBSERVATION LOGIC TO
* COMPREHENSIVE OBSERVATION VISIT CODE, EVEN IF PACKAGED UNDER A J1 CO
*S852: line->Bits->ObservationVisit:=1;
         L     R4,64(R12)   LINE
         OI    1085(R4),2   OBSERVATIONVISIT
AAG00922 EQU   *
AAG00923 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG00924
         L     R2,8(R2)
AAG00924 ST    R2,4(R9)   ITEM
         J     AAG00921
AAG00925 EQU   *
AAG00926 EQU   *
AAG00927 EQU   *
AAG00928 EQU   *
AAG00929 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC080
**************************
GAPCC080 CSECT
GAPCC080 AMODE ANY
GAPCC080 RMODE ANY
*XREF - GAPCC080 GAPC.SetPBT
*  R11 + 0000 Literals        (48 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (24 bytes)
*        0072(R12)-> Integer len 4 (rc)
*        0076(R12)-> Integer len 4 (found)
*        0080(R12)-> String (btchar)
*        0092(R12)-> Integer len 4 (btused)
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01003
         DC    F'0' @00000
         DC    F'1' @00004
         DC    A(DMNSUBS) @00008
         DC    A(DMNSCMP) @00012
         DC    A(DMNS2I) @00016
         DC    A(DMNSEL) @00020
         DC    F'8' @00024
         DC    A(V40LJMP) @00028
         DC    A(DMNFREE) @00032
         DC    H'1'  0 1 @00036
         DC    H'5'  0 5 @00038
         DC    H'4'  0 4 @00040
         DC    H'7'  0 7 @00042
         DC    CL1'0' @00044
         DC    CL1'9' @00045
AAG01003 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(16,R12),72(R12)
         ST    R2,88(R12)
         XC    92(4,R12),92(R12)
* Set Provider/Bill Type Control
* Edits (NONE)
*S876: if( claim->Bits->Nopps ) then {
         TM    3004(R9),1   NOPPS
         JE    AAG01008
* Set NOPPS Bill Flag to 1 (83x) if Nopps and ASCs present
* Set NOPPS Bill Flag to 2 (non-83x) if Nopps and ASCs not present
*S879: claim->NoppsBillFlag:=( claim->Bits->HasASC )? 1 : 2;
         TM    3005(R9),128   HASASC
         JNE   AAG01006
         LHI   R2,2
         J     AAG01007
AAG01006 LHI   R2,1
AAG01007 ST    R2,2972(R9)   NOPPSBILLFLAG
*S880: }
*S882: /*
*S883:  FORCE A RETURN WITH DEFAULT [claim.PBT=0] IF EITHER OF FIRST T
*S884:  NOTE THAT THIS WILL NEED TO BE MODIFIED OR REMOVED IF ALPHABET
*S885:  IN EITHER OF THOSE CHARACTERS IN THE FUTURE.
*S886:  */
*S887: btchar:= StrPartial( base->BillType, 0, 1 );/*V4.0 copy and tes
AAG01008 LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,128(R9)   BILLTYPE
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),0(R11)   0
         MVC   76(4,R13),4(R11)   1
         L     R15,8(R11)   DMNSUBS
         BASR  R14,R15
*S888: if( btchar<"0" or btchar>"9" ) then return;/*V4.0*/
         LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,44(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JL    AAG01009
         LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   9
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNH   AAG01010
AAG01009 J     AAG01072
*S889: btchar:= StrPartial( base->BillType, 1, 1 );/*V4.0 copy and tes
AAG01010 LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,128(R9)   BILLTYPE
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   1
         MVC   76(4,R13),4(R11)   1
         L     R15,8(R11)   DMNSUBS
         BASR  R14,R15
*S890: if( btchar<"0" or btchar>"9" ) then return;/*V4.0*/
         LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,44(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JL    AAG01011
         LA    R14,80(R12)   BTCHAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,45(R11)   9
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNH   AAG01012
AAG01011 J     AAG01072
*S892: btused:=base->BillType;
AAG01012 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,16(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,92(R12)   BTUSED
*S894: loop( rc:=select first PbtMapTbl using byRowId; rc<1; rc:=selec
         MVC   60(2,R13),38(R11)   5
         MVC   62(2,R13),36(R11)   1
         LA    R14,3972(R9)   PBTMAPTBL
         ST    R14,64(R13)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JH    AAG01013
         L     R4,64(R13)
         MVC   3980(8,R9),0(R4)
AAG01013 ST    R3,72(R12)   RC
AAG01014 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAG01071
*S895: {
*S896: /*V6.3 PBT tables are versioned lookups;*/
*S897: if( btused>=PbtMapTbl->LoBill
         L     R3,92(R12)   BTUSED
         XR    R14,R14
         TM    3985(R9),128   LOBILL
         JE    AAG01015
         LHI   R14,-1
AAG01015 IC    R14,3985(R9)   LOBILL
         CR    R3,R14
         JL    AAG01068
         L     R4,92(R12)   BTUSED
         XR    R14,R14
         TM    3986(R9),128   HIBILL
         JE    AAG01016
         LHI   R14,-1
AAG01016 IC    R14,3986(R9)   HIBILL
         CR    R4,R14
         JH    AAG01068
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3981(R9),128   LOVERSION
         JE    AAG01017
         LHI   R14,-1
AAG01017 IC    R14,3981(R9)   LOVERSION
         CR    R2,R14
         JL    AAG01068
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3982(R9),128   HIVERSION
         JE    AAG01018
         LHI   R14,-1
AAG01018 IC    R14,3982(R9)   HIVERSION
         CR    R2,R14
         JH    AAG01068
*S898: and btused<=PbtMapTbl->HiBill
*S899: and base->Version>=PbtMapTbl->LoVersion
*S900: and base->Version<=PbtMapTbl->HiVersion ) then {
*S902: switch( PbtMapTbl->Rule ){
         XR    R2,R2
         TM    3983(R9),128   RULE
         JE    AAG01019
         LHI   R2,-1
AAG01019 IC    R2,3983(R9)   RULE
         LTR   R2,R2
         JL    AAG01054
         CHI   R2,9
         JH    AAG01054
         SLL   R2,2(R0)
         BRAS  R14,AAG01053
         J     AAG01020
         J     AAG01022
         J     AAG01025
         J     AAG01028
         J     AAG01033
         J     AAG01036
         J     AAG01039
         J     AAG01043
         J     AAG01047
         J     AAG01050
AAG01053 B     0(R2,R14)
*S903: case PbtRule->NoRule:/*VALUE:0*/
*S904: claim->PBT :=PbtMapTbl->PbtIndex;
AAG01020 XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01021
         LHI   R2,-1
AAG01021 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S905: found :=1;
         MVC   76(4,R12),4(R11)   1
*S906: break;
         J     AAG01054
*S908: case PbtRule->CC41:/*VALUE:1*/
*S909: if( claim->Bits->HasCc41 ) then {
AAG01022 TM    3000(R9),32   HASCC41
         JE    AAG01024
*S910: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01023
         LHI   R2,-1
AAG01023 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S911: found :=1;
         MVC   76(4,R12),4(R11)   1
*S912: }
*S913: break;
AAG01024 J     AAG01054
*S915: case PbtRule->H08:/*VALUE:2*/
*S916: if( claim->Bits->HasVaccine ) then {
AAG01025 TM    3003(R9),2   HASVACCINE
         JE    AAG01027
*S917: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01026
         LHI   R2,-1
AAG01026 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S918: found :=1;
         MVC   76(4,R12),4(R11)   1
*S919: }
*S920: break;
AAG01027 J     AAG01054
*S922: case PbtRule->H10:/*VALUE:3 (BILLTYPE 34X [HOME HEALTH])*/
*S923: if( claim->Bits->HasVaccine
AAG01028 TM    3003(R9),2   HASVACCINE
         JNE   AAG01030
         TM    3003(R9),16   HASANTIGEN
         JNE   AAG01030
         TM    3003(R9),8   HASSPLINT
         JNE   AAG01030
         TM    3003(R9),4   HASCAST
         JNE   AAG01030
         L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAG01029
         TM    3006(R9),128   NEGATIVEPRESSUREWOUNDTHERAPY
         JNE   AAG01030
AAG01029 J     AAG01032
*S924: or claim->Bits->HasAntigen
*S925: or claim->Bits->HasSplint
*S926: or claim->Bits->HasCast
*S927: or ( 65 < base->Version and claim->Bits->NegativePressureWoundT
*S928: claim->PBT :=PbtMapTbl->PbtIndex;
AAG01030 XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01031
         LHI   R2,-1
AAG01031 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S929: found :=1;
         MVC   76(4,R12),4(R11)   1
*S930: }
*S931: break;
AAG01032 J     AAG01054
*S933: case PbtRule->Cc07On:/*VALUE:4*/
*S934: if( claim->Bits->HasCc07 ) then {
AAG01033 TM    3000(R9),128   HASCC07
         JE    AAG01035
*S935: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01034
         LHI   R2,-1
AAG01034 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S936: found :=1;
         MVC   76(4,R12),4(R11)   1
*S937: }
*S938: break;
AAG01035 J     AAG01054
*S940: case PbtRule->Cc07Off:/*VALUE:5*/
*S941: if( not claim->Bits->HasCc07 ) then {
AAG01036 TM    3000(R9),128   HASCC07
         JNE   AAG01038
*S942: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01037
         LHI   R2,-1
AAG01037 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S943: found :=1;
         MVC   76(4,R12),4(R11)   1
*S944: }
*S945: break;
AAG01038 J     AAG01054
*S947: case PbtRule->H07:/*VALUE:6*/
*S948: if( claim->Bits->HasAntigen
AAG01039 TM    3003(R9),16   HASANTIGEN
         JNE   AAG01040
         TM    3003(R9),8   HASSPLINT
         JNE   AAG01040
         TM    3003(R9),4   HASCAST
         JE    AAG01042
*S949: or claim->Bits->HasSplint
*S950: or claim->Bits->HasCast
* EXCLUDED FROM RULE 6 CLAIMS (RULE CURRENTLY NOT USED)
* or ( 65 < base->Version and claim->Bits->NegativePressureWoundTherap
*S953: ) then {
*S954: claim->PBT :=PbtMapTbl->PbtIndex;
AAG01040 XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01041
         LHI   R2,-1
AAG01041 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S955: found :=1;
         MVC   76(4,R12),4(R11)   1
*S956: }
*S957: break;
AAG01042 J     AAG01054
*S959: case PbtRule->Cc07ASC:/*VALUE:7*/
*S960: if( claim->Bits->HasCc07
AAG01043 TM    3000(R9),128   HASCC07
         JE    AAG01046
         TM    3003(R9),16   HASANTIGEN
         JNE   AAG01044
         TM    3003(R9),8   HASSPLINT
         JNE   AAG01044
         TM    3003(R9),4   HASCAST
         JE    AAG01046
*S961: and (
*S962: claim->Bits->HasAntigen
*S963: or claim->Bits->HasSplint
*S964: or claim->Bits->HasCast
* EXCLUDED FROM HOSPICE CLAIMS
*or ( 65 < base->Version and claim->Bits->NegativePressureWoundTherapy
*S967: ) ) then {
*S968: claim->PBT :=PbtMapTbl->PbtIndex;
AAG01044 XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01045
         LHI   R2,-1
AAG01045 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S969: found :=1;
         MVC   76(4,R12),4(R11)   1
*S970: }
*S971: break;
AAG01046 J     AAG01054
*S973: case PbtRule->NoppsCC41:/*VALUE:8*/
*S974: if( claim->Bits->Nopps
AAG01047 TM    3004(R9),1   NOPPS
         JE    AAG01049
         TM    3000(R9),32   HASCC41
         JE    AAG01049
*S975: and claim->Bits->HasCc41 ) then {
*S976: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01048
         LHI   R2,-1
AAG01048 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S977: found :=1;
         MVC   76(4,R12),4(R11)   1
*S978: }
*S979: break;
AAG01049 J     AAG01054
*S981: case PbtRule->Nopps:/*VALUE:9*/
*S982: if( claim->Bits->Nopps ) then {
AAG01050 TM    3004(R9),1   NOPPS
         JE    AAG01052
*S983: claim->PBT :=PbtMapTbl->PbtIndex;
         XR    R2,R2
         TM    3984(R9),128   PBTINDEX
         JE    AAG01051
         LHI   R2,-1
AAG01051 IC    R2,3984(R9)   PBTINDEX
         ST    R2,2212(R9)   PBT
*S984: found :=1;
         MVC   76(4,R12),4(R11)   1
*S985: }
*S986: break;
*S988: }
*S990: if( found ) then
AAG01052 EQU   *
AAG01054 L     R15,76(R12)   FOUND
         LTR   R15,R15
         JE    AAG01067
*S991: {
*S992: /*V6.3 PBT tables are now versioned lookups*/
*S993: loop( rc:=select PbtControlTbl using byPBTIndex(claim->PBT);
         MVC   60(2,R13),40(R11)   4
         MVC   62(2,R13),36(R11)   1
         LA    R14,3988(R9)   PBTCONTROLTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         L     R3,2212(R9)   PBT
         STC   R3,0(R2)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAG01055
         L     R5,64(R13)
         MVC   3996(6,R9),0(R5)
AAG01055 ST    R4,72(R12)   RC
AAG01056 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAG01064
*S994: rc<1;
*S995: rc:=select next PbtControlTbl
*S996: ){
*S997: if( claim->PBT<>PbtControlTbl->PbtIndex ) then {
         L     R3,2212(R9)   PBT
         XR    R14,R14
         TM    3996(R9),128   PBTINDEX
         JE    AAG01057
         LHI   R14,-1
AAG01057 IC    R14,3996(R9)   PBTINDEX
         CR    R3,R14
         JE    AAG01058
*S998: rc:=1;
         MVC   72(4,R12),4(R11)   1
*S999: break;
         J     AAG01064
*S1000: }
*S1001: if( base->Version>=PbtControlTbl->LoVersion
AAG01058 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3997(R9),128   LOVERSION
         JE    AAG01059
         LHI   R14,-1
AAG01059 IC    R14,3997(R9)   LOVERSION
         CR    R2,R14
         JL    AAG01061
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3998(R9),128   HIVERSION
         JE    AAG01060
         LHI   R14,-1
AAG01060 IC    R14,3998(R9)   HIVERSION
         CR    R3,R14
         JH    AAG01061
*S1002: and base->Version<=PbtControlTbl->HiVersion ) then break;
         J     AAG01064
AAG01061 EQU   *
AAG01062 MVC   60(2,R13),42(R11)   7
         LA    R14,3988(R9)   PBTCONTROLTBL
         ST    R14,64(R13)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG01063
         L     R3,64(R13)
         MVC   3996(6,R9),0(R3)
AAG01063 ST    R2,72(R12)   RC
         J     AAG01056
*S1003: }
*S1005: if( rc=0 ) then {
AAG01064 L     R2,72(R12)   RC
         LTR   R2,R2
         JNE   AAG01065
*S1006: base->control:=PbtControlTbl->flags;
         MVC   1968(3,R9),3999(R9)   FLAGS
*S1007: break;/*outta the loop*/
         J     AAG01071
         J     AAG01066
*S1008: }
*S1009: else{
*S1010: /*V13.0.0, EFFECTIVE 2012-01-01, SET TO 9 WHEN THE 'no_memory'
*S1011:       * WAS REMOVED (9 BECAME THE DEFAULT VALUE). FIXED TO SET
*S1012:       */
*S1013: base->OutClm_ClaimFlag:=1;/*EXIT CLAIM FLAG (FOR MISSING APC)*
AAG01065 MVC   1884(4,R9),4(R11)   1
*S1014: /*each claim PBT must have a row in pbtcontrol (pbtcntidx)*/
*S1015: { return_code:=Error->RC_RotCorrupt ; goto exit_now; };
         MVC   3016(4,R9),24(R11)   8
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,28(R11)   V40LJMP
         BASR  R14,R15
AAG01066 EQU   *
AAG01067 EQU   *
AAG01068 EQU   *
AAG01069 MVC   60(2,R13),42(R11)   7
         LA    R14,3972(R9)   PBTMAPTBL
         ST    R14,64(R13)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG01070
         L     R3,64(R13)
         MVC   3980(8,R9),0(R3)
AAG01070 ST    R2,72(R12)   RC
         J     AAG01014
AAG01071 EQU   *
AAG01072 EQU   *
AAG01073 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,32(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC081
**************************
GAPCC081 CSECT
GAPCC081 AMODE ANY
GAPCC081 RMODE ANY
*XREF - GAPCC081 GAPC.SetClaimDisposition
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> Integer len 4 (claimlevel)
*        0068(R12)-> Integer len 4 (linelevel)
*        0072(R12)-> Integer len 4 (daylevel)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> reference to Struct len 628 (day)
*        0084(R12)-> reference to Struct len 1120 (line)
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01103
         DC    F'2' @00000
         DC    F'1' @00004
         DC    F'5' @00008
         DC    F'4' @00012
         DC    F'3' @00016
AAG01103 XC    64(28,R12),64(R12)
* Calculate and Set Claim Dispositions in the Claim Output Buffer
* Find all days with day-level denials or day-level rejections
*S1098: loop( day:=base->firstVisit; day; day:=day->nextVisit ) {
         MVC   80(4,R12),60(R9)   FIRSTVISIT
AAG01106 L     R15,80(R12)   DAY
         LTR   R15,R15
         JE    AAG01128
*S1100: if( day->Bits->DayDenied or day->Bits->DayRejected ) then {
         L     R2,80(R12)   DAY
         TM    624(R2),16   DAYDENIED
         JNE   AAG01107
         L     R3,80(R12)   DAY
         TM    624(R3),4   DAYREJECTED
         JE    AAG01126
*S1101: claim->Bits->HasDayDenied |=day->Bits->DayDenied;
AAG01107 L     R2,80(R12)   DAY
         TM    3004(R9),32   HASDAYDENIED
         JNE   AAG01108
         XR    R3,R3
         J     AAG01109
AAG01108 LHI   R3,1
AAG01109 EQU   *
AAG01110 TM    624(R2),16   DAYDENIED
         JNE   AAG01111
         XR    R4,R4
         J     AAG01112
AAG01111 LHI   R4,1
AAG01112 ST    R4,88(R12)
         O     R3,88(R12)
         LTR   R3,R3
         JNE   AAG01113
         NI    3004(R9),223   HASDAYDENIED
         J     AAG01114
AAG01113 OI    3004(R9),32   HASDAYDENIED
*S1102: claim->Bits->HadDayRejected |=day->Bits->DayRejected;
AAG01114 L     R4,80(R12)   DAY
         TM    3002(R9),1   HADDAYREJECTED
         JNE   AAG01115
         XR    R5,R5
         J     AAG01116
AAG01115 LHI   R5,1
AAG01116 EQU   *
AAG01117 TM    624(R4),4   DAYREJECTED
         JNE   AAG01118
         XR    R6,R6
         J     AAG01119
AAG01118 LHI   R6,1
AAG01119 ST    R6,88(R12)
         O     R5,88(R12)
         LTR   R5,R5
         JNE   AAG01120
         NI    3002(R9),254   HADDAYREJECTED
         J     AAG01121
AAG01120 OI    3002(R9),1   HADDAYREJECTED
*S1104: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAG01121 L     R6,80(R12)   DAY
         MVC   84(4,R12),8(R6)   FIRSTDAYSITEMS
AAG01122 L     R15,84(R12)   LINE
         LTR   R15,R15
         JE    AAG01125
*S1105: if( not line->Bits->IgnoreLine
         L     R2,84(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01123
         L     R3,84(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNE   AAG01123
*S1106: and line->DenialFlag=0 ) then {
*S1107: line->DenialFlag :=2;
         L     R2,84(R12)   LINE
         MVC   548(4,R2),0(R11)   2
*S1108: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S1109: line->Bits->IgnoreForObs :=1;
         L     R3,84(R12)   LINE
         OI    1081(R3),16   IGNOREFOROBS
AAG01123 EQU   *
AAG01124 L     R2,84(R12)   LINE
         MVC   84(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01122
AAG01125 EQU   *
AAG01126 EQU   *
AAG01127 L     R2,80(R12)   DAY
         MVC   80(4,R12),0(R2)   NEXTVISIT
         J     AAG01106
*S1110: }
*S1111: }
*S1112: }
*S1113: }
* At this point, we've found all of the edits - set dispositions
* Assumes: entire claim buffer set to 0
* If day rejected, set day level flag for multiday, claim level flag f
*S1118: if( claim->ClaimRejReasn[0] ) then {
AAG01128 L     R15,2232(R9)   CLAIMREJREASN
         LTR   R15,R15
         JE    AAG01129
*S1119: claim->ClaimRejDisp:=1;
         MVC   2228(4,R9),4(R11)   1
*S1120: claimlevel:=1;
         MVC   64(4,R12),4(R11)   1
         J     AAG01133
*S1121: }
*S1122: else if( claim->Bits->HadDayRejected ) then {
AAG01129 TM    3002(R9),1   HADDAYREJECTED
         JE    AAG01132
*S1123: claim->ClaimRejDisp:=2;
         MVC   2228(4,R9),0(R11)   2
*S1124: if( 1<base->DayCount ) then
         L     R2,1940(R9)   DAYCOUNT
         CHI   R2,1
         JNH   AAG01130
*S1125: daylevel:=1;
         MVC   72(4,R12),4(R11)   1
         J     AAG01131
*S1126: else claimlevel:=1;
AAG01130 MVC   64(4,R12),4(R11)   1
*S1127: }
* If day denied, set day level flag for multiday, claim level flag for
*S1130: if( claim->ClaimDenReasn[0] ) then {
AAG01131 EQU   *
AAG01132 EQU   *
AAG01133 L     R15,2356(R9)   CLAIMDENREASN
         LTR   R15,R15
         JE    AAG01134
*S1131: claim->ClaimDenDisp:=1;
         MVC   2352(4,R9),4(R11)   1
*S1132: claimlevel:=1;
         MVC   64(4,R12),4(R11)   1
         J     AAG01138
*S1133: }
*S1134: else if( claim->Bits->HasDayDenied ) then {
AAG01134 TM    3004(R9),32   HASDAYDENIED
         JE    AAG01137
*S1135: claim->ClaimDenDisp:=2;
         MVC   2352(4,R9),0(R11)   2
*S1136: if( 1<base->DayCount ) then
         L     R2,1940(R9)   DAYCOUNT
         CHI   R2,1
         JNH   AAG01135
*S1137: daylevel:=1;
         MVC   72(4,R12),4(R11)   1
         J     AAG01136
*S1138: else claimlevel:=1;
AAG01135 MVC   64(4,R12),4(R11)   1
*S1139: }
*S1141: if( claim->ClaimRtpReasn[0] ) then {
AAG01136 EQU   *
AAG01137 EQU   *
AAG01138 L     R15,2480(R9)   CLAIMRTPREASN
         LTR   R15,R15
         JE    AAG01139
*S1142: claim->ClaimRtpDisp:=1;
         MVC   2476(4,R9),4(R11)   1
*S1143: claimlevel:=1;
         MVC   64(4,R12),4(R11)   1
*S1144: }
*S1145: if( claim->ClaimSusReasn[0] ) then {
AAG01139 L     R15,2604(R9)   CLAIMSUSREASN
         LTR   R15,R15
         JE    AAG01140
*S1146: claim->ClaimSusDisp:=1;
         MVC   2600(4,R9),4(R11)   1
*S1147: claimlevel:=1;
         MVC   64(4,R12),4(R11)   1
*S1148: }
*S1150: if( claim->LineRejReasn[0] ) then {
AAG01140 L     R15,2728(R9)   LINEREJREASN
         LTR   R15,R15
         JE    AAG01145
*claim->LineRejDisp:=1;
*S1152: linelevel:=1;
         MVC   68(4,R12),4(R11)   1
* IF CMS DOESN'T WANT E95 TO IMPACT DISPOSITIONS, USE THE FOLLOWING IN
*S1154: loop( i:=0; i<30 and claim->LineRejReasn[i]; i+=1 ){
         XC    76(4,R12),76(R12)   I
AAG01141 L     R2,76(R12)   I
         CHI   R2,30
         JNL   AAG01144
         LA    R3,2728(R9)   LINEREJREASN
         L     R4,76(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R15,0(R3)   LINEREJREASN
         LTR   R15,R15
         JE    AAG01144
*S1155: if( claim->LineRejReasn[i]<>Edit->PHPServiceCountNotMet ) then
         LA    R2,2728(R9)   LINEREJREASN
         L     R3,76(R12)   I
         MHI   R3,4
         AR    R2,R3
         L     R4,0(R2)   LINEREJREASN
         CHI   R4,95
         JE    AAG01142
*S1156: claim->LineRejDisp:=1;
         MVC   2724(4,R9),4(R11)   1
*linelevel:=TRUE;
*S1158: break;
         J     AAG01144
AAG01142 EQU   *
AAG01143 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAG01141
*S1159: }
*S1160: }
*S1161: }
*S1163: if( claim->LineDenReasn[0] ) then {
AAG01144 EQU   *
AAG01145 L     R15,2852(R9)   LINEDENREASN
         LTR   R15,R15
         JE    AAG01150
*claim->LineDenDisp:=1;
*S1165: linelevel:=1;
         MVC   68(4,R12),4(R11)   1
* IF CMS DOESN'T WANT E95 TO IMPACT DISPOSITIONS, USE THE FOLLOWING IN
*S1167: loop( i:=0; i<30 and claim->LineDenReasn[i]; i+=1 ){
         XC    76(4,R12),76(R12)   I
AAG01146 L     R2,76(R12)   I
         CHI   R2,30
         JNL   AAG01149
         LA    R3,2852(R9)   LINEDENREASN
         L     R4,76(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R15,0(R3)   LINEDENREASN
         LTR   R15,R15
         JE    AAG01149
*S1168: if( claim->LineDenReasn[i]<>Edit->PHPServiceCountNotMet ) then
         LA    R2,2852(R9)   LINEDENREASN
         L     R3,76(R12)   I
         MHI   R3,4
         AR    R2,R3
         L     R4,0(R2)   LINEDENREASN
         CHI   R4,95
         JE    AAG01147
*S1169: claim->LineDenDisp:=1;
         MVC   2848(4,R9),4(R11)   1
*linelevel:=TRUE;
*S1171: break;
         J     AAG01149
AAG01147 EQU   *
AAG01148 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAG01146
*S1172: }
*S1173: }
*S1174: }
*S1176: if( claimlevel ) then {
AAG01149 EQU   *
AAG01150 L     R15,64(R12)   CLAIMLEVEL
         LTR   R15,R15
         JE    AAG01155
*S1196: if( claim->Bits->PrePaymentEdits ) then
         TM    3003(R9),64   PREPAYMENTEDITS
         JE    AAG01153
*S1198: {
*S1199: if( claim->Bits->PostPaymentEdits ) then
         TM    3003(R9),128   POSTPAYMENTEDITS
         JE    AAG01151
*S1200: claim->ClaimDisp:=5;
         MVC   2224(4,R9),8(R11)   5
         J     AAG01152
*S1201: else claim->ClaimDisp:=4;
AAG01151 MVC   2224(4,R9),12(R11)   4
AAG01152 J     AAG01154
*S1202: }
*S1203: else claim->ClaimDisp:=3;
AAG01153 MVC   2224(4,R9),16(R11)   3
AAG01154 J     AAG01160
*S1205: }
*S1206: else if( daylevel ) then
AAG01155 L     R15,72(R12)   DAYLEVEL
         LTR   R15,R15
         JE    AAG01156
*S1207: claim->ClaimDisp:=2;
         MVC   2224(4,R9),0(R11)   2
         J     AAG01159
*S1208: else if( linelevel ) then
AAG01156 L     R15,68(R12)   LINELEVEL
         LTR   R15,R15
         JE    AAG01157
*S1209: claim->ClaimDisp:=1;
         MVC   2224(4,R9),4(R11)   1
         J     AAG01158
*S1210: else claim->ClaimDisp:=0;
AAG01157 XC    2224(4,R9),2224(R9)   CLAIMDISP
AAG01158 EQU   *
AAG01159 EQU   *
AAG01160 EQU   *
AAG01161 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC082
**************************
GAPCC082 CSECT
GAPCC082 AMODE ANY
GAPCC082 RMODE ANY
*XREF - GAPCC082 GAPC.SetApcFlags
*  R11 + 0000 Literals        (112 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (44 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> reference to Struct len 1120 (line2)
*        0080(R12)-> reference to Struct len 628 (day)
*        0084(R12)-> Integer len 4 (metdevreq)
*        0088(R12)-> Integer len 4 (rc)
*        0092(R12)-> String (key1)
*        0104(R12)-> String (key2)
*  R13 + 0000 Stack           (R12 + 120)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,120  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01203
         DC    A(DMNSCMP) @00000
         DC    F'4' @00004
         DC    A(DMNATFD) @00008
         DC    F'9' @00012
         DC    F'115348320' @00016
         DC    F'10' @00020
         DC    F'1' @00024
         DC    F'2' @00028
         DC    F'3' @00032
         DC    F'14' @00036
         DC    F'7' @00040
         DC    A(DMNSCPY) @00044
         DC    A(DMNSEL) @00048
         DC    F'5' @00052
         DC    A(DMNSCPYX) @00056
         DC    F'8' @00060
         DC    A(DMNFREE) @00064
         DC    H'5'  0 5 @00068
         DC    H'10'  0 10 @00070
         DC    H'1120'  4 96 @00072
         DC    H'2'  0 2 @00074
         DC    H'1'  0 1 @00076
         DC    H'4'  0 4 @00078
         DC    H'7'  0 7 @00080
         DC    CL5'10000' @00082
         DC    CL5'69999' @00087
         DC    CL2'13' @00092
         DC    CL1'V' @00094
         DC    CL2'J2' @00095
         DC    CL1'S' @00097
         DC    CL5'99291' @00098
         DC    CL5'C9803' @00103
         DC    CL1'G' @00108
         DC    CL1'H' @00109
         DC    CL1'J' @00110
AAG01203 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(28,R12),72(R12)
         ST    R2,100(R12)
         XC    104(8,R12),104(R12)
         ST    R2,112(R12)
* Set flags in Apc Return buffer
* SET PAYMENT ADJUSTMENT FLAGS TO 4 (DEDUCTIBLE NOT APPLICABLE) FOR AL
* SAME-DAY CODES IN 10000-69999 RANGE IF PT MODIFIER EXISTS ON ANY COD
*S1234: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   80(4,R12),60(R9)   FIRSTVISIT
AAG01206 L     R15,80(R12)   DAY
         LTR   R15,R15
         JE    AAG01221
*S1235: if( day->Bits->HasPTModifier ) then {
         L     R2,80(R12)   DAY
         TM    626(R2),2   HASPTMODIFIER
         JE    AAG01219
*S1236: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,80(R12)   DAY
         MVC   72(4,R12),8(R3)   FIRSTDAYSITEMS
AAG01207 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAG01211
*S1237: if( not line->Bits->IgnoreLine
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01209
         L     R3,72(R12)   LINE
         TM    1076(R3),128   FOUNDHCPCS
         JE    AAG01209
         L     R2,72(R12)   LINE
         TM    1078(R2),2   HASPTMODIFIER
         JE    AAG01209
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,5
         JL    AAG01208
         L     R4,72(R12)   LINE
         L     R5,544(R4)   PAYADJFLAG
         CHI   R5,6
         JNH   AAG01209
AAG01208 L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,82(R11)   10000
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JL    AAG01209
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   69999
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JH    AAG01209
*S1238: and line->Bits->FoundHcpcs
*S1239: and line->Bits->HasPTModifier
*S1240: and ( line->PayAdjFlag<5 or 6<line->PayAdjFlag )
*S1241: and line->Hcpcs>="10000"
*S1242: and line->Hcpcs<="69999"
*S1243: ) then break;
         J     AAG01211
AAG01209 EQU   *
AAG01210 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01207
*S1244: }
*S1245: if( line ) then {
AAG01211 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAG01218
* CHECK PAF<4 HERE BECAUSE 4 IS OUR TARGET... NO SENSE IN REASSIGNING
*S1247: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,80(R12)   DAY
         MVC   72(4,R12),8(R2)   FIRSTDAYSITEMS
AAG01212 L     R15,72(R12)   LINE
         LTR   R15,R15
         JE    AAG01217
*S1248: if( not line->Bits->IgnoreLine
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01215
         L     R3,72(R12)   LINE
         TM    1076(R3),128   FOUNDHCPCS
         JE    AAG01215
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,5
         JL    AAG01213
         L     R4,72(R12)   LINE
         L     R5,544(R4)   PAYADJFLAG
         CHI   R5,6
         JNH   AAG01215
AAG01213 L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01214
         L     R3,72(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         LTR   R4,R4
         JE    AAG01215
AAG01214 L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,82(R11)   10000
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JL    AAG01215
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   69999
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JH    AAG01215
*S1249: and line->Bits->FoundHcpcs
*S1250: and (line->PayAdjFlag<5 or 6<line->PayAdjFlag )
*S1251: and not (line->PackagingFlag
*S1252: and line->LineCharges = 0)
*S1253: and line->Hcpcs>="10000"
*S1254: and line->Hcpcs<="69999"
*S1255: ) then {
*S1256: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_NA;%4;
         L     R2,72(R12)   LINE
         MVC   544(4,R2),4(R11)   4
AAG01215 EQU   *
AAG01216 L     R2,72(R12)   LINE
         MVC   72(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01212
AAG01217 EQU   *
AAG01218 EQU   *
AAG01219 EQU   *
AAG01220 L     R2,80(R12)   DAY
         MVC   80(4,R12),0(R2)   NEXTVISIT
         J     AAG01206
*S1257: }
*S1258: }
*S1259: }
*S1260: }
*S1261: }
*S1264: loop( item:=base->lines->first; item and (line:=&item->line, l
AAG01221 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG01222 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG01301
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),70(R11)   10
         MVC   66(2,R13),72(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG01301
* Set Payment Adjustment Flags
*S1270: if( 44 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,44
         JNH   AAG01224
         L     R3,72(R12)   LINE
         TM    1079(R3),64   HASQ3MODIFIER
         JE    AAG01224
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01224
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01223
         L     R3,72(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         LTR   R4,R4
         JE    AAG01224
*S1271: and line->Bits->HasQ3Modifier
*S1272: and not line->Bits->IgnoreLine
*S1273: and not (line->PackagingFlag
*S1274: and line->LineCharges = 0)) then {/*V13.2.0, EFFECTIVE 2012-07
*S1275: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_COINS_NA;%9
AAG01223 L     R2,72(R12)   LINE
         MVC   544(4,R2),12(R11)   9
         J     AAG01298
*S1276: }
*V21.2, EFFECTIVE JAN 2020. For lines paid with V/J2 and have Modifier
* Special case for 99291 & C9803
* This was an addition for the COVID-19 pandemic.
*S1280: else if (line->ServiceDate >= 3/18/2020d
AAG01224 L     R2,72(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,16(R11)   115348320
         JL    AAG01228
         L     R4,72(R12)   LINE
         TM    1081(R4),64   IGNORELINE
         JNE   AAG01228
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,92(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),74(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG01228
         TM    3000(R9),32   HASCC41
         JNE   AAG01228
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,94(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG01227
         L     R4,72(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,95(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),74(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG01227
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,97(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG01226
         L     R4,72(R12)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,98(R11)   99291
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAG01225
         L     R6,72(R12)   LINE
         LA    R14,144(R6)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,103(R11)   C9803
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAG01226
AAG01225 J     AAG01227
AAG01226 J     AAG01228
AAG01227 L     R2,72(R12)   LINE
         TM    1078(R2),32   HASCSMODIFIER
         JE    AAG01228
*S1281: and not line->Bits->IgnoreLine
*S1282: and base->BillType="13"
*S1283: and not claim->Bits->HasCc41
*S1284: and (line->StatusIndicator = "V"
*S1285: or line->StatusIndicator = "J2"
*S1286: or (line->StatusIndicator = "S" and (line->Hcpcs = "99291" or
*S1287: and line->Bits->HasCSModifier) then {
*S1288: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_COINS_NA;%9
         L     R2,72(R12)   LINE
         MVC   544(4,R2),12(R11)   9
         J     AAG01297
*S1289: }
* v10.3, eff 1/1/03 set PAF 4 on all lines if CC MA present
*S1291: else if( claim->Bits->HasCcMA
AAG01228 TM    3001(R9),64   HASCCMA
         JE    AAG01230
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01230
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01229
         L     R3,72(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         LTR   R4,R4
         JE    AAG01230
*S1292: and not line->Bits->IgnoreLine
*S1293: and not (line->PackagingFlag
*S1294: and line->LineCharges = 0)) then {
*S1295: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_NA;% 4;
AAG01229 L     R2,72(R12)   LINE
         MVC   544(4,R2),4(R11)   4
         J     AAG01296
*S1296: }
*S1297: else if( line->Bits->FoundHcpcs
AAG01230 L     R2,72(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAG01295
         L     R3,72(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAG01295
         L     R4,72(R12)   LINE
         L     R5,544(R4)   PAYADJFLAG
         CHI   R5,12
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,13
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,15
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,16
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,17
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,18
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,19
         JE    AAG01295
         L     R2,72(R12)   LINE
         L     R3,544(R2)   PAYADJFLAG
         CHI   R3,20
         JE    AAG01295
*S1298: and not(
*S1299: line->Bits->IgnoreLine
*S1300: or line->PayAdjFlag=PaymentAdjustments->DEVICE_OFFSET_1ST
*S1301: or line->PayAdjFlag=PaymentAdjustments->DEVICE_OFFSET_2ND
*S1302: or line->PayAdjFlag=PaymentAdjustments->DEVICE_OFFSET_3RD
*S1303: or line->PayAdjFlag=PaymentAdjustments->DEVICE_OFFSET_TERMINAT
*S1304: or line->PayAdjFlag=PaymentAdjustments->DEVICE_CREDIT_TERMINAT
*S1305: or line->PayAdjFlag=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFF
*S1306: or line->PayAdjFlag=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFF
*S1307: or line->PayAdjFlag=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFF
*S1308: ) ) then {
* v17.3, RETROACTIVELY EFFECTIVE 2016-01-01
*S1311: if( 61 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAG01233
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,108(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01233
         L     R2,72(R12)   LINE
         TM    1097(R2),2   PASSTHROUGHRADIOPHARM
         JNE   AAG01231
         L     R3,72(R12)   LINE
         TM    1097(R3),1   PASSTHROUGHSKINPRODUCT
         JNE   AAG01231
         L     R2,72(R12)   LINE
         TM    1098(R2),128   PASSTHROUGHCONTRAST
         JNE   AAG01231
         L     R2,72(R12)   LINE
         TM    1098(R2),64   PASSTHROUGHSTRESSAGENT
         JE    AAG01233
AAG01231 L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01232
         L     R3,72(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         LTR   R4,R4
         JE    AAG01233
*S1312: and line->StatusIndicator="G"
*S1313: and (
*S1314: line->flags->PassthroughRadiopharm
*S1315: or line->flags->PassthroughSkinProduct
*S1316: or line->flags->PassthroughContrast
*S1317: or line->flags->PassthroughStressAgent
*S1318: )
*S1319: and not (line->PackagingFlag
*S1320: and line->LineCharges = 0)) then {
*S1321: line->PayAdjFlag:=PaymentAdjustments->COINS_NA;%10;
AAG01232 L     R2,72(R12)   LINE
         MVC   544(4,R2),20(R11)   10
         J     AAG01294
*S1322: }
*S1323: /* v10.0, eff. 1/1/09 new SI U sets PAF as codes did before
*S1324:     * v11.0, eff 1/1/10 SI U will no longer get PAF as before*
*S1325: else if( base->Version < 65 and line->StatusIndicator="G" ) th
AAG01233 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNL   AAG01234
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,108(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01234
*S1326: line->PayAdjFlag:=PaymentAdjustments->PASSTHRU_DRUG_OR_BIOLOGI
         L     R2,72(R12)   LINE
         MVC   544(4,R2),24(R11)   1
         J     AAG01293
*S1327: }
*S1328: else if( base->Version < 65 and line->StatusIndicator="H" ) th
AAG01234 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNL   AAG01235
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,109(R11)   H
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01235
*S1329: line->PayAdjFlag:=PaymentAdjustments->ADJUSTED_TO_COST;%2;
         L     R2,72(R12)   LINE
         MVC   544(4,R2),28(R11)   2
         J     AAG01292
*S1330: }
*S1331: else if( base->Version < 65 and line->StatusIndicator="J" ) th
AAG01235 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNL   AAG01236
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,110(R11)   J
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01236
*S1332: line->PayAdjFlag:=PaymentAdjustments->NEW_DRUG_OR_BIOLOGICAL;%
         L     R2,72(R12)   LINE
         MVC   544(4,R2),32(R11)   3
         J     AAG01291
*S1333: }
*S1334: else if(line->flags->DeductibleNa
AAG01236 L     R2,72(R12)   LINE
         TM    1090(R2),32   DEDUCTIBLENA
         JE    AAG01238
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01237
         L     R4,72(R12)   LINE
         L     R5,564(R4)   LINECHARGES
         LTR   R5,R5
         JE    AAG01238
*S1335: and not (line->PackagingFlag
*S1336: and line->LineCharges = 0)) then {
*S1337: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_NA;% 4;
AAG01237 L     R2,72(R12)   LINE
         MVC   544(4,R2),4(R11)   4
         J     AAG01290
*S1338: }
*S1339: /*PAF 6,7 done in blood logic frame*/
* V20.0 With the change to XRAY PAF we need to add these checks here
* so we don't assign PAF 9 unless we're missing a FX/FY modifier. With
* the modifiers we're getting an XRAY PAF
* V20.1 Fix: Some codes can be marked as both XRAY and CoinNA. The XRA
* PAF will trump 9 so we don't want to overwrite them with 9 here.
*S1345: else if(line->flags->DeductibleCoinsNa
AAG01238 L     R2,72(R12)   LINE
         TM    1090(R2),16   DEDUCTIBLECOINSNA
         JE    AAG01242
         L     R3,72(R12)   LINE
         TM    1098(R3),16   FILMXRAY
         JE    AAG01240
         L     R4,72(R12)   LINE
         TM    1079(R4),8   HASFXMODIFIER
         JNE   AAG01239
         L     R5,72(R12)   LINE
         TM    1079(R5),4   HASFYMODIFIER
         JE    AAG01240
AAG01239 J     AAG01242
AAG01240 L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01241
         L     R3,72(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         LTR   R4,R4
         JE    AAG01242
*S1346: and not (line->flags->FilmXray and (line->Bits->HasFXModifier
*S1347: and not (line->PackagingFlag and line->LineCharges = 0)) then
*S1348: line->PayAdjFlag:=PaymentAdjustments->DEDUCTIBLE_COINS_NA;%9
AAG01241 L     R2,72(R12)   LINE
         MVC   544(4,R2),12(R11)   9
         J     AAG01289
*S1349: }
*S1350: else if(line->flags->CoinsNa
AAG01242 L     R2,72(R12)   LINE
         TM    1090(R2),8   COINSNA
         JE    AAG01244
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAG01243
         L     R4,72(R12)   LINE
         L     R5,564(R4)   LINECHARGES
         LTR   R5,R5
         JE    AAG01244
*S1351: and not (line->PackagingFlag
*S1352: and line->LineCharges = 0)) then {/*V12.1.2, EFFECTIVE 2011-04
*S1353: line->PayAdjFlag:=PaymentAdjustments->COINS_NA;%10;
AAG01243 L     R2,72(R12)   LINE
         MVC   544(4,R2),20(R11)   10
         J     AAG01288
*S1354: }
*S1356: else
*S1358: {
* NOTE: E102 NOW HANDLES THE FX/FY MODIFIER CONFLICT AND RTP THE CLAIM
* RETROACTIVE TO FX/FY MODIFIER CONFLICT INTRODUCTION 2018-01-01
* We need to do the checks for the DeductibleCoinsNa here to determine
* which flag gets assigned. A line shouldn't have both a FX and FY mod
* (see edit 102) however we keep the old hierarchy of using the film
* PAF values as the dominating selection in this case.
* V20.1 Fix: We need to check for the existence of FX/FY before going
* There was a problem where codes were marked as both Film and CT and
* into the film logic when they should be going into the CT logic.
*S1368: if(line->flags->FilmXray and not line->PackagingFlag and (line
AAG01244 L     R2,72(R12)   LINE
         TM    1098(R2),16   FILMXRAY
         JE    AAG01253
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAG01253
         L     R2,72(R12)   LINE
         TM    1079(R2),8   HASFXMODIFIER
         JNE   AAG01245
         L     R3,72(R12)   LINE
         TM    1079(R3),4   HASFYMODIFIER
         JE    AAG01253
*S1369: if(line->Bits->HasFXModifier) then {
AAG01245 L     R2,72(R12)   LINE
         TM    1079(R2),8   HASFXMODIFIER
         JE    AAG01248
* PAF 23/PAF 21. Tricare does not have PAF 23 applicable.
*S1372: line->PayAdjFlag := line->flags->DeductibleCoinsNa ? PaymentAd
         L     R3,72(R12)   LINE
         L     R4,72(R12)   LINE
         TM    1090(R4),16   DEDUCTIBLECOINSNA
         JNE   AAG01246
         LHI   R2,21
         J     AAG01247
AAG01246 LHI   R2,23
AAG01247 ST    R2,544(R3)   PAYADJFLAG
         J     AAG01252
*S1376: }
*S1377: else if (line->Bits->HasFYModifier) then {
AAG01248 L     R2,72(R12)   LINE
         TM    1079(R2),4   HASFYMODIFIER
         JE    AAG01251
* PAF 24/PAF 22. Tricare does not have PAF 22 applicable.
*S1380: line->PayAdjFlag := line->flags->DeductibleCoinsNa ? PaymentAd
         L     R3,72(R12)   LINE
         L     R4,72(R12)   LINE
         TM    1090(R4),16   DEDUCTIBLECOINSNA
         JNE   AAG01249
         LHI   R2,22
         J     AAG01250
AAG01249 LHI   R2,24
AAG01250 ST    R2,544(R3)   PAYADJFLAG
AAG01251 EQU   *
AAG01252 J     AAG01287
*S1384: }
*S1385: }
* V17.0.0, EFFECTIVE 2016-01-01, NON-STANDARD CAT SCAN W/ CT MODIFIER
* DO NOT INCLUDE PACKAGED CODES
*S1388: else if( 61 < base->Version
AAG01253 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAG01254
         L     R3,72(R12)   LINE
         TM    1098(R3),32   NONSTANDARDCTSCAN
         JE    AAG01254
         L     R2,72(R12)   LINE
         TM    1079(R2),32   HASCTMODIFIER
         JE    AAG01254
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAG01254
*S1389: and line->flags->NonStandardCtScan
*S1390: and line->Bits->HasCTModifier
*S1391: and not line->PackagingFlag ) then {
* V17.0 FIX, PAF ALREADY SET FOR IMAGING COMPOSITE CASES, SEE IMAGING
* THIS SETS THE PAF FOR ALL LINES OUTSIDE OF IMAGING COMPOSITE
*S1394: line->PayAdjFlag:=PaymentAdjustments->CT_SCAN_REDUCTION;% 14;
         L     R2,72(R12)   LINE
         MVC   544(4,R2),36(R11)   14
         J     AAG01286
*S1395: }
* V18.1, EFFECTIVE 2017-04-01, TRICARE ONLY PROCESSES INPATIENT UNDER
* IN THIS SITUATION (CC MH PRESENT), APPLY PAF 90 TO ALL C LINES FOR P
*S1398: /*V15.0.0 DEACTIVATED FB/FC, PAF 7 & 8 LOGIC*/
*S1406: else if( base->Version<54 ) then {
AAG01254 L     R2,1868(R9)   VERSION
         CHI   R2,54
         JNL   AAG01285
*S1408: if( line->Bits->NucRadFb
         L     R3,72(R12)   LINE
         TM    1085(R3),128   NUCRADFB
         JE    AAG01255
         L     R4,72(R12)   LINE
         TM    1078(R4),16   HASFBMODIFIER
         JE    AAG01255
*S1409: and line->Bits->HasFBModifier ) then {/*V12.0, EFFECTIVE 2011-
*S1410: line->PayAdjFlag:=7;
         L     R2,72(R12)   LINE
         MVC   544(4,R2),40(R11)   7
*S1411: line->Bits->HasPAF7Cond:=1;/*V12.3 UNCOMMENTED*/
         L     R3,72(R12)   LINE
         OI    1084(R3),16   HASPAF7COND
         J     AAG01256
*S1412: }
* v10.0, eff 1/1/09 procedures coded with FB or FC must also
* be present with a required device for offset flags 7 or 8 to apply
*S1415: else metdevreq:=0;
AAG01255 XC    84(4,R12),84(R12)   METDEVREQ
*S1417: /*V34 only do the extra lookup if criteria could be met*/
*S1418: if( 0<line->DeviceOffset
AAG01256 L     R2,72(R12)   LINE
         L     R3,532(R2)   DEVICEOFFSET
         LTR   R3,R3
         JNH   AAG01279
         L     R4,72(R12)   LINE
         TM    1078(R4),16   HASFBMODIFIER
         JNE   AAG01257
         L     R5,72(R12)   LINE
         TM    1078(R5),8   HASFCMODIFIER
         JE    AAG01279
*S1419: and (line->Bits->HasFBModifier or line->Bits->HasFCModifier) )
*S1420: {
*S1421: loop( day:=base->firstVisit; day; day:=day->nextVisit )
AAG01257 MVC   80(4,R12),60(R9)   FIRSTVISIT
AAG01258 L     R15,80(R12)   DAY
         LTR   R15,R15
         JE    AAG01278
*S1422: {
*S1423: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSam
         L     R2,80(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAG01259 L     R15,76(R12)   LINE2
         LTR   R15,R15
         JE    AAG01275
*S1424: {
*S1425: if( not (line2->Bits->IgnoreLine or line2->Bits->IgnoreInpat)
         L     R2,76(R12)   LINE2
         TM    1081(R2),64   IGNORELINE
         JNE   AAG01272
         L     R3,76(R12)   LINE2
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAG01272
*S1426: {
*S1427: key1:=line->Hcpcs;
         L     R2,72(R12)   LINE
         LA    R14,92(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,44(R11)   DMNSCPY
         BASR  R14,R15
*S1428: key2:=line2->Hcpcs;
         L     R3,76(R12)   LINE2
         LA    R14,104(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,44(R11)   DMNSCPY
         BASR  R14,R15
*S1429: if( key1<>key2 ) then
         LA    R14,92(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,104(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAG01271
*S1430: {
*S1431: loop( rc:=select MapCodePairTbl using byCode(key1, key2); rc<1
         MVC   60(2,R13),78(R11)   4
         MVC   62(2,R13),76(R11)   1
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         LA    R5,68(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),68(R11)   5
         LA    R14,92(R12)   KEY1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,44(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R6,73(R13)
         AHI   R13,88
         ST    R6,60(R13)
         MVC   68(2,R13),68(R11)   5
         LA    R14,104(R12)   KEY2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,44(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,48(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
         CHI   R7,1
         JH    AAG01260
         L     R8,64(R13)
         AHI   R13,88
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R8,64(R13)
         MVC   68(4,R13),52(R11)   5
         L     R15,56(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R8)
         ST    R14,64(R13)
         MVC   68(4,R13),52(R11)   5
         L     R15,56(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3656(3,R9),10(R8)
AAG01260 ST    R7,88(R12)   RC
AAG01261 L     R2,88(R12)   RC
         CHI   R2,1
         JNL   AAG01270
*S1432: {
*S1433: if( key1=MapCodePairTbl->Code1
         LA    R14,92(R12)   KEY1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3632(R9)   CODE1
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG01267
         LA    R14,104(R12)   KEY2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3644(R9)   CODE2
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01267
*S1434: and key2=MapCodePairTbl->Code2 ) then {
*S1435: if( base->Version < MapCodePairTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3656(R9),128   LOVERSION
         JE    AAG01262
         LHI   R14,-1
AAG01262 IC    R14,3656(R9)   LOVERSION
         CR    R2,R14
         JL    AAG01264
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3657(R9),128   HIVERSION
         JE    AAG01263
         LHI   R14,-1
AAG01263 IC    R14,3657(R9)   HIVERSION
         CR    R3,R14
         JNH   AAG01265
*S1436: or base->Version > MapCodePairTbl->HiVersion ) then continue;
AAG01264 J     AAG01268
*S1437: if( MapCodePairTbl->flags->DevOffsetPair ) then {
AAG01265 TM    3658(R9),16   DEVOFFSETPAIR
         JE    AAG01266
*S1438: metdevreq:=1;
         MVC   84(4,R12),24(R11)   1
*S1439: break;
         J     AAG01270
AAG01266 EQU   *
AAG01267 EQU   *
AAG01268 MVC   60(2,R13),80(R11)   7
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,48(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAG01269
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3632(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),52(R11)   5
         L     R15,56(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3644(R9)   MAPCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,5(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),52(R11)   5
         L     R15,56(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3656(3,R9),10(R3)
AAG01269 ST    R2,88(R12)   RC
         J     AAG01261
*S1440: }
*S1441: }
*break;
*S1443: }
*S1444: }
*S1445: }
*S1446: if( metdevreq=1 ) then break;/*break out completely if criteri
AAG01270 EQU   *
AAG01271 EQU   *
AAG01272 L     R2,84(R12)   METDEVREQ
         CHI   R2,1
         JNE   AAG01273
         J     AAG01275
AAG01273 EQU   *
AAG01274 L     R2,76(R12)   LINE2
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01259
*S1447: }
*S1448: if( metdevreq=1 ) then break;/*break out completely if criteri
AAG01275 L     R2,84(R12)   METDEVREQ
         CHI   R2,1
         JNE   AAG01276
         J     AAG01278
AAG01276 EQU   *
AAG01277 L     R2,80(R12)   DAY
         MVC   80(4,R12),0(R2)   NEXTVISIT
         J     AAG01258
*S1449: }
*S1450: }
* V16.0.0, EFFECTIVE 2015-01-01, CARDIO DEFIB PACING PAIR DEACTIVATED
* (NO CHANGE HERE, FLAG DOESN'T GET SET AFTER VERSION 57)
*S1454: if( 0<line->DeviceOffset
AAG01278 EQU   *
AAG01279 L     R2,72(R12)   LINE
         L     R3,532(R2)   DEVICEOFFSET
         LTR   R3,R3
         JNH   AAG01284
         L     R15,84(R12)   METDEVREQ
         LTR   R15,R15
         JE    AAG01284
         L     R2,1868(R9)   VERSION
         CHI   R2,46
         JL    AAG01280
         L     R3,72(R12)   LINE
         TM    1085(R3),64   HASCARDIODEFIBPACINGPAIR
         JNE   AAG01284
*S1455: and metdevreq/*V10.0, eff 1/1/09 extra device specific criteri
*S1456: and ( base->Version < 46 or not line->Bits->HasCardioDefibPaci
*S1457: if( line->Bits->HasFBModifier ) then/*V8.0, eff 1/1/07 PAF 7 -
AAG01280 L     R2,72(R12)   LINE
         TM    1078(R2),16   HASFBMODIFIER
         JE    AAG01281
*S1458: {
*S1459: line->PayAdjFlag :=PaymentAdjustments->PROVIDER_NO_COST;% 7;
         L     R3,72(R12)   LINE
         MVC   544(4,R3),40(R11)   7
*S1460: line->Bits->HasPAF7Cond :=1;/*V8.0 PAF7 condition*/
         L     R4,72(R12)   LINE
         OI    1084(R4),16   HASPAF7COND
         J     AAG01283
*S1461: }
*S1462: else if( line->Bits->HasFCModifier ) then/*V9.0, eff 1/1/08 PA
AAG01281 L     R2,72(R12)   LINE
         TM    1078(R2),8   HASFCMODIFIER
         JE    AAG01282
*S1463: {
*S1464: line->PayAdjFlag :=PaymentAdjustments->PROVIDER_PARTIAL_CREDIT
         L     R3,72(R12)   LINE
         MVC   544(4,R3),60(R11)   8
*S1465: line->Bits->HasPAF8Cond :=1;/*V8.0 PAF8 condition*/
         L     R4,72(R12)   LINE
         OI    1084(R4),8   HASPAF8COND
AAG01282 EQU   *
AAG01283 EQU   *
AAG01284 EQU   *
AAG01285 EQU   *
AAG01286 EQU   *
AAG01287 EQU   *
AAG01288 EQU   *
AAG01289 EQU   *
AAG01290 EQU   *
AAG01291 EQU   *
AAG01292 EQU   *
AAG01293 EQU   *
AAG01294 EQU   *
AAG01295 EQU   *
AAG01296 EQU   *
AAG01297 EQU   *
AAG01298 EQU   *
AAG01299 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG01300
         L     R2,8(R2)
AAG01300 ST    R2,4(R9)   ITEM
         J     AAG01222
AAG01301 EQU   *
AAG01302 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,64(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC083
**************************
GAPCC083 CSECT
GAPCC083 AMODE ANY
GAPCC083 RMODE ANY
*XREF - GAPCC083 GAPC.SetDiscounting
*  R11 + 0000 Literals        (96 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (68 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> reference to Struct len 1120 (hiline)
*        0084(R12)-> String (dkey)
*        0096(R12)-> Integer len 4 (dccol)
*        0100(R12)-> Integer len 4 (pay)
*        0104(R12)-> Integer len 4 (hipay)
*        0108(R12)-> Integer len 4 (rc)
*        0112(R12)-> Integer len 4 (ignore50)
*        0116(R12)-> String (formula)
*        0128(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 144)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,144  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  4,8
         BRAS  R11,AAG01403
         DC    DB'.5' @00000
         DC    X'FFFFFFFF' @00008
         DC    A(DMNSCMP) @00012
         DC    F'2' @00016
         DC    F'0' @00020
         DC    F'1' @00024
         DC    A(DMNSUBS) @00028
         DC    A(DMNSCPY) @00032
         DC    A(DMNCCAT) @00036
         DC    A(DMNSEL) @00040
         DC    F'9' @00044
         DC    A(DMNSCPYX) @00048
         DC    A(DMNZSTR) @00052
         DC    F'3' @00056
         DC    F'4' @00060
         DC    A(DMNI2S) @00064
         DC    A(DMNS2I) @00068
         DC    A(DMNFREE) @00072
         DC    H'1'  0 1 @00076
         DC    H'2'  0 2 @00078
         DC    H'4'  0 4 @00080
         DC    H'9'  0 9 @00082
         DC    H'7'  0 7 @00084
         DC    CL1'1' @00086
         DC    CL1'T' @00087
         DC    CL1'2' @00088
         DC    CL2'00' @00089
         DC    CL1'Q' @00091
         DC    CL1'N' @00092
         DC    CL1'H' @00093
         DC    CL1'Y' @00094
AAG01403 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(20,R12),72(R12)
         ST    R2,92(R12)
         XC    96(28,R12),96(R12)
         ST    R2,124(R12)
         XC    128(8,R12),128(R12)
         ST    R2,136(R12)
* Set discounting factor
* v7.0 eff. 1/1/06 Modifier 52 non-T discounting
* v7.1 eff. 4/1/06 Modifier 52 now also results in terminated T discou
* v7.1 eff. 4/1/06 Modifier 73 results in non-T disounting
*message "START-----------------";
*S1495: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAG01406 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAG01473
*S1496: reset hiline;
         XC    80(4,R12),80(R12)
*S1497: hipay:=-1;/*V6.2 need first line to be highest, regardless of
         MVC   104(4,R12),8(R11)   -1
*S1498: if( day->Bits->QualifiesForDiscount ) then {
         L     R2,72(R12)   DAY
         TM    624(R2),2   QUALIFIESFORDISCOUNT
         JE    AAG01471
* SELECT ONLY LINES THAT QUALIFY FOR DISCOUNT. FOR V2.0 ONWARD,
* SELECT LINES WHERE MODIFIERS 76, 77, 78, AND 79 ARE NOT PRESENT
*S1502: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAG01407 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAG01423
*S1504: if( not line->Bits->QualifiesForDiscount
         L     R2,76(R12)   LINE
         TM    1080(R2),1   QUALIFIESFORDISCOUNT
         JE    AAG01410
         L     R3,76(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAG01410
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAG01408
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAG01410
AAG01408 L     R2,76(R12)   LINE
         L     R3,540(R2)   PACKAGINGFLAG
         LTR   R3,R3
         JE    AAG01409
         L     R4,76(R12)   LINE
         L     R5,540(R4)   PACKAGINGFLAG
         CHI   R5,3
         JNE   AAG01410
AAG01409 L     R2,76(R12)   LINE
         TM    1081(R2),128   HASNONDISCOUNT
         JNE   AAG01410
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG01410
         L     R2,76(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JL    AAG01411
*S1505: or line->Bits->IgnoreLine
*S1506: or ( line->DenialFlag=1 and line->ActionFlag<>"1" )
*S1507: or ( line->PackagingFlag<>0 and line->PackagingFlag<>3 )/*6.2
*S1508: or line->Bits->HasNonDiscount
*S1509: or line->StatusIndicator<>"T"
*S1514: or line->ActionFlag>="2"
*S1516: ) then {
*message "continuing 1 %s", line->Hcpcs;
*S1518: continue;
AAG01410 J     AAG01422
*S1519: }
*S1521: /*NOTE: Calculate payment for lines with SI=T*/
* V8.0, eff 1/1/07: if PAF 7 and a T subtract the no-cost device
* offset, before any terminated reduction, and use result
* in discount logic
*S1526: /*V15.0.0 DEACTIVATED PAF 7 AND 8 FB/FC LOGIC*/
*S1536: if( base->Version<54 ) then {
AAG01411 L     R2,1868(R9)   VERSION
         CHI   R2,54
         JNL   AAG01416
*S1537: if( line->Bits->HasPAF7Cond ) then/*V8.0 eff. 1/1/07 flag set
         L     R3,76(R12)   LINE
         TM    1084(R3),16   HASPAF7COND
         JE    AAG01412
*S1538: pay:=line->ApcPayment-line->DeviceOffset;
         L     R4,76(R12)   LINE
         L     R5,76(R12)   LINE
         L     R6,528(R4)   APCPAYMENT
         S     R6,532(R5)   DEVICEOFFSET
         ST    R6,100(R12)   PAY
         J     AAG01415
*S1539: else if( line->Bits->HasPAF8Cond ) then/*V9.0 eff. 1/1/08 flag
AAG01412 L     R2,76(R12)   LINE
         TM    1084(R2),8   HASPAF8COND
         JE    AAG01413
*S1540: pay:=line->ApcPayment-.5*line->DeviceOffset;
         L     R3,76(R12)   LINE
         L     R4,528(R3)   APCPAYMENT
         CDFBR F0,R4
         L     R5,76(R12)   LINE
         L     R6,532(R5)   DEVICEOFFSET
         CDFBR F2,R6
         MDB   F2,0(R11)   .5
         SDBR  F0,F2
         CFDBR R7,5,F0
         ST    R7,100(R12)   PAY
         J     AAG01414
*S1541: else pay:=line->ApcPayment;
AAG01413 L     R2,76(R12)   LINE
         L     R3,528(R2)   APCPAYMENT
         ST    R3,100(R12)   PAY
AAG01414 EQU   *
AAG01415 J     AAG01417
*S1542: }
*S1543: else pay:=line->ApcPayment;
AAG01416 L     R2,76(R12)   LINE
         L     R3,528(R2)   APCPAYMENT
         ST    R3,100(R12)   PAY
*message "Line %s payment is %i", line->Hcpcs, pay;
*S1547: if( line->Bits->Has73Modifier
AAG01417 L     R2,76(R12)   LINE
         TM    1077(R2),8   HAS73MODIFIER
         JNE   AAG01418
         L     R3,76(R12)   LINE
         TM    1077(R3),32   HAS52MODIFIER
         JE    AAG01420
*S1548: or line->Bits->Has52Modifier ) then {% V7.1 NOW ALSO USE 52
*S1549: pay:=pay/2;% V2.0 RETRO, 8.0 USE PAY VARIABLE
AAG01418 XR    R14,R14
         L     R15,100(R12)   PAY
         LTR   R15,R15
         JNL   AAG01419
         LHI   R14,-1
AAG01419 D     R14,16(R11)   2
         LR    R2,R15
         ST    R2,100(R12)   PAY
*S1550: }
*S1552: if( hipay < pay ) then {
AAG01420 L     R2,104(R12)   HIPAY
         C     R2,100(R12)   PAY
         JNL   AAG01421
*S1553: hipay :=pay;
         L     R3,100(R12)   PAY
         ST    R3,104(R12)   HIPAY
*S1554: hiline :=line;
         MVC   80(4,R12),76(R12)   LINE
AAG01421 EQU   *
AAG01422 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01407
*S1555: }
*S1558: }/* all qualifying lines that day */
*message "High line %s payment is %i", hiline->Hcpcs, hipay;
*S1562: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAG01423 L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAG01424 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAG01470
*S1563: {
*S1564: /*
*S1565:     V7.0 CHANGE NOTES: EFFECTIVE 1/1/06, MODIFIER 52 WITH NON-
*S1566:     74846 FIX 11/22/05 -
*S1567:      I) MODIFIER 52 SETS QUALIFIESFORDISCOUNT BIT
*S1568:      II) ADDED CONDITION OF NON-T WITH MODIFIER 52 AS ENTRY IF
*S1569:      TO ALWAYS INCLUDE THESE IN CASE OF BOTH PRESENT FOR NON-T
*S1570:      (THIS CONDITION NOT NEEDED ABOVE BECAUSE ABOVE ONLY DEALS
*S1572:      ALSO NOTED 11/22/05:  THE EXISTING LOGIC BELOW WORKS WITH
*S1573:      THE NON-T WITH HIGHEST PAYMENT LOOKUP IS EFFECTIVELY DISA
*S1574:      ABOVE ONLY WORKS WITH T CODES. HOWEVER, SINCE THE HIGHEST
*S1575:      FOR NON-T CODES ARE THE SAME, THE CORRECT FORMULA APPLIES
*S1576:      THIS AREA THAT CAUSE DIFFERENT FORMULAS FOR HIGHEST NON-T
*S1577:     LOOK AT SPLITTING OUT T'S AND NON-TS OR THE HILINE SETTING
*S1579:     V7.1 CHANGE NOTES 1/24/05:  EFFECTIVE 4/1/06, MODIFIER 52
*S1580:     MODIFIER (SUBJECT TO T DISCOUNTING RULES); MODIFIER 73 IS
*S1581:     NON-T DISCOUNTING RULES. CHANGE HAS BEEN INCORPORATED WHIC
*S1582:     TO OPERATE ACCORDING TO THE EFFECTIVE VERSION: PRIOR TO 1/
*S1583:     ACCORDING TO V6.3 AND PRIOR BETWEEN 1/1/06 AND 3/31/06, DI
*S1584:     TO V7.0 4/1/06 AND BEYOND NEW V7.1 LOGIC AS INDICATED ABOV
*S1585:     UTILIZE A SINGLE VERSION OF THE ROT TABLE BUT CONTROL THE
*S1586:     VERSION TESTS BELOW. THIS RELIES ON ABOVE NOTE FROM 11/22
*S1587:     OF COLUMN BASED ON TERMINATED PROCEDURE (MOD 52/73) AND DA
*S1588:     PRIOR TO 1/1/06  DCCOL 5 NOT USED.  (V6.3 AND PRIOR LOGIC)
*S1589:     1/1/06-4/1/06:  DCCOL 5 USED ON ALL NON-T CODES WITH MODIF
*S1590:     4/1/06 AND BEYOND:  DCCOL 5 USED ON ALL NON-T CODES WITH M
*S1591:          AND T DISCOUNTING USES MODIFIER 52 (V7.1 LOGIC AND BE
*S1593:     V7.3 CHANGE NOTES:  COND AND IND BILAT NON-T DISCOUNTING S
*S1594:     LOGIC ALREADY ACCOMODATES BUT VERSIONING ADDED ON THE LOOK
*S1595:     REVERTED V7.1 LOGIC TO NORMAL TABLE COLUMNS CORRESPONDING
*S1596:     EXCEPTION CONTINUES TO BE SINGLE QUARTER V7.0 MODIFIER 52
*S1597:     */
* v7.0 eff. 1/1/06 if not a type T and has a 52 modifier
* v7.1 eff. 4/1/06 if not a type T and has a 73 modifier
* then set - 50%
*S1601: reset ignore50;%V10.3
         XC    112(4,R12),112(R12)
*S1603: if( not line->Bits->QualifiesForDiscount
         L     R2,76(R12)   LINE
         TM    1080(R2),1   QUALIFIESFORDISCOUNT
         JE    AAG01427
         L     R3,76(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAG01427
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         CHI   R3,1
         JNE   AAG01425
         L     R4,76(R12)   LINE
         LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAG01427
AAG01425 L     R2,76(R12)   LINE
         L     R3,540(R2)   PACKAGINGFLAG
         LTR   R3,R3
         JE    AAG01426
         L     R4,76(R12)   LINE
         L     R5,540(R4)   PACKAGINGFLAG
         CHI   R5,3
         JNE   AAG01427
AAG01426 L     R2,76(R12)   LINE
         LA    R14,156(R2)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R11)   2
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JL    AAG01428
*S1604: or line->Bits->IgnoreLine
*S1605: or ( line->DenialFlag=1 and line->ActionFlag<>"1" )
*S1606: or ( line->PackagingFlag<>0 and line->PackagingFlag<>3 )
*S1611: or line->ActionFlag>="2"
*S1613: ) then{
*message "continuing 2 %s", line->Hcpcs;
*S1615: continue;
AAG01427 J     AAG01469
*S1616: }
*S1618: if( not line->Bits->HasNonDiscount
AAG01428 L     R2,76(R12)   LINE
         TM    1081(R2),128   HASNONDISCOUNT
         JE    AAG01431
         L     R3,76(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAG01430
         L     R5,76(R12)   LINE
         TM    1077(R5),32   HAS52MODIFIER
         JNE   AAG01429
         L     R6,76(R12)   LINE
         TM    1077(R6),8   HAS73MODIFIER
         JE    AAG01430
AAG01429 J     AAG01431
AAG01430 J     AAG01468
*S1619: or (
*S1620: line->StatusIndicator<>"T"
*S1621: and ( line->Bits->Has52Modifier or line->Bits->Has73Modifier )
*S1622: ) ) then {
*message "Do discount %s", line->Hcpcs;
*S1626: /* v10.3:  ignore modifier 50 if Independent/Conditional Bilat
*S1627:      * paid under composite (eff 1/1/09) or
*S1628:      * paid under special T logic (eff 1/1/08) or
*S1629:      * paid under special STVX logic (eff 1/1/07) */
*S1630: /*Q:  shouldn't this also apply to conditional bilats?*/
*S1631: /* V16.0.0, COMPREHENSIVE PROCEDURES EXCLUDED FROM MOD 50 DISC
*S1632: if( line->Bits->Has50Modifier
AAG01431 L     R2,76(R12)   LINE
         TM    1077(R2),64   HAS50MODIFIER
         JE    AAG01436
         L     R3,76(R12)   LINE
         TM    1088(R3),2   BILATERALINDEPENDENT
         JNE   AAG01432
         L     R4,76(R12)   LINE
         TM    1088(R4),4   BILATERALCONDITIONAL
         JE    AAG01436
AAG01432 L     R2,76(R12)   LINE
         TM    1077(R2),32   HAS52MODIFIER
         JNE   AAG01436
         L     R3,76(R12)   LINE
         TM    1077(R3),8   HAS73MODIFIER
         JNE   AAG01436
         L     R2,76(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAG01436
         L     R2,76(R12)   LINE
         C     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         JE    AAG01435
         L     R3,76(R12)   LINE
         LA    R14,272(R3)   COMPADJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,89(R11)   00
         ST    R14,64(R13)
         MVC   70(2,R13),78(R11)   2
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG01435
         L     R2,76(R12)   LINE
         TM    1092(R2),32   TPACKAGED
         JNE   AAG01433
         L     R3,76(R12)   LINE
         TM    1092(R3),64   STVPACKAGED
         JE    AAG01434
AAG01433 L     R2,76(R12)   LINE
         LA    R14,128(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),20(R11)   0
         MVC   76(4,R13),24(R11)   1
         L     R15,28(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,128(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,91(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG01435
AAG01434 J     AAG01436
*S1633: and ( line->flags->BilateralIndependent or line->flags->Bilate
*S1634: and not ( line->Bits->Has52Modifier or line->Bits->Has73Modifi
*S1635: and (
*S1636: /*Q test not needed because those lines would not have the com
*S1637: line=claim->PrimaryComprehensive
*S1638: or line->CompAdjFlag<>"00"
*S1639: or (
*S1640: ( line->flags->TPackaged or line->flags->StvPackaged )
*S1641: and StrPartial( line->StatusIndicator, 0, 1 )<>"Q"
*S1642: )
*S1643: ) ) then {
*S1644: ignore50:=1;
AAG01435 MVC   112(4,R12),24(R11)   1
         J     AAG01437
*S1645: }
*S1646: else {
*S1647: ignore50:=0;
AAG01436 XC    112(4,R12),112(R12)   IGNORE50
*S1648: }
*message "Ignore 50 for line %s? %i", line->Hcpcs, ignore50;
*S1651: dkey:= ( line=hiline )? "H" : "N";
AAG01437 L     R2,76(R12)   LINE
         C     R2,80(R12)   HILINE
         JE    AAG01438
         LA    R2,92(R11)   N
         J     AAG01439
AAG01438 LA    R2,93(R11)   H
AAG01439 LA    R14,84(R12)   DKEY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
*S1652: dkey+= ( line->Bits->Has73Modifier or line->Bits->Has52Modifie
         L     R3,76(R12)   LINE
         TM    1077(R3),8   HAS73MODIFIER
         JNE   AAG01440
         L     R4,76(R12)   LINE
         TM    1077(R4),32   HAS52MODIFIER
         JNE   AAG01440
         LA    R2,92(R11)   N
         J     AAG01441
AAG01440 LA    R2,94(R11)   Y
AAG01441 LA    R14,84(R12)   DKEY
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,84(R12)   DKEY
         ST    R14,64(R13)
         XC    74(2,R13),74(R13)
         ST    R2,68(R13)
         MVC   76(2,R13),76(R11)   1
         L     R15,36(R11)   DMNCCAT
         BASR  R14,R15
*S1653: dkey+= ( line->Bits->Has50Modifier and not ignore50 )? "Y" : "
         L     R3,76(R12)   LINE
         TM    1077(R3),64   HAS50MODIFIER
         JE    AAG01442
         L     R15,112(R12)   IGNORE50
         LTR   R15,R15
         JNE   AAG01442
         LA    R2,94(R11)   Y
         J     AAG01443
AAG01442 LA    R2,92(R11)   N
AAG01443 LA    R14,84(R12)   DKEY
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,84(R12)   DKEY
         ST    R14,64(R13)
         XC    74(2,R13),74(R13)
         ST    R2,68(R13)
         MVC   76(2,R13),76(R11)   1
         L     R15,36(R11)   DMNCCAT
         BASR  R14,R15
*message "Key for %s is %s", line->Hcpcs, dkey;
* FIND THE CORRECT FORMULA FROM TABLE IN ROT
* V7.3 ADDED VERSIONING TO THE TABLE PROCESSING
*S1659: loop( rc:=select DataDiscountFormulaTbl using byDiscountkey( d
         MVC   60(2,R13),80(R11)   4
         MVC   62(2,R13),76(R11)   1
         LA    R14,3156(R9)   DATADISCOUNTFORMULATBL
         ST    R14,64(R13)
         L     R14,3156(R9)   DATADISCOUNTFORMULATBL
         LTR   R14,R14
         JE    AAG01444
         L     R14,52(R14)
         LHI   R3,4096
         N     R3,12(R14)
AAG01444 LA    R4,68(R13)
         AHI   R13,88
         ST    R4,60(R13)
         MVC   68(2,R13),82(R11)   9
         LA    R14,84(R12)   DKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,40(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAG01447
         L     R6,64(R13)
         L     R7,68(R13)
         LTR   R3,R3
         JNE   AAG01445
         MVC   60(11,R13),0(R6)
         MVC   71(4,R13),12(R6)
         LA    R6,60(R13)
         AHI   R13,16
AAG01445 AHI   R13,88
         LA    R14,3164(R9)   DATADISCOUNTFORMULATBL
         ST    R14,60(R13)
         ST    R6,64(R13)
         MVC   68(4,R13),44(R11)   9
         L     R15,48(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3176(2,R9),9(R6)
         MVC   3179(3,R9),11(R6)
         AHI   R13,88
         ST    R7,60(R13)
         LA    R14,3184(R9)   DATADISCOUNTFORMULATBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,52(R11)   DMNZSTR
         BASR  R14,R15
         L     R7,60(R13)
         AHI   R13,-88
         MVC   3196(1,R9),14(R6)
         LTR   R3,R3
         JNE   AAG01446
         AHI   R13,-16
AAG01446 EQU   *
AAG01447 ST    R5,108(R12)   RC
AAG01448 L     R2,108(R12)   RC
         CHI   R2,1
         JNL   AAG01467
*S1660: rc<1;
*S1661: rc:=select next DataDiscountFormulaTbl
*S1662: ){
*S1664: if( dkey<>DataDiscountFormulaTbl->DiscountKey ) then break;
         LA    R14,84(R12)   DKEY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3164(R9)   DISCOUNTKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG01449
         J     AAG01467
*S1666: if( base->Version>=DataDiscountFormulaTbl->LoVersion
AAG01449 L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3176(R9),128   LOVERSION
         JE    AAG01450
         LHI   R14,-1
AAG01450 IC    R14,3176(R9)   LOVERSION
         CR    R2,R14
         JL    AAG01461
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         TM    3177(R9),128   HIVERSION
         JE    AAG01451
         LHI   R14,-1
AAG01451 IC    R14,3177(R9)   HIVERSION
         CR    R3,R14
         JH    AAG01461
*S1667: and base->Version<=DataDiscountFormulaTbl->HiVersion ) then {
*S1669: if( line->StatusIndicator="T" ) then {
         L     R2,76(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),76(R11)   1
         L     R15,12(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAG01454
*S1670: dccol:= ( line->flags->BilateralConditional or line->flags->Bi
         L     R4,76(R12)   LINE
         TM    1088(R4),4   BILATERALCONDITIONAL
         JNE   AAG01452
         L     R5,76(R12)   LINE
         TM    1088(R5),2   BILATERALINDEPENDENT
         JNE   AAG01452
         LHI   R2,1
         J     AAG01453
AAG01452 LHI   R2,0
AAG01453 ST    R2,96(R12)   DCCOL
         J     AAG01459
*S1671: }
*S1672: else if( line->flags->BilateralIndependent ) then {
AAG01454 L     R2,76(R12)   LINE
         TM    1088(R2),2   BILATERALINDEPENDENT
         JE    AAG01455
*S1673: dccol:=2;
         MVC   96(4,R12),16(R11)   2
         J     AAG01458
*S1674: }
*S1675: else if( line->flags->BilateralConditional ) then {
AAG01455 L     R2,76(R12)   LINE
         TM    1088(R2),4   BILATERALCONDITIONAL
         JE    AAG01456
* V9.3, EFF. 10/1/08 CONDITIONAL BILATERAL - ALL, RESTORED TO NO BILAT
*S1677: dccol:=3;
         MVC   96(4,R12),56(R11)   3
         J     AAG01457
*S1678: }
*S1679: else dccol:=4;
AAG01456 MVC   96(4,R12),60(R11)   4
*message "Key for %s is %i", line->Hcpcs, dccol;
*TODO: Had to convert here
*S1684: formula := DataDiscountFormulaTbl->DiscountFormula;
AAG01457 EQU   *
AAG01458 EQU   *
AAG01459 XR    R2,R2
         TM    3179(R9),128   DISCOUNTFORMULA
         JE    AAG01460
         LHI   R2,-1
AAG01460 ICM   R2,7,3179(R9)   DISCOUNTFORMULA
         ST    R2,60(R13)
         LA    R14,116(R12)   FORMULA
         ST    R14,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,64(R11)   DMNI2S
         BASR  R14,R15
*S1685: line->DiscountingFactor:=StrPartial( formula, dccol, 1 );
         L     R3,76(R12)   LINE
         LA    R14,128(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R12)   FORMULA
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),96(R12)   DCCOL
         MVC   76(4,R13),24(R11)   1
         L     R15,28(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,128(R12)
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNS2I
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,536(R3)   DISCOUNTINGFACTOR
AAG01461 EQU   *
AAG01462 MVC   60(2,R13),84(R11)   7
         LA    R14,3156(R9)   DATADISCOUNTFORMULATBL
         ST    R14,64(R13)
         L     R14,3156(R9)   DATADISCOUNTFORMULATBL
         LTR   R14,R14
         JE    AAG01463
         L     R14,52(R14)
         LHI   R2,4096
         N     R2,12(R14)
AAG01463 L     R15,40(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JH    AAG01466
         L     R4,64(R13)
         L     R5,68(R13)
         LTR   R2,R2
         JNE   AAG01464
         MVC   60(11,R13),0(R4)
         MVC   71(4,R13),12(R4)
         LA    R4,60(R13)
         AHI   R13,16
AAG01464 AHI   R13,72
         LA    R14,3164(R9)   DATADISCOUNTFORMULATBL
         ST    R14,60(R13)
         ST    R4,64(R13)
         MVC   68(4,R13),44(R11)   9
         L     R15,48(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3176(2,R9),9(R4)
         MVC   3179(3,R9),11(R4)
         AHI   R13,72
         ST    R5,60(R13)
         LA    R14,3184(R9)   DATADISCOUNTFORMULATBL
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   1
         L     R15,52(R11)   DMNZSTR
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-72
         MVC   3196(1,R9),14(R4)
         LTR   R2,R2
         JNE   AAG01465
         AHI   R13,-16
AAG01465 EQU   *
AAG01466 ST    R3,108(R12)   RC
         J     AAG01448
AAG01467 EQU   *
AAG01468 EQU   *
AAG01469 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01424
AAG01470 EQU   *
AAG01471 EQU   *
AAG01472 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAG01406
AAG01473 EQU   *
AAG01474 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,72(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC084
**************************
GAPCC084 CSECT
GAPCC084 AMODE ANY
GAPCC084 RMODE ANY
*XREF - GAPCC084 GAPC.PackageTokenCharges
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (12 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Integer len 4 (tokenChargeFound)
*        0072(R12)-> Integer len 4 (validChargeFound)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01503
         DC    A(DMNATFD) @00000
         DC    A(DMNSCMP) @00004
         DC    F'1' @00008
         DC    F'3' @00012
         DC    H'10'  0 10 @00016
         DC    H'1120'  4 96 @00018
         DC    H'1'  0 1 @00020
         DC    H'5'  0 5 @00022
         DC    CL1'T' @00024
         DC    CL1'S' @00025
         DC    CL5'10000' @00026
         DC    CL5'69999' @00031
AAG01503 XC    64(12,R12),64(R12)
*message "Discount for %s is %i", line->Hcpcs, line->DiscountingFactor
* V5.2, PACKAGING FLAG VALUE 3 LOGIC
*S1703: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG01506 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG01519
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG01519
*S1705: if( line->Bits->FoundHcpcs
         L     R2,64(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAG01516
         L     R3,64(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAG01508
         L     R5,64(R12)   LINE
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,25(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAG01507
         L     R7,64(R12)   LINE
         LA    R14,144(R7)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   10000
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JL    AAG01507
         L     R2,64(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,31(R11)   69999
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNH   AAG01508
AAG01507 J     AAG01516
*S1706: and (
*S1707: line->StatusIndicator="T"
*S1708: or (
*S1709: line->StatusIndicator="S"
*S1710: and line->Hcpcs >= "10000"
*S1711: and line->Hcpcs <= "69999"
*S1712: )
*S1713: ) ) then {
*S1715: if( -1 < line->LineCharges ) then {
AAG01508 L     R2,64(R12)   LINE
         L     R3,564(R2)   LINECHARGES
         CHI   R3,-1
         JNH   AAG01515
*S1716: if( line->LineCharges < 101 ) then {
         L     R4,64(R12)   LINE
         L     R5,564(R4)   LINECHARGES
         CHI   R5,101
         JNL   AAG01511
*S1717: if( not tokenChargeFound ) then {
         L     R15,68(R12)   TOKENCHARGEFOUND
         LTR   R15,R15
         JNE   AAG01509
*S1718: tokenChargeFound:=1;
         MVC   68(4,R12),8(R11)   1
*S1719: }
*S1720: if( validChargeFound ) then {
AAG01509 L     R15,72(R12)   VALIDCHARGEFOUND
         LTR   R15,R15
         JE    AAG01510
*S1721: break;
         J     AAG01519
AAG01510 J     AAG01514
*S1722: }
*S1723: }
*S1724: else{
*S1725: if( not validChargeFound ) then {
AAG01511 L     R15,72(R12)   VALIDCHARGEFOUND
         LTR   R15,R15
         JNE   AAG01512
*S1726: validChargeFound:=1;
         MVC   72(4,R12),8(R11)   1
*S1727: }
*S1728: if( tokenChargeFound ) then {
AAG01512 L     R15,68(R12)   TOKENCHARGEFOUND
         LTR   R15,R15
         JE    AAG01513
*S1729: break;
         J     AAG01519
AAG01513 EQU   *
AAG01514 EQU   *
AAG01515 EQU   *
AAG01516 EQU   *
AAG01517 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG01518
         L     R2,8(R2)
AAG01518 ST    R2,4(R9)   ITEM
         J     AAG01506
*S1730: }
*S1731: }
*S1732: }
*S1734: }
*S1736: }
* BOTH SIGNIFICANT AND TOKEN CHARGES ARE PRESENT, MARK TOKEN CHARGES W
*S1739: if( validChargeFound
AAG01519 L     R15,72(R12)   VALIDCHARGEFOUND
         LTR   R15,R15
         JE    AAG01527
         L     R15,68(R12)   TOKENCHARGEFOUND
         LTR   R15,R15
         JE    AAG01527
*S1740: and tokenChargeFound ) then {
*S1742: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG01520 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG01526
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG01526
*S1743: if( line->Bits->FoundHcpcs
         L     R2,64(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAG01523
         L     R3,64(R12)   LINE
         L     R4,564(R3)   LINECHARGES
         CHI   R4,-1
         JNH   AAG01523
         L     R2,64(R12)   LINE
         L     R3,564(R2)   LINECHARGES
         CHI   R3,101
         JNL   AAG01523
         L     R2,64(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG01522
         L     R4,64(R12)   LINE
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,25(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAG01521
         L     R6,64(R12)   LINE
         LA    R14,144(R6)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   10000
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JL    AAG01521
         L     R2,64(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,31(R11)   69999
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNH   AAG01522
AAG01521 J     AAG01523
*S1744: and -1 < line->LineCharges
*S1745: and line->LineCharges < 101
*S1746: and (
*S1747: line->StatusIndicator="T"
*S1748: or (
*S1749: line->StatusIndicator="S"
*S1750: and line->Hcpcs >= "10000"
*S1751: and line->Hcpcs <= "69999"
*S1752: )
*S1753: ) ) then {
*S1754: line->PackagingFlag:=3;
AAG01522 L     R2,64(R12)   LINE
         MVC   540(4,R2),12(R11)   3
AAG01523 EQU   *
AAG01524 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG01525
         L     R2,8(R2)
AAG01525 ST    R2,4(R9)   ITEM
         J     AAG01520
AAG01526 EQU   *
AAG01527 EQU   *
AAG01528 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC085
**************************
GAPCC085 CSECT
GAPCC085 AMODE ANY
GAPCC085 RMODE ANY
*XREF - GAPCC085 GAPC.MakeDayArray
*  R11 + 0000 Literals        (184 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 628 (previousDay)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> Integer len 4 (isPhpClaim)
*        0084(R12)-> Integer len 4 (dayOffset)
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01603
         DC    A(DMNLONG) @00000
         DC    F'2' @00004
         DC    A(DMNBTWNX) @00008
         DC    F'628' @00012
         DC    A(DMNNEW) @00016
         DC    A(DMNINIT) @00020
         DC    A(DMNSCMP) @00024
         DC    F'1' @00028
         DC    A(DMNATFD) @00032
         DC    F'16' @00036
         DC    A(V40LJMP) @00040
         DC    A(DMNDADDX) @00044
         DC    F'7' @00048
         DC    XL16'042B1003000E04031C0004031C001C00' @00052
         DC    XL16'040300001003000E04031C0004031C00'
         DC    XL16'1C00040300001006000E04031C000403'
         DC    XL12'1C001C000403000004070000'
         DC    H'2'  0 2 @00112
         DC    H'10'  0 10 @00114
         DC    H'1120'  4 96 @00116
         DC    H'3'  0 3 @00118
         DC    CL2'13' @00120
         DC    CL2'76' @00122
         DC    CL3'133' @00124
         DC    CL3'134' @00127
         DC    CL3'137' @00130
         DC    CL3'13G' @00133
         DC    CL3'13H' @00136
         DC    CL3'13I' @00139
         DC    CL3'13J' @00142
         DC    CL3'13L' @00145
         DC    CL3'13M' @00148
         DC    CL3'13Q' @00151
         DC    CL3'763' @00154
         DC    CL3'764' @00157
         DC    CL3'767' @00160
         DC    CL3'76G' @00163
         DC    CL3'76H' @00166
         DC    CL3'76I' @00169
         DC    CL3'76J' @00172
         DC    CL3'76L' @00175
         DC    CL3'76M' @00178
         DC    CL3'76Q' @00181
AAG01603 XC    64(28,R12),64(R12)
* GROUP LINES BY DAY
*base->DaySpan :=DAYS_BETWEEN( base->LowestDate, base->HighestDate )+1
*S1770: if( not base->DaySpan ) then {
         L     R15,1936(R9)   DAYSPAN
         LTR   R15,R15
         JNE   AAG01606
*S1771: base->DaySpan :=DateBetween(base->FromDate,base->ThruDate ,2)+
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),4(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R2,60(R13)
         AHI   R2,1
         ST    R2,1936(R9)   DAYSPAN
*S1772: }
*S1773: base->DayArray :=new struct DayStruct[base->DaySpan] using apc
AAG01606 LR    R2,R9
         AHI   R2,4236
         MVC   60(4,R13),1936(R9)   DAYSPAN
         MVC   64(4,R13),12(R11)   628
         ST    R2,68(R13)
         L     R15,16(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LR    R4,R3
         L     R5,1936(R9)   DAYSPAN
AAG01607 LA    R14,52(R11)
         ST    R14,60(R13)
         ST    R2,64(R13)
         ST    R4,68(R13)
         L     R15,20(R11)   DMNINIT
         BASR  R14,R15
         LA    R4,628(R4)
         BRCT  R5,AAG01607
         ST    R3,64(R9)   DAYARRAY
*S1775: if( ( claim->Bits->HasCc41 and base->BillType="13" )
         TM    3000(R9),32   HASCC41
         JE    AAG01608
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),112(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JE    AAG01609
AAG01608 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,122(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),112(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG01610
*S1776: or base->BillType="76"
*S1777: ) then {
*S1778: isPhpClaim:=1;
AAG01609 MVC   80(4,R12),28(R11)   1
*S1779: }
*S1781: loop( item:=base->lines->first; item and (line:=&item->line, l
AAG01610 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG01611 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG01737
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),114(R11)   10
         MVC   66(2,R13),116(R11)   1120
         L     R15,32(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG01737
*S1783: /*V8.0 added dayindex to ignored lines - see also linedates ch
*S1784:   to account for all line dates that are outside the from/thro
*S1785: if( line->ServiceDate < base->LowestDate
         L     R2,72(R12)   LINE
         L     R3,60(R2)   SERVICEDATE
         CL    R3,108(R9)   LOWESTDATE
         JL    AAG01612
         L     R4,72(R12)   LINE
         L     R5,60(R4)   SERVICEDATE
         CL    R5,112(R9)   HIGHESTDATE
         JNH   AAG01613
*S1786: or line->ServiceDate > base->HighestDate ) then {
*S1787: /*V8.0 - added check for dates outside of day array; exit is u
*S1788: base->OutClm_ClaimFlag:=1;
AAG01612 MVC   1884(4,R9),28(R11)   1
*S1789: { return_code:=Error->RC_BadLineDate ; goto exit_now; };/*no e
         MVC   3016(4,R9),36(R11)   16
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,40(R11)   V40LJMP
         BASR  R14,R15
*S1790: }
*S1792: if( line->ServiceDate ) then {/*V8.0 made to ask if date, was
AAG01613 L     R2,72(R12)   LINE
         L     R15,60(R2)   SERVICEDATE
         LTR   R15,R15
         JE    AAG01734
*i    :=DAYS_BETWEEN( base->LowestDate, line->ServiceDate ); % CALCULA
*S1795: i :=DateBetween(base->FromDate,line->ServiceDate ,2);% CALCULA
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R3,72(R12)   LINE
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),4(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,76(R12)   I
*S1796: line->DayIndex :=i;
         L     R5,72(R12)   LINE
         ST    R4,448(R5)   DAYINDEX
*S1797: day :=&base->DayArray[i];% REFERENCE CURRENT DAY OBJECT IN DAY
         L     R6,64(R9)   DAYARRAY
         L     R7,76(R12)   I
         MHI   R7,628
         AR    R6,R7
         ST    R6,64(R12)   DAY
*S1799: if( not day->ServiceDate ) then {
         L     R8,64(R12)   DAY
         L     R15,24(R8)   SERVICEDATE
         LTR   R15,R15
         JNE   AAG01614
*S1800: day->ServiceDate:=line->ServiceDate;
         L     R2,64(R12)   DAY
         L     R3,72(R12)   LINE
         L     R5,60(R3)   SERVICEDATE
         ST    R5,24(R2)   SERVICEDATE
*S1801: }
*S1803: if( line->Bits->IgnoreLine ) then {
AAG01614 L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JE    AAG01617
* LINK LINES INTO IGNORED DAY LIST
*S1806: if( day->lastDaysItemsIgnored ) then
         L     R3,64(R12)   DAY
         L     R15,20(R3)   LASTDAYSITEMSIGNORED
         LTR   R15,R15
         JE    AAG01615
*S1807: day->lastDaysItemsIgnored->nextSameDayIgnored :=line;
         L     R4,64(R12)   DAY
         L     R5,20(R4)   LASTDAYSITEMSIGNORED
         MVC   4(4,R5),72(R12)   LINE
         J     AAG01616
*S1808: else day->firstDaysItemsIgnored :=line;
AAG01615 L     R2,64(R12)   DAY
         MVC   16(4,R2),72(R12)   LINE
*S1809: day->lastDaysItemsIgnored :=line;
AAG01616 L     R2,64(R12)   DAY
         MVC   20(4,R2),72(R12)   LINE
         J     AAG01733
*S1811: }
*S1812: else {
* LINK LINES INTO UNIGNORED DAY LIST
*S1815: if( day->lastDaysItems ) then
AAG01617 L     R2,64(R12)   DAY
         L     R15,12(R2)   LASTDAYSITEMS
         LTR   R15,R15
         JE    AAG01618
*S1816: day->lastDaysItems->nextSameDay :=line;
         L     R3,64(R12)   DAY
         L     R4,12(R3)   LASTDAYSITEMS
         MVC   0(4,R4),72(R12)   LINE
         J     AAG01619
*S1817: else day->firstDaysItems :=line;
AAG01618 L     R2,64(R12)   DAY
         MVC   8(4,R2),72(R12)   LINE
*S1818: day->lastDaysItems :=line;
AAG01619 L     R2,64(R12)   DAY
         MVC   12(4,R2),72(R12)   LINE
* LOAD DAY-LEVEL FLAGS
*S1821: /*had composite lookups here - now separate lookup just prior
*S1822: claim->Bits->QualifiesForDiscount |=line->Bits->QualifiesForDi
         L     R3,72(R12)   LINE
         TM    3003(R9),32   QUALIFIESFORDISCOUNT
         JNE   AAG01620
         XR    R4,R4
         J     AAG01621
AAG01620 LHI   R4,1
AAG01621 EQU   *
AAG01622 TM    1080(R3),1   QUALIFIESFORDISCOUNT
         JNE   AAG01623
         XR    R5,R5
         J     AAG01624
AAG01623 LHI   R5,1
AAG01624 ST    R5,88(R12)
         O     R4,88(R12)
         LTR   R4,R4
         JNE   AAG01625
         NI    3003(R9),223   QUALIFIESFORDISCOUNT
         J     AAG01626
AAG01625 OI    3003(R9),32   QUALIFIESFORDISCOUNT
*S1823: day->Bits->QualifiesForDiscount |=line->Bits->QualifiesForDisc
AAG01626 L     R5,64(R12)   DAY
         L     R6,72(R12)   LINE
         TM    624(R5),2   QUALIFIESFORDISCOUNT
         JNE   AAG01627
         XR    R7,R7
         J     AAG01628
AAG01627 LHI   R7,1
AAG01628 EQU   *
AAG01629 TM    1080(R6),1   QUALIFIESFORDISCOUNT
         JNE   AAG01630
         XR    R8,R8
         J     AAG01631
AAG01630 LHI   R8,1
AAG01631 ST    R8,88(R12)
         O     R7,88(R12)
         LTR   R7,R7
         JNE   AAG01632
         NI    624(R5),253   QUALIFIESFORDISCOUNT
         J     AAG01633
AAG01632 OI    624(R5),2   QUALIFIESFORDISCOUNT
*S1824: day->Bits->HadTypeSTX |=line->Bits->HadTypeSTX;
AAG01633 L     R8,64(R12)   DAY
         L     R2,72(R12)   LINE
         TM    624(R8),1   HADTYPESTX
         JNE   AAG01634
         XR    R3,R3
         J     AAG01635
AAG01634 LHI   R3,1
AAG01635 EQU   *
AAG01636 TM    1081(R2),2   HADTYPESTX
         JNE   AAG01637
         XR    R4,R4
         J     AAG01638
AAG01637 LHI   R4,1
AAG01638 ST    R4,88(R12)
         O     R3,88(R12)
         LTR   R3,R3
         JNE   AAG01639
         NI    624(R8),254   HADTYPESTX
         J     AAG01640
AAG01639 OI    624(R8),1   HADTYPESTX
*S1825: day->Bits->HasSepProc |=line->Bits->HasSepProc;
AAG01640 L     R4,64(R12)   DAY
         L     R5,72(R12)   LINE
         TM    625(R4),128   HASSEPPROC
         JNE   AAG01641
         XR    R6,R6
         J     AAG01642
AAG01641 LHI   R6,1
AAG01642 EQU   *
AAG01643 TM    1081(R5),1   HASSEPPROC
         JNE   AAG01644
         XR    R7,R7
         J     AAG01645
AAG01644 LHI   R7,1
AAG01645 ST    R7,88(R12)
         O     R6,88(R12)
         LTR   R6,R6
         JNE   AAG01646
         NI    625(R4),127   HASSEPPROC
         J     AAG01647
AAG01646 OI    625(R4),128   HASSEPPROC
*S1826: day->Bits->HasNonSepProc |=line->Bits->HasNonSepProc;
AAG01647 L     R7,64(R12)   DAY
         L     R8,72(R12)   LINE
         TM    625(R7),64   HASNONSEPPROC
         JNE   AAG01648
         XR    R2,R2
         J     AAG01649
AAG01648 LHI   R2,1
AAG01649 EQU   *
AAG01650 TM    1082(R8),128   HASNONSEPPROC
         JNE   AAG01651
         XR    R3,R3
         J     AAG01652
AAG01651 LHI   R3,1
AAG01652 ST    R3,88(R12)
         O     R2,88(R12)
         LTR   R2,R2
         JNE   AAG01653
         NI    625(R7),191   HASNONSEPPROC
         J     AAG01654
AAG01653 OI    625(R7),64   HASNONSEPPROC
*S1827: day->Bits->HasTypeT |=line->Bits->HasTypeT;
AAG01654 L     R3,64(R12)   DAY
         L     R4,72(R12)   LINE
         TM    625(R3),32   HASTYPET
         JNE   AAG01655
         XR    R5,R5
         J     AAG01656
AAG01655 LHI   R5,1
AAG01656 EQU   *
AAG01657 TM    1082(R4),32   HASTYPET
         JNE   AAG01658
         XR    R6,R6
         J     AAG01659
AAG01658 LHI   R6,1
AAG01659 ST    R6,88(R12)
         O     R5,88(R12)
         LTR   R5,R5
         JNE   AAG01660
         NI    625(R3),223   HASTYPET
         J     AAG01661
AAG01660 OI    625(R3),32   HASTYPET
*S1828: day->Bits->ERVisit |=line->Bits->ERVisit;
AAG01661 L     R6,64(R12)   DAY
         L     R7,72(R12)   LINE
         TM    625(R6),8   ERVISIT
         JNE   AAG01662
         XR    R8,R8
         J     AAG01663
AAG01662 LHI   R8,1
AAG01663 EQU   *
AAG01664 TM    1082(R7),8   ERVISIT
         JNE   AAG01665
         XR    R2,R2
         J     AAG01666
AAG01665 LHI   R2,1
AAG01666 ST    R2,88(R12)
         O     R8,88(R12)
         LTR   R8,R8
         JNE   AAG01667
         NI    625(R6),247   ERVISIT
         J     AAG01668
AAG01667 OI    625(R6),8   ERVISIT
*S1829: day->Bits->HasBloodProd |=line->flags->BloodProduct;/*V6.2*/
AAG01668 L     R2,64(R12)   DAY
         L     R3,72(R12)   LINE
         TM    626(R2),128   HASBLOODPROD
         JNE   AAG01669
         XR    R4,R4
         J     AAG01670
AAG01669 LHI   R4,1
AAG01670 EQU   *
AAG01671 TM    1090(R3),2   BLOODPRODUCT
         JNE   AAG01672
         XR    R5,R5
         J     AAG01673
AAG01672 LHI   R5,1
AAG01673 ST    R5,88(R12)
         O     R4,88(R12)
         LTR   R4,R4
         JNE   AAG01674
         NI    626(R2),127   HASBLOODPROD
         J     AAG01675
AAG01674 OI    626(R2),128   HASBLOODPROD
*S1830: day->Bits->HasObs2 |=line->Bits->HasObs2;/*we need a flag on t
AAG01675 L     R5,64(R12)   DAY
         L     R6,72(R12)   LINE
         TM    625(R5),16   HASOBS2
         JNE   AAG01676
         XR    R7,R7
         J     AAG01677
AAG01676 LHI   R7,1
AAG01677 EQU   *
AAG01678 TM    1082(R6),16   HASOBS2
         JNE   AAG01679
         XR    R8,R8
         J     AAG01680
AAG01679 LHI   R8,1
AAG01680 ST    R8,88(R12)
         O     R7,88(R12)
         LTR   R7,R7
         JNE   AAG01681
         NI    625(R5),239   HASOBS2
         J     AAG01682
AAG01681 OI    625(R5),16   HASOBS2
*S1831: day->Bits->HasDirectAdmObs |=line->Bits->HasDirectAdmObs;
AAG01682 L     R8,64(R12)   DAY
         L     R2,72(R12)   LINE
         TM    625(R8),2   HASDIRECTADMOBS
         JNE   AAG01683
         XR    R3,R3
         J     AAG01684
AAG01683 LHI   R3,1
AAG01684 EQU   *
AAG01685 TM    1082(R2),2   HASDIRECTADMOBS
         JNE   AAG01686
         XR    R4,R4
         J     AAG01687
AAG01686 LHI   R4,1
AAG01687 ST    R4,88(R12)
         O     R3,88(R12)
         LTR   R3,R3
         JNE   AAG01688
         NI    625(R8),253   HASDIRECTADMOBS
         J     AAG01689
AAG01688 OI    625(R8),2   HASDIRECTADMOBS
*S1832: day->Bits->Has59Modifier |=line->Bits->Has59Modifier;/*V12.0,
AAG01689 L     R4,64(R12)   DAY
         L     R5,72(R12)   LINE
         TM    626(R4),16   HAS59MODIFIER
         JNE   AAG01690
         XR    R6,R6
         J     AAG01691
AAG01690 LHI   R6,1
AAG01691 EQU   *
AAG01692 TM    1077(R5),16   HAS59MODIFIER
         JNE   AAG01693
         XR    R7,R7
         J     AAG01694
AAG01693 LHI   R7,1
AAG01694 ST    R7,88(R12)
         O     R6,88(R12)
         LTR   R6,R6
         JNE   AAG01695
         NI    626(R4),239   HAS59MODIFIER
         J     AAG01696
AAG01695 OI    626(R4),16   HAS59MODIFIER
*S1833: day->Bits->HasPTModifier |=line->Bits->HasPTModifier;/*V12.2,
AAG01696 L     R7,64(R12)   DAY
         L     R8,72(R12)   LINE
         TM    626(R7),2   HASPTMODIFIER
         JNE   AAG01697
         XR    R2,R2
         J     AAG01698
AAG01697 LHI   R2,1
AAG01698 EQU   *
AAG01699 TM    1078(R8),2   HASPTMODIFIER
         JNE   AAG01700
         XR    R3,R3
         J     AAG01701
AAG01700 LHI   R3,1
AAG01701 ST    R3,88(R12)
         O     R2,88(R12)
         LTR   R2,R2
         JNE   AAG01702
         NI    626(R7),253   HASPTMODIFIER
         J     AAG01703
AAG01702 OI    626(R7),2   HASPTMODIFIER
*S1834: day->Bits->NucRadFb |=line->Bits->NucRadFb;/*V12.1 EFFECTIVE 2
AAG01703 L     R3,64(R12)   DAY
         L     R4,72(R12)   LINE
         TM    626(R3),8   NUCRADFB
         JNE   AAG01704
         XR    R5,R5
         J     AAG01705
AAG01704 LHI   R5,1
AAG01705 EQU   *
AAG01706 TM    1085(R4),128   NUCRADFB
         JNE   AAG01707
         XR    R6,R6
         J     AAG01708
AAG01707 LHI   R6,1
AAG01708 ST    R6,88(R12)
         O     R5,88(R12)
         LTR   R5,R5
         JNE   AAG01709
         NI    626(R3),247   NUCRADFB
         J     AAG01710
AAG01709 OI    626(R3),8   NUCRADFB
*S1835: day->Bits->CriticalCareAncillary |=line->flags->CriticalCareAn
AAG01710 L     R6,64(R12)   DAY
         L     R7,72(R12)   LINE
         TM    626(R6),4   CRITICALCAREANCILLARY
         JNE   AAG01711
         XR    R8,R8
         J     AAG01712
AAG01711 LHI   R8,1
AAG01712 EQU   *
AAG01713 TM    1092(R7),128   CRITICALCAREANCILLARY
         JNE   AAG01714
         XR    R2,R2
         J     AAG01715
AAG01714 LHI   R2,1
AAG01715 ST    R2,88(R12)
         O     R8,88(R12)
         LTR   R8,R8
         JNE   AAG01716
         NI    626(R6),251   CRITICALCAREANCILLARY
         J     AAG01717
AAG01716 OI    626(R6),4   CRITICALCAREANCILLARY
*S1836: day->Bits->HasXModifier |=line->Bits->HasXModifier;% V18.2
AAG01717 L     R2,64(R12)   DAY
         L     R3,72(R12)   LINE
         TM    627(R2),64   HASXMODIFIER
         JNE   AAG01718
         XR    R4,R4
         J     AAG01719
AAG01718 LHI   R4,1
AAG01719 EQU   *
AAG01720 TM    1079(R3),2   HASXMODIFIER
         JNE   AAG01721
         XR    R5,R5
         J     AAG01722
AAG01721 LHI   R5,1
AAG01722 ST    R5,88(R12)
         O     R4,88(R12)
         LTR   R4,R4
         JNE   AAG01723
         NI    627(R2),191   HASXMODIFIER
         J     AAG01724
AAG01723 OI    627(R2),64   HASXMODIFIER
*S1838: if( isPhpClaim ) then {
AAG01724 L     R15,80(R12)   ISPHPCLAIM
         LTR   R15,R15
         JE    AAG01732
*S1839: day->Bits->PhpServiceOnDay |=line->flags->PhService;
         L     R5,64(R12)   DAY
         L     R6,72(R12)   LINE
         TM    627(R5),32   PHPSERVICEONDAY
         JNE   AAG01725
         XR    R7,R7
         J     AAG01726
AAG01725 LHI   R7,1
AAG01726 EQU   *
AAG01727 TM    1093(R6),2   PHSERVICE
         JNE   AAG01728
         XR    R8,R8
         J     AAG01729
AAG01728 LHI   R8,1
AAG01729 ST    R8,88(R12)
         O     R7,88(R12)
         LTR   R7,R7
         JNE   AAG01730
         NI    627(R5),223   PHPSERVICEONDAY
         J     AAG01731
AAG01730 OI    627(R5),32   PHPSERVICEONDAY
AAG01731 EQU   *
AAG01732 EQU   *
AAG01733 EQU   *
AAG01734 EQU   *
AAG01735 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG01736
         L     R2,8(R2)
AAG01736 ST    R2,4(R9)   ITEM
         J     AAG01611
*S1840: }
*S1847: }
*S1849: }
*S1851: }
* LINK UNIGNORED DAYS INTO VISITS LIST
*S1854: for( i:=0 until base->DaySpan-1 ){
AAG01737 XC    76(4,R12),76(R12)   I
AAG01738 L     R2,1936(R9)   DAYSPAN
         AHI   R2,-1
         C     R2,76(R12)   I
         JL    AAG01752
*S1856: day := &base->DayArray[i];
         L     R3,64(R9)   DAYARRAY
         L     R4,76(R12)   I
         MHI   R4,628
         AR    R3,R4
         ST    R3,64(R12)   DAY
*S1857: if( day->firstDaysItems ) then {
         L     R5,64(R12)   DAY
         L     R15,8(R5)   FIRSTDAYSITEMS
         LTR   R15,R15
         JE    AAG01750
* LINK THE FIRST DAY INTO THE BASE OBJECT, CHAIN ALL FOLLOWING DAYS TO
*S1860: if( previousDay ) then {
         L     R15,68(R12)   PREVIOUSDAY
         LTR   R15,R15
         JE    AAG01739
*S1861: previousDay->nextVisit:=day;
         L     R6,68(R12)   PREVIOUSDAY
         ST    R3,0(R6)   NEXTVISIT
         J     AAG01740
*S1862: }
*S1863: else base->firstVisit:=day;
AAG01739 MVC   60(4,R9),64(R12)   DAY
*S1864: previousDay:=day;
AAG01740 MVC   68(4,R12),64(R12)   DAY
* PHP LOGIC REQUIRES WEEKLY GROUPINGS OF SERVICES
*S1867: if( isPhpClaim ) then {
         L     R15,80(R12)   ISPHPCLAIM
         LTR   R15,R15
         JE    AAG01749
* V20.2 Effective July 2019 PHP QA input requires shifting of the from
* We do this here so that the entire claim processes on the shift.
*S1870: if (claim->HasQAValueCode
         L     R15,2980(R9)   HASQAVALUECODE
         LTR   R15,R15
         JE    AAG01744
         L     R2,1868(R9)   VERSION
         CHI   R2,76
         JL    AAG01744
         TM    3000(R9),32   HASCC41
         JE    AAG01742
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,124(R11)   133
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,127(R11)   134
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)   137
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,133(R11)   13G
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,136(R11)   13H
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,139(R11)   13I
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,142(R11)   13J
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,145(R11)   13L
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,148(R11)   13M
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01741
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,151(R11)   13Q
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG01742
AAG01741 J     AAG01743
AAG01742 LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,154(R11)   763
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,157(R11)   764
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,160(R11)   767
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,163(R11)   76G
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,166(R11)   76H
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,169(R11)   76I
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,172(R11)   76J
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,175(R11)   76L
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,178(R11)   76M
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAG01743
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,181(R11)   76Q
         ST    R14,64(R13)
         MVC   70(2,R13),118(R11)   3
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAG01744
*S1871: and base->Version >= 76
*S1872: and ((claim->Bits->HasCc41
*S1873: and (base->FullBillType="133"
*S1874: or base->FullBillType="134"
*S1875: or base->FullBillType="137"
*S1876: or base->FullBillType="13G"
*S1877: or base->FullBillType="13H"
*S1878: or base->FullBillType="13I"
*S1879: or base->FullBillType="13J"
*S1880: or base->FullBillType="13L"
*S1881: or base->FullBillType="13M"
*S1882: or base->FullBillType="13Q"))
*S1883: or base->FullBillType="763"
*S1884: or base->FullBillType="764"
*S1885: or base->FullBillType="767"
*S1886: or base->FullBillType="76G"
*S1887: or base->FullBillType="76H"
*S1888: or base->FullBillType="76I"
*S1889: or base->FullBillType="76J"
*S1890: or base->FullBillType="76L"
*S1891: or base->FullBillType="76M"
*S1892: or base->FullBillType="76Q")) then {
*S1893: claim -> IsAdjustFromDate := 1;
AAG01743 MVC   2996(4,R9),28(R11)   1
*S1894: base -> PHPFromDate := DateAdd(base->FromDate,-(claim->QADays)
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         XR    R2,R2
         S     R2,2984(R9)   QADAYS
         ST    R2,72(R13)
         MVC   60(4,R13),4(R11)   2
         L     R15,44(R11)   DMNDADDX
         BASR  R14,R15
         LD    F2,64(R13)
         MVC   60(4,R13),28(R11)   1
         STD   F2,64(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         L     R3,72(R13)
         ST    R3,100(R9)   PHPFROMDATE
*S1895: dayOffset := DateBetween(base->PHPFromDate,day->firstDaysItems
         XC    60(4,R13),60(R13)
         ST    R3,72(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F4,64(R13)
         STD   F4,64(R13)
         L     R4,64(R12)   DAY
         L     R5,8(R4)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R5)   SERVICEDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F6,64(R13)
         AHI   R13,-80
         STD   F6,72(R13)
         MVC   80(4,R13),4(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R6,60(R13)
         ST    R6,84(R12)   DAYOFFSET
         J     AAG01745
*S1896: }
*S1897: else {
*S1898: dayOffset := DateBetween(base->FromDate,day->firstDaysItems->S
AAG01744 XC    60(4,R13),60(R13)
         MVC   72(4,R13),96(R9)   FROMDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R2,64(R12)   DAY
         L     R3,8(R2)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R3)   SERVICEDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),4(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R4,60(R13)
         ST    R4,84(R12)   DAYOFFSET
*S1899: }
*S1900: day->WeekIndex := ( dayOffset ) ? ( dayOffset / 7 ) : 0;
AAG01745 L     R2,64(R12)   DAY
         L     R15,84(R12)   DAYOFFSET
         LTR   R15,R15
         JNE   AAG01746
         LHI   R3,0
         J     AAG01748
AAG01746 XR    R14,R14
         L     R15,84(R12)   DAYOFFSET
         LTR   R15,R15
         JNL   AAG01747
         LHI   R14,-1
AAG01747 D     R14,48(R11)   7
         LR    R3,R15
AAG01748 ST    R3,28(R2)   WEEKINDEX
*S1901: }
* UPDATE THE NUMBER OF DAYS WITH SERVICES ON THE CLAIM (USED IN DISPOS
*S1903: base->DayCount+=1;
AAG01749 LHI   R2,1
         A     R2,1940(R9)   DAYCOUNT
         ST    R2,1940(R9)   DAYCOUNT
AAG01750 EQU   *
AAG01751 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAG01738
*S1905: }
*S1907: }
*S1909: claim->Bits->DayArrSetUp:=1;/*flag this for later indexing via
AAG01752 OI    3005(R9),16   DAYARRSETUP
AAG01753 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC086
**************************
GAPCC086 CSECT
GAPCC086 AMODE ANY
GAPCC086 RMODE ANY
*XREF - GAPCC086 GAPC.MakeWeekArray
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (20 bytes)
*        0064(R12)-> reference to Struct len 44 (week)
*        0068(R12)-> reference to Struct len 44 (previousWeek)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> Date (adjustedFromDate)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01803
         DC    A(DMNLONG) @00000
         DC    F'5' @00004
         DC    A(DMNBTWNX) @00008
         DC    F'44' @00012
         DC    A(DMNNEW) @00016
         DC    F'6' @00020
         DC    F'2' @00024
         DC    A(DMNDADDX) @00028
         DC    F'1' @00032
AAG01803 XC    64(20,R12),64(R12)
*S1920: adjustedFromDate := (claim->IsAdjustFromDate) ? base->PHPFromD
         L     R15,2996(R9)   ISADJUSTFROMDATE
         LTR   R15,R15
         JNE   AAG01806
         L     R2,96(R9)   FROMDATE
         J     AAG01807
AAG01806 L     R2,100(R9)   PHPFROMDATE
AAG01807 ST    R2,80(R12)   ADJUSTEDFROMDATE
*S1921: base->WeekCount :=DateBetween(adjustedFromDate,base->ThruDate
         XC    60(4,R13),60(R13)
         ST    R2,72(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),104(R9)   THRUDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),4(R11)   5
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R3,1
         ST    R3,1944(R9)   WEEKCOUNT
*S1922: base->WeekArray :=new struct WeekStruct[base->WeekCount] using
         LR    R4,R9
         AHI   R4,4236
         MVC   60(4,R13),1944(R9)   WEEKCOUNT
         MVC   64(4,R13),12(R11)   44
         ST    R4,68(R13)
         L     R15,16(R11)   DMNNEW
         BASR  R14,R15
         L     R5,60(R13)
         LR    R6,R5
         L     R7,1944(R9)   WEEKCOUNT
AAG01808 XC    0(44,R6),0(R6)
         LA    R6,44(R6)
         BRCT  R7,AAG01808
         ST    R5,72(R9)   WEEKARRAY
*S1924: for(i:=0 until base->WeekCount-1){
         XC    76(4,R12),76(R12)   I
AAG01809 L     R2,1944(R9)   WEEKCOUNT
         AHI   R2,-1
         C     R2,76(R12)   I
         JL    AAG01828
*S1925: week :=&base->WeekArray[i];% REFERENCE CURRENT WEEK OBJECT
         L     R3,72(R9)   WEEKARRAY
         L     R4,76(R12)   I
         MHI   R4,44
         AR    R3,R4
         ST    R3,64(R12)   WEEK
*S1926: week->WeekIndex :=i;% 0-BASED INDEX OF WEEK
         L     R5,64(R12)   WEEK
         L     R6,76(R12)   I
         ST    R6,16(R5)   WEEKINDEX
* We need to keep track of two different kinds of days. Calender and p
* PHP requires that we calculate dangling days (i.e weeks where we hav
* Some logic requires that a week has a procedure (valid or not) on it
* FIRST WEEK THAT ISNT ALSO THE LAST WEEK
*S1933: if (i=0 and i != base->WeekCount-1) then {
         L     R7,76(R12)   I
         LTR   R7,R7
         JNE   AAG01810
         C     R2,76(R12)   I
         JE    AAG01810
*S1934: week->StartCalDate := adjustedFromDate;
         L     R2,64(R12)   WEEK
         L     R3,80(R12)   ADJUSTEDFROMDATE
         ST    R3,36(R2)   STARTCALDATE
*S1935: week->EndCalDate := DateAdd(week->StartCalDate,6,2);
         L     R4,64(R12)   WEEK
         XC    60(4,R13),60(R13)
         ST    R3,72(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   72(4,R13),20(R11)   6
         MVC   60(4,R13),24(R11)   2
         L     R15,28(R11)   DMNDADDX
         BASR  R14,R15
         LD    F2,64(R13)
         MVC   60(4,R13),32(R11)   1
         STD   F2,64(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         L     R5,72(R13)
         ST    R5,40(R4)   ENDCALDATE
         J     AAG01815
*S1936: }
* FIRST WEEK THAT IS ALSO THE LAST WEEK
*S1938: else if (i=0 and i = base->WeekCount-1) then {
AAG01810 L     R2,76(R12)   I
         LTR   R2,R2
         JNE   AAG01811
         L     R3,1944(R9)   WEEKCOUNT
         AHI   R3,-1
         C     R3,76(R12)   I
         JNE   AAG01811
*S1939: week->StartCalDate := adjustedFromDate;
         L     R2,64(R12)   WEEK
         L     R3,80(R12)   ADJUSTEDFROMDATE
         ST    R3,36(R2)   STARTCALDATE
*S1940: week->EndCalDate := base->ThruDate;
         L     R4,64(R12)   WEEK
         L     R5,104(R9)   THRUDATE
         ST    R5,40(R4)   ENDCALDATE
         J     AAG01814
*S1941: }
* LAST WEEK THAT ISNT ALSO THE FIRST WEEK
*S1943: else if (i = base->WeekCount - 1) then {
AAG01811 L     R2,1944(R9)   WEEKCOUNT
         AHI   R2,-1
         C     R2,76(R12)   I
         JNE   AAG01812
*S1944: week->StartCalDate := DateAdd(previousWeek->EndCalDate,1,2);
         L     R3,64(R12)   WEEK
         L     R4,68(R12)   PREVIOUSWEEK
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),40(R4)   ENDCALDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   72(4,R13),32(R11)   1
         MVC   60(4,R13),24(R11)   2
         L     R15,28(R11)   DMNDADDX
         BASR  R14,R15
         LD    F2,64(R13)
         MVC   60(4,R13),32(R11)   1
         STD   F2,64(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         L     R5,72(R13)
         ST    R5,36(R3)   STARTCALDATE
*S1945: week->EndCalDate := base->ThruDate;
         L     R6,64(R12)   WEEK
         L     R7,104(R9)   THRUDATE
         ST    R7,40(R6)   ENDCALDATE
         J     AAG01813
*S1946: }
* ALL OTHER WEEKS
*S1948: else {
*S1949: week->StartCalDate := DateAdd(previousWeek->EndCalDate,1,2);
AAG01812 L     R2,64(R12)   WEEK
         L     R3,68(R12)   PREVIOUSWEEK
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),40(R3)   ENDCALDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         MVC   72(4,R13),32(R11)   1
         MVC   60(4,R13),24(R11)   2
         L     R15,28(R11)   DMNDADDX
         BASR  R14,R15
         LD    F2,64(R13)
         MVC   60(4,R13),32(R11)   1
         STD   F2,64(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         L     R4,72(R13)
         ST    R4,36(R2)   STARTCALDATE
*S1950: week->EndCalDate := DateAdd(week->StartCalDate,6,2);
         L     R5,64(R12)   WEEK
         XC    60(4,R13),60(R13)
         ST    R4,72(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F4,64(R13)
         STD   F4,64(R13)
         MVC   72(4,R13),20(R11)   6
         MVC   60(4,R13),24(R11)   2
         L     R15,28(R11)   DMNDADDX
         BASR  R14,R15
         LD    F6,64(R13)
         MVC   60(4,R13),32(R11)   1
         STD   F6,64(R13)
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         L     R6,72(R13)
         ST    R6,40(R5)   ENDCALDATE
*S1951: }
*S1953: week->CalDateDifference := DateBetween(week->EndCalDate,week->
AAG01813 EQU   *
AAG01814 EQU   *
AAG01815 L     R2,64(R12)   WEEK
         L     R3,64(R12)   WEEK
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),40(R3)   ENDCALDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R4,64(R12)   WEEK
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),36(R4)   STARTCALDATE
         L     R15,0(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),24(R11)   2
         L     R15,8(R11)   DMNBTWNX
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R5,1
         ST    R5,24(R2)   CALDATEDIFFERENCE
* We need to track the last full week of the claim as this impacts PHP
*S1956: if (week->CalDateDifference = 7) then {
         CHI   R5,7
         JNE   AAG01817
*S1957: week->IsLast7DayWeek := 1;
         L     R6,64(R12)   WEEK
         MVC   28(4,R6),32(R11)   1
*S1958: if (previousWeek) then {
         L     R15,68(R12)   PREVIOUSWEEK
         LTR   R15,R15
         JE    AAG01816
*S1959: previousWeek->IsLast7DayWeek := 0;
         L     R7,68(R12)   PREVIOUSWEEK
         XC    28(4,R7),28(R7)   ISLAST7DAYWEEK
*S1960: }
*S1961: }
* LINK ALL DAYS WITH A MATCHING WEEK INDEX INTO THIS WEEK OBJECT.
* NOTE: DAYS ARE EXPECTED TO BE IN PROPER SEQUENTIAL ORDER IN THE DAY
*S1965: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
AAG01816 EQU   *
AAG01817 MVC   72(4,R12),60(R9)   FIRSTVISIT
AAG01818 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAG01824
*S1966: if( i=day->WeekIndex ) then {
         L     R2,72(R12)   DAY
         L     R3,76(R12)   I
         C     R3,28(R2)   WEEKINDEX
         JNE   AAG01822
*S1967: if( week->lastDayOfWeek ) then {
         L     R4,64(R12)   WEEK
         L     R15,12(R4)   LASTDAYOFWEEK
         LTR   R15,R15
         JE    AAG01819
*S1968: week->lastDayOfWeek->nextDayOfWeek:=day;
         L     R5,64(R12)   WEEK
         L     R6,12(R5)   LASTDAYOFWEEK
         MVC   4(4,R6),72(R12)   DAY
         J     AAG01820
*S1969: }
*S1970: else week->firstDayOfWeek:=day;
AAG01819 L     R2,64(R12)   WEEK
         MVC   8(4,R2),72(R12)   DAY
*S1971: week->lastDayOfWeek:=day;
AAG01820 L     R2,64(R12)   WEEK
         MVC   12(4,R2),72(R12)   DAY
*S1972: week->DayCount+=1;
         L     R3,64(R12)   WEEK
         L     R4,64(R12)   WEEK
         LHI   R5,1
         A     R5,20(R4)   DAYCOUNT
         ST    R5,20(R3)   DAYCOUNT
* Days that are on partial last weeks are not edited.
*S1974: if (week->CalDateDifference < 7 and i = base->WeekCount-1) the
         L     R6,64(R12)   WEEK
         L     R7,24(R6)   CALDATEDIFFERENCE
         CHI   R7,7
         JNL   AAG01821
         L     R8,1944(R9)   WEEKCOUNT
         AHI   R8,-1
         C     R8,76(R12)   I
         JNE   AAG01821
*S1975: day->Bits->DayOnLastPartialWeek := 1;
         L     R2,72(R12)   DAY
         OI    627(R2),16   DAYONLASTPARTIALWEEK
AAG01821 EQU   *
AAG01822 EQU   *
AAG01823 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAG01818
*S1976: }
*S1977: }
*S1978: }
* LINK THE FIRST WEEK INTO THE BASE OBJECT, CHAIN ALL FOLLOWING WEEKS
* LINK THE PREVIOUS WEEK TO THE WEEK TO MAKE A DOUBLY LINKED LIST
*S1982: if( previousWeek ) then {
AAG01824 L     R15,68(R12)   PREVIOUSWEEK
         LTR   R15,R15
         JE    AAG01825
*S1983: previousWeek->nextWeek := week;
         L     R2,68(R12)   PREVIOUSWEEK
         MVC   0(4,R2),64(R12)   WEEK
*S1984: week->previousWeek := previousWeek;
         L     R3,64(R12)   WEEK
         MVC   4(4,R3),68(R12)   PREVIOUSWEEK
         J     AAG01826
*S1985: }
*S1986: else base->firstWeek:=week;
AAG01825 MVC   68(4,R9),64(R12)   WEEK
*S1987: previousWeek:=week;
AAG01826 MVC   68(4,R12),64(R12)   WEEK
AAG01827 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAG01809
AAG01828 EQU   *
AAG01829 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC087
**************************
GAPCC087 CSECT
GAPCC087 AMODE ANY
GAPCC087 RMODE ANY
*XREF - GAPCC087 GAPC.MakeWindowArray
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (24 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 628 (previousDay)
*        0072(R12)-> reference to Struct len 20 (window)
*        0076(R12)-> reference to Struct len 20 (previousWindow)
*        0080(R12)-> reference to Struct len 1120 (line)
*        0084(R12)-> Integer len 4 (i)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG01903
         DC    F'20' @00000
         DC    A(DMNNEW) @00004
         DC    A(DMNLONG) @00008
         DC    F'2' @00012
         DC    A(DMNBTWNX) @00016
         DC    F'1' @00020
AAG01903 XC    64(24,R12),64(R12)
*if( base->debug_mode ) then message "Make Window Array";
*if( base->debug_mode ) then message "Day Count %i", base->DayCount;
* WE CAN HAVE A CLAIM WITH ZERO DAYS IF ALL LINES CONTAIN A LIAF,
* IN THIS SITUATION THERE IS NOTHING TO CREATE, SO ABORT
*S2006: if( not base->DayCount ) then {
         L     R15,1940(R9)   DAYCOUNT
         LTR   R15,R15
         JNE   AAG01906
*S2007: return;
         J     AAG01924
*S2008: }
* NOTE: WE CAN USE base->DayCount HERE BECAUSE IT IS THE NUMBER OF DAY
* PRESENT AND ***NOT*** JUST THE DIFFERENCE BETWEEN THE FROM AND TRHOU
*S2012: base->WindowCount :=base->DayCount;% TOTAL NUMBER OF WINDOWS O
AAG01906 L     R2,1940(R9)   DAYCOUNT
         ST    R2,1948(R9)   WINDOWCOUNT
*S2013: base->WindowArray :=new struct WindowStruct[base->WindowCount]
         LR    R3,R9
         AHI   R3,4236
         MVC   60(4,R13),1948(R9)   WINDOWCOUNT
         MVC   64(4,R13),0(R11)   20
         ST    R3,68(R13)
         L     R15,4(R11)   DMNNEW
         BASR  R14,R15
         L     R4,60(R13)
         LR    R5,R4
         L     R6,1948(R9)   WINDOWCOUNT
AAG01907 XC    0(20,R5),0(R5)
         LA    R5,20(R5)
         BRCT  R6,AAG01907
         ST    R4,80(R9)   WINDOWARRAY
*if( base->debug_mode ) then message "Creating Window Set of Length %i
* ITERATE OVER DAYS, A WINDOW CONSISTS OF ALL LINES ON THE CURRENT DAY
* IF A PRIOR DAY EXISTS.
* NOTE: DAYS ARE EXPECTED TO BE IN PROPER SEQUENTIAL ORDER IN THE DAY
*S2019: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAG01908 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAG01923
*if( base->debug_mode ) then message "Creating Window %i", i;
*S2022: window :=&base->WindowArray[i];
         L     R2,80(R9)   WINDOWARRAY
         L     R3,84(R12)   I
         MHI   R3,20
         AR    R2,R3
         ST    R2,72(R12)   WINDOW
*S2023: window->WindowIndex :=i;
         L     R4,72(R12)   WINDOW
         L     R5,84(R12)   I
         ST    R5,12(R4)   WINDOWINDEX
* LINK LINES INTO WINDOW FOR THE PREVIOUS DAY IF A PREVIOUS DAY EXISTE
* WITH NO OMITTED DAYS BETWEEN THE PREVIOUS AND CURRENT DAY
*S2027: if( previousDay
         L     R15,68(R12)   PREVIOUSDAY
         LTR   R15,R15
         JE    AAG01914
         L     R6,68(R12)   PREVIOUSDAY
         L     R7,8(R6)   FIRSTDAYSITEMS
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R7)   SERVICEDATE
         L     R15,8(R11)   DMNLONG
         BASR  R14,R15
         LD    F0,64(R13)
         STD   F0,64(R13)
         L     R8,64(R12)   DAY
         L     R2,8(R8)   FIRSTDAYSITEMS
         AHI   R13,80
         XC    60(4,R13),60(R13)
         MVC   72(4,R13),60(R2)   SERVICEDATE
         L     R15,8(R11)   DMNLONG
         BASR  R14,R15
         LD    F2,64(R13)
         AHI   R13,-80
         STD   F2,72(R13)
         MVC   80(4,R13),12(R11)   2
         L     R15,16(R11)   DMNBTWNX
         BASR  R14,R15
         L     R3,60(R13)
         CHI   R3,1
         JNE   AAG01914
*S2028: and DateBetween(previousDay->firstDaysItems->ServiceDate,day->
* FLAG AS MULTIPLE DAY WINDOW
*S2030: window->multipleDay:=1;
         L     R2,72(R12)   WINDOW
         MVC   16(4,R2),20(R11)   1
*if( base->debug_mode ) then message "Adding Previous Day Items";
*S2033: loop( line:=previousDay->firstDaysItems; line; line:=line->nex
         L     R3,68(R12)   PREVIOUSDAY
         MVC   80(4,R12),8(R3)   FIRSTDAYSITEMS
AAG01909 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAG01913
*S2034: if( window->lastWindowLine ) then
         L     R2,72(R12)   WINDOW
         L     R15,8(R2)   LASTWINDOWLINE
         LTR   R15,R15
         JE    AAG01910
*S2035: window->lastWindowLine->nextWindowLine :=line;
         L     R3,72(R12)   WINDOW
         L     R4,8(R3)   LASTWINDOWLINE
         MVC   44(4,R4),80(R12)   LINE
         J     AAG01911
*S2036: else window->firstWindowLine :=line;
AAG01910 L     R2,72(R12)   WINDOW
         MVC   4(4,R2),80(R12)   LINE
*S2037: window->lastWindowLine :=line;
AAG01911 L     R2,72(R12)   WINDOW
         MVC   8(4,R2),80(R12)   LINE
AAG01912 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01909
*S2038: }
*S2040: }
* LINK LINES INTO WINDOW FOR THE CURRENT DAY
*if( base->debug_mode ) then message "Adding Current Day Items";
*S2044: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAG01913 EQU   *
AAG01914 L     R2,64(R12)   DAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAG01915 L     R15,80(R12)   LINE
         LTR   R15,R15
         JE    AAG01919
*S2045: if( window->lastWindowLine ) then
         L     R2,72(R12)   WINDOW
         L     R15,8(R2)   LASTWINDOWLINE
         LTR   R15,R15
         JE    AAG01916
*S2046: window->lastWindowLine->nextWindowLine :=line;
         L     R3,72(R12)   WINDOW
         L     R4,8(R3)   LASTWINDOWLINE
         MVC   44(4,R4),80(R12)   LINE
         J     AAG01917
*S2047: else window->firstWindowLine :=line;
AAG01916 L     R2,72(R12)   WINDOW
         MVC   4(4,R2),80(R12)   LINE
*S2048: window->lastWindowLine :=line;
AAG01917 L     R2,72(R12)   WINDOW
         MVC   8(4,R2),80(R12)   LINE
AAG01918 L     R2,80(R12)   LINE
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAG01915
*S2049: }
*if( base->debug_mode ) then message "Linking in Window %i", window->W
* LINK FIRST WINDOW INTO BASE OBJECT, OTHERS TO CHAIN
* ASSIGN LAST WINDOW LINE OF THE PREVIOUS WINDOW IF ONE EXISTED FOR A
* SOLUTION FOR LOOPING OVER THE WINDOW LINES ( CURRENTLY BROKEN )
*S2055: if( previousWindow ) then {
AAG01919 L     R15,76(R12)   PREVIOUSWINDOW
         LTR   R15,R15
         JE    AAG01920
*S2056: previousWindow->nextWindow :=window;
         L     R2,76(R12)   PREVIOUSWINDOW
         MVC   0(4,R2),72(R12)   WINDOW
         J     AAG01921
* previousWindow->lastWindowLine :=window->firstWindowLine;
*S2058: }
*S2059: else base->firstWindow :=window;
AAG01920 MVC   76(4,R9),72(R12)   WINDOW
*S2060: previousWindow :=window;
AAG01921 MVC   76(4,R12),72(R12)   WINDOW
* CAPTURE CURRENT DAY FOR START OF NEXT WINDOW AND INCREMENT ITERATOR
*S2063: previousDay :=day;
         MVC   68(4,R12),64(R12)   DAY
*S2064: i +=1;
         LHI   R2,1
         A     R2,84(R12)   I
         ST    R2,84(R12)   I
AAG01922 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAG01908
AAG01923 EQU   *
AAG01924 EQU   *
AAG01925 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC088
**************************
GAPCC088 CSECT
GAPCC088 AMODE ANY
GAPCC088 RMODE ANY
*XREF - GAPCC088 GAPC.PrepPaymentMethodFlags
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Locals & temps  (8 bytes)
*        0068(R12)-> reference to Struct len 628 (day)
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG02003
         DC    A(DMNSCMP) @00000
         DC    H'1'  0 1 @00004
         DC    CL1'S' @00006
         DC    CL1'X' @00007
         DC    CL1'T' @00008
AAG02003 XC    68(8,R12),68(R12)
* SET SERVICE INDICATOR FLAGS FOR PAYMENT METHOD FLAG PROCESSING
* V9.0 - and some other SI flags for later processing as values change
*S2081: if( claim->Bits->DayArrSetUp ) then {
         TM    3005(R9),16   DAYARRSETUP
         JE    AAG02061
*S2083: day:=&base->DayArray[line->DayIndex];
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,64(R9)   DAYARRAY
         L     R5,448(R3)   DAYINDEX
         MHI   R5,628
         AR    R4,R5
         ST    R4,68(R12)   DAY
*S2085: if( day ) then {
         LTR   R4,R4   DAYARRAY
         JE    AAG02060
*S2087: /* SET RELATED FLAGS ON THE DAY AND/OR CLAIM IF DAY IS SET UP.
*S2088:     LOGIC IN LOOKUP BEFORE DAY IS SET UP HAS IMPLANT CONDITION
*S2089: if( line->StatusIndicator="S"
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         LA    R14,180(R7)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,6(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),4(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JE    AAG02007
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,7(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),4(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAG02006
         L     R4,1868(R9)   VERSION
         CHI   R4,58
         JL    AAG02007
AAG02006 J     AAG02022
*S2090: or( line->StatusIndicator="X" and base->Version < 58 ) ) then
*S2091: line->Bits->HadTypeSTX :=1;
AAG02007 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),2   HADTYPESTX
*S2092: day->Bits->HadTypeSTX |=line->Bits->HadTypeSTX;
         L     R4,68(R12)   DAY
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    624(R4),1   HADTYPESTX
         JNE   AAG02008
         XR    R7,R7
         J     AAG02009
AAG02008 LHI   R7,1
AAG02009 EQU   *
AAG02010 TM    1081(R6),2   HADTYPESTX
         JNE   AAG02011
         XR    R8,R8
         J     AAG02012
AAG02011 LHI   R8,1
AAG02012 ST    R8,72(R12)
         O     R7,72(R12)
         LTR   R7,R7
         JNE   AAG02013
         NI    624(R4),254   HADTYPESTX
         J     AAG02014
AAG02013 OI    624(R4),1   HADTYPESTX
*S2093: claim->Bits->HadTypeSTX |=line->Bits->HadTypeSTX;
AAG02014 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         TM    3004(R9),4   HADTYPESTX
         JNE   AAG02015
         XR    R3,R3
         J     AAG02016
AAG02015 LHI   R3,1
AAG02016 EQU   *
AAG02017 TM    1081(R2),2   HADTYPESTX
         JNE   AAG02018
         XR    R4,R4
         J     AAG02019
AAG02018 LHI   R4,1
AAG02019 ST    R4,72(R12)
         O     R3,72(R12)
         LTR   R3,R3
         JNE   AAG02020
         NI    3004(R9),251   HADTYPESTX
         J     AAG02021
AAG02020 OI    3004(R9),4   HADTYPESTX
AAG02021 J     AAG02059
*S2094: }
*S2095: /* SET RELATED FLAGS ON THE DAY AND/OR CLAIM IF DAY IS SET UP.
*S2096:     EDIT 45 AND OTHER IRREGULARITIES WILL ALWAYS RESULT DUE TO
*S2097: else if( line->StatusIndicator="T"
AAG02022 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,8(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),4(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG02058
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    1083(R6),2   INPAPCSET
         JNE   AAG02058
*S2098: and not line->Bits->InpApcSet ) then {
*S2100: line->Bits->QualifiesForDiscount :=1;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1080(R3),1   QUALIFIESFORDISCOUNT
*S2101: day->Bits->QualifiesForDiscount |=line->Bits->QualifiesForDisc
         L     R4,68(R12)   DAY
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         TM    624(R4),2   QUALIFIESFORDISCOUNT
         JNE   AAG02023
         XR    R7,R7
         J     AAG02024
AAG02023 LHI   R7,1
AAG02024 EQU   *
AAG02025 TM    1080(R6),1   QUALIFIESFORDISCOUNT
         JNE   AAG02026
         XR    R8,R8
         J     AAG02027
AAG02026 LHI   R8,1
AAG02027 ST    R8,72(R12)
         O     R7,72(R12)
         LTR   R7,R7
         JNE   AAG02028
         NI    624(R4),253   QUALIFIESFORDISCOUNT
         J     AAG02029
AAG02028 OI    624(R4),2   QUALIFIESFORDISCOUNT
*S2102: claim->Bits->QualifiesForDiscount |=line->Bits->QualifiesForDi
AAG02029 L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         TM    3003(R9),32   QUALIFIESFORDISCOUNT
         JNE   AAG02030
         XR    R3,R3
         J     AAG02031
AAG02030 LHI   R3,1
AAG02031 EQU   *
AAG02032 TM    1080(R2),1   QUALIFIESFORDISCOUNT
         JNE   AAG02033
         XR    R4,R4
         J     AAG02034
AAG02033 LHI   R4,1
AAG02034 ST    R4,72(R12)
         O     R3,72(R12)
         LTR   R3,R3
         JNE   AAG02035
         NI    3003(R9),223   QUALIFIESFORDISCOUNT
         J     AAG02036
AAG02035 OI    3003(R9),32   QUALIFIESFORDISCOUNT
*S2104: line->Bits->HadTypeSTX :=1;
AAG02036 L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         OI    1081(R5),2   HADTYPESTX
*S2105: day->Bits->HadTypeSTX |=line->Bits->HadTypeSTX;
         L     R6,68(R12)   DAY
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         TM    624(R6),1   HADTYPESTX
         JNE   AAG02037
         XR    R2,R2
         J     AAG02038
AAG02037 LHI   R2,1
AAG02038 EQU   *
AAG02039 TM    1081(R8),2   HADTYPESTX
         JNE   AAG02040
         XR    R3,R3
         J     AAG02041
AAG02040 LHI   R3,1
AAG02041 ST    R3,72(R12)
         O     R2,72(R12)
         LTR   R2,R2
         JNE   AAG02042
         NI    624(R6),254   HADTYPESTX
         J     AAG02043
AAG02042 OI    624(R6),1   HADTYPESTX
*S2106: claim->Bits->HadTypeSTX |=line->Bits->HadTypeSTX;
AAG02043 L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         TM    3004(R9),4   HADTYPESTX
         JNE   AAG02044
         XR    R5,R5
         J     AAG02045
AAG02044 LHI   R5,1
AAG02045 EQU   *
AAG02046 TM    1081(R4),2   HADTYPESTX
         JNE   AAG02047
         XR    R6,R6
         J     AAG02048
AAG02047 LHI   R6,1
AAG02048 ST    R6,72(R12)
         O     R5,72(R12)
         LTR   R5,R5
         JNE   AAG02049
         NI    3004(R9),251   HADTYPESTX
         J     AAG02050
AAG02049 OI    3004(R9),4   HADTYPESTX
*S2108: line->Bits->HasTypeT :=1;
AAG02050 L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1082(R7),32   HASTYPET
*S2109: day->Bits->HasTypeT |=line->Bits->HasTypeT;
         L     R8,68(R12)   DAY
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    625(R8),32   HASTYPET
         JNE   AAG02051
         XR    R4,R4
         J     AAG02052
AAG02051 LHI   R4,1
AAG02052 EQU   *
AAG02053 TM    1082(R3),32   HASTYPET
         JNE   AAG02054
         XR    R5,R5
         J     AAG02055
AAG02054 LHI   R5,1
AAG02055 ST    R5,72(R12)
         O     R4,72(R12)
         LTR   R4,R4
         JNE   AAG02056
         NI    625(R8),223   HASTYPET
         J     AAG02057
AAG02056 OI    625(R8),32   HASTYPET
AAG02057 EQU   *
AAG02058 EQU   *
AAG02059 EQU   *
AAG02060 EQU   *
AAG02061 EQU   *
AAG02062 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC089
**************************
GAPCC089 CSECT
GAPCC089 AMODE ANY
GAPCC089 RMODE ANY
*XREF - GAPCC089 GAPC.SetAPCPay
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG02103
         DC    A(DMNSLOG) @00000
         DC    A(DMNSCPY) @00004
         DC    A(GAPCC123) @00008
         DC    H'5'  0 5 @00012
         DC    CL5'00000' @00014
AAG02103 XC    68(4,R12),68(R12)
* SET APC PAYMENT VALUES IF FOUND; OTHERWISE, SET TO ZERO
*S2122: if( not line->PaymentApc ) then {
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,512(R3)   PAYMENTAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAG02106
*S2123: line->PaymentApc:="00000";
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   5
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S2124: }
*S2125: if( do GAPC.findApcData( line->PaymentApc, base->Version ) ) t
AAG02106 LA    R14,68(R12)
         ST    R14,60(R13)
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,512(R3)   PAYMENTAPC
         ST    R14,64(R13)
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,8(R11)   GAPCC123
         BASR  R14,R15
         L     R15,68(R12)
         LTR   R15,R15
         JE    AAG02107
*S2126: line->ApcPayment :=DataApcTbl->ApcPayment;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         L     R6,3116(R9)   APCPAYMENT
         ST    R6,528(R5)   APCPAYMENT
*S2127: line->DeviceOffset :=DataApcTbl->DeviceOffset;
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         L     R2,3120(R9)   DEVICEOFFSET
         ST    R2,532(R8)   DEVICEOFFSET
         J     AAG02108
*S2128: }
*S2129: else {
*S2130: line->ApcPayment :=0;
AAG02107 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         XC    528(4,R3),528(R3)   APCPAYMENT
*S2131: line->DeviceOffset :=0;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         XC    532(4,R5),532(R5)   DEVICEOFFSET
AAG02108 EQU   *
AAG02109 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC090
**************************
GAPCC090 CSECT
GAPCC090 AMODE ANY
GAPCC090 RMODE ANY
*XREF - GAPCC090 GAPC.FillApcBuffer
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAG02203
         DC    F'1' @00000
         DC    A(DMNATFD) @00004
         DC    A(DMNSCMP) @00008
         DC    A(DMNSCPY) @00012
         DC    H'10'  0 10 @00016
         DC    H'1120'  4 96 @00018
         DC    H'1'  0 1 @00020
         DC    CL1'4' @00022
         DC    CL1'N' @00023
AAG02203 XC    64(4,R12),64(R12)
* Fill the APC Return Buffer
*S2140: if( not claim->Bits->Nopps ) then {/*flag value 1 only applica
         TM    3004(R9),1   NOPPS
         JNE   AAG02206
*S2141: claim->ApcRetFlag:=1;
         MVC   2220(4,R9),0(R11)   1
*S2142: }
*S2144: loop( item:=base->lines->first; item and (line:=&item->line, l
AAG02206 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAG02207 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAG02214
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),16(R11)   10
         MVC   66(2,R13),18(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAG02214
* Even though ActionFlag 4 causes lines to be ignored for other edits,
* want an APC assigned along with any other line that is not flagged I
*S2148: if( line->Bits->FoundHcpcs
         L     R2,64(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAG02211
         L     R3,64(R12)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   4
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAG02208
         L     R5,64(R12)   LINE
         TM    1081(R5),64   IGNORELINE
         JNE   AAG02211
*S2149: and (
*S2150: line->ActionFlag="4"
*S2151: or not line->Bits->IgnoreLine
*S2152: ) ) then {/*V3.1*/
*S2153: if( not claim->Bits->Nopps ) then {
AAG02208 TM    3004(R9),1   NOPPS
         JNE   AAG02210
*S2154: line->PaymentApc :=line->APC;
         L     R2,64(R12)   LINE
         L     R3,64(R12)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,484(R3)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S2155: line->HcpcsApc :=line->APC;
         L     R4,64(R12)   LINE
         L     R5,64(R12)   LINE
         LA    R14,500(R4)   HCPCSAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,484(R5)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S2156: if( line->StatusIndicator="N" ) then {/*V8.2 IOCE no packaging
         L     R6,64(R12)   LINE
         LA    R14,180(R6)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,23(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAG02209
*S2157: line->PackagingFlag:=1;
         L     R8,64(R12)   LINE
         MVC   540(4,R8),0(R11)   1
AAG02209 EQU   *
AAG02210 EQU   *
AAG02211 EQU   *
AAG02212 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAG02213
         L     R2,8(R2)
AAG02213 ST    R2,4(R9)   ITEM
         J     AAG02207
AAG02214 EQU   *
AAG02215 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAH
**************************
*    GAPCC091
**************************
GAPCC091 CSECT
GAPCC091 AMODE ANY
GAPCC091 RMODE ANY
*XREF - GAPCC091 GAPC.SetEdit
*  R11 + 0000 Literals        (416 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (28 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> Integer len 4 (edit)
*        0068(R12)-> reference to Reference len 4 (line)
*        0072(R12)-> reference to Reference len 4 (dxp)
*        0076(R12)-> reference to Reference len 4 (day)
*        0080(R12)-> Integer len 4 (editinstance)
*        0084(R12)-> Integer len 4 (modinstance)
*  R12 + 0088 Locals & temps  (8 bytes)
*        0088(R12)-> Integer len 4 ()
*        0092(R12)-> Integer len 4 ()
*        0096(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00103
         DC    A(GAPCC129) @00000
         DC    A(GAPCC128) @00004
         DC    F'1' @00008
         DC    A(GAPCC124) @00012
         DC    F'2' @00016
         DC    F'3' @00020
         DC    F'5' @00024
         DC    F'6' @00028
         DC    F'8' @00032
         DC    F'9' @00036
         DC    F'10' @00040
         DC    F'20' @00044
         DC    A(V40LJMP) @00048
         DC    F'11' @00052
         DC    F'12' @00056
         DC    F'13' @00060
         DC    A(DMNSCMP) @00064
         DC    F'17' @00068
         DC    F'18' @00072
         DC    F'21' @00076
         DC    F'22' @00080
         DC    A(GAPCC125) @00084
         DC    F'23' @00088
         DC    F'14' @00092
         DC    F'15' @00096
         DC    F'24' @00100
         DC    F'25' @00104
         DC    F'26' @00108
         DC    F'27' @00112
         DC    F'28' @00116
         DC    F'29' @00120
         DC    F'30' @00124
         DC    F'35' @00128
         DC    F'37' @00132
         DC    F'38' @00136
         DC    F'40' @00140
         DC    F'41' @00144
         DC    F'42' @00148
         DC    F'43' @00152
         DC    F'44' @00156
         DC    F'45' @00160
         DC    F'46' @00164
         DC    F'47' @00168
         DC    F'48' @00172
         DC    F'49' @00176
         DC    F'50' @00180
         DC    F'53' @00184
         DC    F'55' @00188
         DC    F'57' @00192
         DC    F'58' @00196
         DC    F'60' @00200
         DC    F'61' @00204
         DC    F'62' @00208
         DC    F'63' @00212
         DC    F'64' @00216
         DC    F'65' @00220
         DC    F'66' @00224
         DC    F'67' @00228
         DC    F'68' @00232
         DC    F'69' @00236
         DC    F'70' @00240
         DC    F'71' @00244
         DC    F'72' @00248
         DC    F'73' @00252
         DC    F'74' @00256
         DC    F'75' @00260
         DC    F'76' @00264
         DC    F'77' @00268
         DC    F'78' @00272
         DC    F'79' @00276
         DC    F'80' @00280
         DC    F'81' @00284
         DC    F'82' @00288
         DC    F'83' @00292
         DC    F'84' @00296
         DC    F'85' @00300
         DC    F'86' @00304
         DC    F'87' @00308
         DC    F'88' @00312
         DC    F'89' @00316
         DC    F'90' @00320
         DC    F'91' @00324
         DC    A(DMNSCPY) @00328
         DC    F'92' @00332
         DC    F'93' @00336
         DC    F'94' @00340
         DC    F'95' @00344
         DC    F'98' @00348
         DC    F'99' @00352
         DC    F'100' @00356
         DC    F'101' @00360
         DC    F'102' @00364
         DC    F'103' @00368
         DC    F'104' @00372
         DC    F'105' @00376
         DC    F'106' @00380
         DC    F'107' @00384
         DC    F'108' @00388
         DC    F'109' @00392
         DC    F'110' @00396
         DC    F'111' @00400
         DC    F'112' @00404
         DC    H'2'  0 2 @00408
         DC    H'1'  0 1 @00410
         DC    CL2'85' @00412
         DC    CL1'5' @00414
AAH00103 XC    88(8,R12),88(R12)
*S15: if (not (do GAPC.isEditBypass(line, edit) or do GAPC.isEditSuppr
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),68(R12)   LINE
         MVC   68(4,R13),64(R12)   EDIT
         L     R15,0(R11)   GAPCC129
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JNE   AAH00278
         LA    R14,92(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   EDIT
         L     R15,4(R11)   GAPCC128
         BASR  R14,R15
         L     R15,92(R12)
         LTR   R15,R15
         JNE   AAH00278
* Set Edits and their surfaced dispositions and related flags
*S17: switch( edit ){
         L     R2,64(R12)   EDIT
         L     R3,0(R2)   EDIT
         AHI   R3,-1
         LTR   R3,R3
         JL    AAH00277
         CHI   R3,111
         JH    AAH00277
         SLL   R3,2(R0)
         BRAS  R14,AAH00276
         J     AAH00106
         J     AAH00111
         J     AAH00112
         J     AAH00277
         J     AAH00113
         J     AAH00114
         J     AAH00277
         J     AAH00115
         J     AAH00116
         J     AAH00120
         J     AAH00121
         J     AAH00122
         J     AAH00123
         J     AAH00277
         J     AAH00277
         J     AAH00277
         J     AAH00125
         J     AAH00128
         J     AAH00277
         J     AAH00130
         J     AAH00132
         J     AAH00134
         J     AAH00135
         J     AAH00143
         J     AAH00144
         J     AAH00145
         J     AAH00146
         J     AAH00148
         J     AAH00149
         J     AAH00151
         J     AAH00277
         J     AAH00277
         J     AAH00277
         J     AAH00277
         J     AAH00154
         J     AAH00277
         J     AAH00156
         J     AAH00158
         J     AAH00277
         J     AAH00160
         J     AAH00162
         J     AAH00163
         J     AAH00168
         J     AAH00170
         J     AAH00172
         J     AAH00174
         J     AAH00175
         J     AAH00177
         J     AAH00179
         J     AAH00181
         J     AAH00277
         J     AAH00277
         J     AAH00185
         J     AAH00277
         J     AAH00187
         J     AAH00277
         J     AAH00189
         J     AAH00191
         J     AAH00277
         J     AAH00193
         J     AAH00195
         J     AAH00196
         J     AAH00199
         J     AAH00201
         J     AAH00203
         J     AAH00204
         J     AAH00206
         J     AAH00207
         J     AAH00208
         J     AAH00209
         J     AAH00211
         J     AAH00213
         J     AAH00214
         J     AAH00225
         J     AAH00230
         J     AAH00232
         J     AAH00234
         J     AAH00236
         J     AAH00238
         J     AAH00240
         J     AAH00242
         J     AAH00244
         J     AAH00246
         J     AAH00247
         J     AAH00249
         J     AAH00251
         J     AAH00252
         J     AAH00253
         J     AAH00254
         J     AAH00255
         J     AAH00256
         J     AAH00257
         J     AAH00258
         J     AAH00259
         J     AAH00260
         J     AAH00277
         J     AAH00277
         J     AAH00261
         J     AAH00262
         J     AAH00263
         J     AAH00264
         J     AAH00265
         J     AAH00266
         J     AAH00267
         J     AAH00268
         J     AAH00269
         J     AAH00270
         J     AAH00271
         J     AAH00272
         J     AAH00273
         J     AAH00274
         J     AAH00275
AAH00276 B     0(R3,R14)
* 1
*S19: case Edit->InvalidDx:
*S20: if( editinstance=1 ) then
AAH00106 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00107
*S21: {
*S22: do GAPC.plop( Edit->InvalidDx,claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),8(R11)   1
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S23: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
         J     AAH00110
*S24: }
*S25: else if( editinstance=2 or editinstance=3 ) then
AAH00107 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JE    AAH00108
         L     R4,80(R12)   EDITINSTANCE
         L     R5,0(R4)   EDITINSTANCE
         CHI   R5,3
         JNE   AAH00109
*S26: {
*S27: do GAPC.plop( Edit->InvalidDx, dxp->Edits );/*v4.0.a*/
AAH00108 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),8(R11)   1
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,72(R12)   DXP
         L     R3,0(R2)   DXP
         LA    R14,28(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S28: do GAPC.plop( Edit->InvalidDx, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),8(R11)   1
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S29: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S30: }
*S31: break;
AAH00109 EQU   *
AAH00110 J     AAH00277
* 2
*S34: case Edit->InvalidDxAge:
*S35: do GAPC.plop( Edit->InvalidDxAge, dxp->Edits );
AAH00111 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),16(R11)   2
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,72(R12)   DXP
         L     R3,0(R2)   DXP
         LA    R14,28(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S36: do GAPC.plop( Edit->InvalidDxAge, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),16(R11)   2
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S37: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S38: break;
         J     AAH00277
* 3
*S41: case Edit->InvalidDxSex:
*S42: do GAPC.plop( Edit->InvalidDxSex, dxp->Edits );
AAH00112 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),20(R11)   3
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,72(R12)   DXP
         L     R3,0(R2)   DXP
         LA    R14,28(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S43: do GAPC.plop( Edit->InvalidDxSex, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),20(R11)   3
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S44: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S45: break;
         J     AAH00277
* 5
*S48: case Edit->DxEcode:
*S49: do GAPC.plop( Edit->DxEcode, dxp->Edits );
AAH00113 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),24(R11)   5
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,72(R12)   DXP
         L     R3,0(R2)   DXP
         LA    R14,28(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S50: do GAPC.plop( Edit->DxEcode, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),24(R11)   5
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S51: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S52: break;
         J     AAH00277
* 6
*S55: case Edit->InvalidHcpcs:
*S56: do GAPC.plop( Edit->InvalidHcpcs, line->Edits );
AAH00114 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),28(R11)   6
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S57: do GAPC.plop( Edit->InvalidHcpcs, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),28(R11)   6
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S58: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S59: break;
         J     AAH00277
* 8
*S62: case Edit->InvalidProcSex:
*S63: do GAPC.plop( Edit->InvalidProcSex, line->Edits );
AAH00115 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),32(R11)   8
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S64: do GAPC.plop( Edit->InvalidProcSex, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),32(R11)   8
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S65: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S66: break;
         J     AAH00277
* 9
*S69: case Edit->NonCoveredService:
*S70: if( editinstance=1 ) then/*Procedure edit 9*/
AAH00116 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00117
*S71: {
*S72: do GAPC.plop( Edit->NonCoveredService, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),36(R11)   9
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S73: do GAPC.plop( Edit->NonCoveredService, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),36(R11)   9
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S74: line->DenialFlag :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         MVC   548(4,R7),8(R11)   1
*S75: claim->Bits->HasDenRej :=1;/*v2.2 for edit 27 */
         OI    3004(R9),128   HASDENREJ
*S76: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S77: line->Bits->IgnoreForObs :=1;
         L     R8,68(R12)   LINE
         L     R2,0(R8)   LINE
         OI    1081(R2),16   IGNOREFOROBS
         J     AAH00119
*S78: }
*S79: else if( editinstance=2 and not claim->Bits->Nopps ) then/*Rev e
AAH00117 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00118
         TM    3004(R9),1   NOPPS
         JNE   AAH00118
*S80: {
*S81: do GAPC.plop( Edit->NonCoveredService, line->RevenueEdits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),36(R11)   9
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,892(R3)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S82: do GAPC.plop( Edit->NonCoveredService, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),36(R11)   9
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S83: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S84: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S85: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S86: line->Bits->IgnoreForObs :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S87: }
*S88: break;
AAH00118 EQU   *
AAH00119 J     AAH00277
* 10
*S91: case Edit->NCserviceVerify:
*S92: base->OutClm_ClaimFlag:=3;/*v1.1 retro*/
AAH00120 MVC   1884(4,R9),20(R11)   3
*S93: do GAPC.plop( Edit->NCserviceVerify,claim->ClaimDenReasn );/*v1.
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),40(R11)   10
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2356(R9)   CLAIMDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S94: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S95: { return_code:=Error->RC_HasCc21 ; goto exit_now; };
         MVC   3016(4,R9),44(R11)   20
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
*break;
* 11:
*S99: case Edit->NCserviceReview:
*S100: do GAPC.plop( Edit->NCserviceReview, line->Edits );/*v1.1 retro
AAH00121 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),52(R11)   11
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S101: do GAPC.plop( Edit->NCserviceReview, claim->ClaimSusReasn );/*v
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),52(R11)   11
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2604(R9)   CLAIMSUSREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S102: claim->Bits->PrePaymentEdits:=1;/*v1.1 retro*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S103: break;
         J     AAH00277
* 12
*S106: case Edit->Questionable:
*S107: do GAPC.plop( Edit->Questionable, line->Edits );
AAH00122 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),56(R11)   12
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S108: do GAPC.plop( Edit->Questionable, claim->ClaimSusReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),56(R11)   12
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2604(R9)   CLAIMSUSREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S109: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S110: break;
         J     AAH00277
* 13
*S113: case Edit->NotPaidMcare:
* Edit 13 deactivated eff 1/1/06
* v18.0 REACTIVATED
*S116: if( 65 < base->Version ) then {
AAH00123 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAH00124
*S117: do GAPC.plop( Edit->NotPaidMcare, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),60(R11)   13
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R3,68(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R14,572(R4)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S118: do GAPC.plop( Edit->NotPaidMcare, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),60(R11)   13
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S119: line->DenialFlag :=1;
         L     R5,68(R12)   LINE
         L     R6,0(R5)   LINE
         MVC   548(4,R6),8(R11)   1
*S120: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S121: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S122: line->Bits->IgnoreForObs :=1;
         L     R7,68(R12)   LINE
         L     R8,0(R7)   LINE
         OI    1081(R8),16   IGNOREFOROBS
*S123: }
*S124: break;
AAH00124 J     AAH00277
* 17
*S127: case Edit->MultipleBilateral:
* Edit 17 only exclusive bilateral part deactivated eff 10/1/05
*S129: if( base->BillType="85" ) then return;
AAH00125 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,412(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),408(R11)   2
         L     R15,64(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00126
         J     AAH00279
*S130: if( editinstance=2 ) then
AAH00126 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00127
*S131: {
*S132: do GAPC.plop( Edit->MultipleBilateral, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),68(R11)   17
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S133: do GAPC.plop( Edit->MultipleBilateral, claim->ClaimRtpReasn );/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),68(R11)   17
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S134: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S135: }
*S136: break;
AAH00127 J     AAH00277
* 18
*S139: case Edit->InpatientProc:
* Not active for Non-OPPS
*S141: if( not claim->Bits->Nopps ) then
AAH00128 TM    3004(R9),1   NOPPS
         JNE   AAH00129
*S142: {
*S143: do GAPC.plop( Edit->InpatientProc, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),72(R11)   18
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S144: do GAPC.plop( Edit->InpatientProc, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),72(R11)   18
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S145: line->DenialFlag :=1;/*v1.1 retro */
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S146: claim->Bits->HasDenRej :=1;/*v2.2 */
         OI    3004(R9),128   HASDENREJ
*S147: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S148: line->Bits->IgnoreForObs :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S149: line->Bits->IgnoreInpat :=1;
         L     R8,68(R12)   LINE
         L     R2,0(R8)   LINE
         OI    1081(R2),32   IGNOREINPAT
*S150: day->Bits->DayDeniedE1849 :=1;/*7.1T added to differentiate*/
         L     R3,76(R12)   DAY
         L     R4,0(R3)   DAY
         OI    624(R4),8   DAYDENIEDE1849
*S151: }
*S152: break;
AAH00129 J     AAH00277
* 20
*S155: case Edit->CompCompMod0:
* Not active for Non-OPPS
*S157: /*line 2 is passed*/
*S158: if( do GAPC.plop( Edit->CompCompMod0, line->Edits ) )then
AAH00130 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),44(R11)   20
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JE    AAH00131
*S159: {/* only if we added the edit to this code */
*S160: do GAPC.plop( Edit->CompCompMod0, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),44(R11)   20
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S161: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S162: claim->Bits->HasDenRej :=1;/*v2.2 */
         OI    3004(R9),128   HASDENREJ
*S163: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S164: line->Bits->IgnoreForObs :=1;/*4.0 post release correction*/
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S165: }
*S166: break;
AAH00131 J     AAH00277
* 21
*S169: case Edit->VisitAndSurgNo25:
* Not active for Non-OPPS
*S171: if( not claim->Bits->Nopps ) then
AAH00132 TM    3004(R9),1   NOPPS
         JNE   AAH00133
*S172: {
* v9.3 eff 10/1/08 RTP
*S174: do GAPC.plop( Edit->VisitAndSurgNo25, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),76(R11)   21
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S175: do GAPC.plop( Edit->VisitAndSurgNo25, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),76(R11)   21
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S176: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S177: }
*S178: break;
AAH00133 J     AAH00277
* 22
*S181: case Edit->InvalidModifier:
*S182: do GAPC.plop( Edit->InvalidModifier, claim->ClaimRtpReasn );
AAH00134 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),80(R11)   22
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S183: do GAPC.modplop( Edit->InvalidModifier, modinstance, line->Modi
         MVC   88(4,R12),80(R11)   22
         LA    R14,88(R12)
         ST    R14,64(R13)
         MVC   68(4,R13),84(R12)   MODINSTANCE
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,692(R3)   MODIFIEREDITS
         ST    R14,72(R13)
         L     R15,84(R11)   GAPCC125
         BASR  R14,R15
*S184: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S185: break;
         J     AAH00277
* 23
*S188: case Edit->InvalidDate:
*S189: if( editinstance=1 ) then
AAH00135 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00136
*S190: {
*S191: base->OutClm_ClaimFlag:=1;
         MVC   1884(4,R9),8(R11)   1
*S192: do GAPC.plop( Edit->InvalidDate, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),88(R11)   23
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S193: claim->Bits->PrePaymentEdits:=1;/*7.3 POST*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S194: { return_code:=Error->RC_BadFromDate ; goto exit_now; };
         MVC   3016(4,R9),60(R11)   13
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
         J     AAH00142
*S195: }
*S196: else if( editinstance=2 ) then
AAH00136 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00137
*S197: {
*S198: base->OutClm_ClaimFlag:=1;
         MVC   1884(4,R9),8(R11)   1
*S199: do GAPC.plop( Edit->InvalidDate,claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),88(R11)   23
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S200: claim->Bits->PrePaymentEdits:=1;/*7.3 POST*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S201: { return_code:=Error->RC_BadThruDate ; goto exit_now; };
         MVC   3016(4,R9),92(R11)   14
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
         J     AAH00141
*S202: }
*S203: else if( editinstance=3 ) then
AAH00137 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,3
         JNE   AAH00138
*S204: {
*S205: base->OutClm_ClaimFlag:=1;
         MVC   1884(4,R9),8(R11)   1
*S206: do GAPC.plop( Edit->InvalidDate,claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),88(R11)   23
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S207: claim->Bits->PrePaymentEdits:=1;/*7.3 POST*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S208: { return_code:=Error->RC_BadDateSeq ; goto exit_now; };
         MVC   3016(4,R9),96(R11)   15
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
         J     AAH00140
*S209: }
*S210: else if( editinstance=4 ) then
AAH00138 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,4
         JNE   AAH00139
*S211: {
*S212: base->OutClm_ClaimFlag:=1;
         MVC   1884(4,R9),8(R11)   1
*S213: do GAPC.plop( Edit->InvalidDate,line->DateEdits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),88(R11)   23
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,772(R5)   DATEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S214: do GAPC.plop( Edit->InvalidDate,claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),88(R11)   23
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S215: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S216: }
*S217: break;
AAH00139 EQU   *
AAH00140 EQU   *
AAH00141 EQU   *
AAH00142 J     AAH00277
* 24
*S220: case Edit->DateOutOfRange:
*S221: base->OutClm_ClaimFlag:=1;
AAH00143 MVC   1884(4,R9),8(R11)   1
*S222: do GAPC.plop( Edit->DateOutOfRange, claim->ClaimSusReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),100(R11)   24
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2604(R9)   CLAIMSUSREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S223: claim->Bits->PrePaymentEdits:=1;/*7.3 POST*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S224: { return_code:=Error->RC_DateVersion ; goto exit_now; };
         MVC   3016(4,R9),68(R11)   17
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,48(R11)   V40LJMP
         BASR  R14,R15
*break;
* 25
*S228: case Edit->InvalidAge:
*S229: do GAPC.plop( Edit->InvalidAge, claim->ClaimRtpReasn );
AAH00144 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),104(R11)   25
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S230: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S231: break;
         J     AAH00277
* 26
*S234: case Edit->InvalidSex:
*S235: do GAPC.plop( Edit->InvalidSex,claim->ClaimRtpReasn );
AAH00145 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),108(R11)   26
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S236: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S237: break;
         J     AAH00277
* 27
*S240: case Edit->OnlyIncidental:
* Not active for Non-OPPS
*S242: if( not claim->Bits->Nopps ) then
AAH00146 TM    3004(R9),1   NOPPS
         JNE   AAH00147
*S243: {
*S244: do GAPC.plop( Edit->OnlyIncidental, claim->ClaimRejReasn );/*5.
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),112(R11)   27
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2232(R9)   CLAIMREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S245: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S246: /* OCECLM will test this to see if other edits should be done*/
*S247: claim->Bits->IgnoreClaim:=1;
         OI    3004(R9),64   IGNORECLAIM
*S248: }
*S249: break;
AAH00147 J     AAH00277
* 28
*S252: case Edit->NotRecogMcare:
*S253: do GAPC.plop( Edit->NotRecogMcare, line->Edits );
AAH00148 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),116(R11)   28
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S254: do GAPC.plop( Edit->NotRecogMcare, claim->LineRejReasn );/*v5.0
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),116(R11)   28
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S255: line->DenialFlag :=1;/*v5.0*//*v2.3 retro */
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S256: claim->Bits->HasDenRej :=1;/*v5.0*//*v2.3 retro */
         OI    3004(R9),128   HASDENREJ
*S257: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S258: line->Bits->IgnoreForObs :=1;/*v5.0*/
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S259: break;
         J     AAH00277
* 29
*S262: case Edit->NotMentalDx:
* Not active for Non-OPPS
*S264: if( not claim->Bits->Nopps ) then
AAH00149 TM    3004(R9),1   NOPPS
         JNE   AAH00150
*S265: {
*S266: do GAPC.plop( Edit->NotMentalDx, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),120(R11)   29
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S267: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S268: }
*S269: break;
AAH00150 J     AAH00277
* 30
*S272: case Edit->PhInsuffServ:
* Not active for Non-OPPS
*S274: if( not claim->Bits->Nopps ) then
AAH00151 TM    3004(R9),1   NOPPS
         JNE   AAH00153
*S275: {
*S276: if( editinstance=2 ) then
         L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00152
*S277: {
*S278: /*Line Deny all PHP lines on the day - prior to v10.0 eff 1/1/0
*S279: do GAPC.plop( Edit->PhInsuffServ, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),124(R11)   30
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S280: do GAPC.plop( Edit->PhInsuffServ, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),124(R11)   30
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S281: line->DenialFlag :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         MVC   548(4,R7),8(R11)   1
*S282: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S283: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S284: line->Bits->IgnoreForObs :=1;
         L     R8,68(R12)   LINE
         L     R2,0(R8)   LINE
         OI    1081(R2),16   IGNOREFOROBS
*S285: }
*S286: }
*S287: break;
AAH00152 EQU   *
AAH00153 J     AAH00277
* 35
*S290: case Edit->OnlyActOccTherapy:
* Not active for Non-OPPS
*S292: if( not claim->Bits->Nopps ) then
AAH00154 TM    3004(R9),1   NOPPS
         JNE   AAH00155
*S293: {
*S294: do GAPC.plop( Edit->OnlyActOccTherapy, line->Edits );/*v10.0 re
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),128(R11)   35
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S295: do GAPC.plop( Edit->OnlyActOccTherapy, claim->ClaimRtpReasn );/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),128(R11)   35
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S296: claim->Bits->PrePaymentEdits:=1;/*v5.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S297: }
*S298: break;
AAH00155 J     AAH00277
* 37
*S301: case Edit->TerminatedProcedure:
* Not active for Non-OPPS
*S303: if( not claim->Bits->Nopps ) then
AAH00156 TM    3004(R9),1   NOPPS
         JNE   AAH00157
*S304: {
*S305: do GAPC.plop( Edit->TerminatedProcedure, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),132(R11)   37
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S306: do GAPC.plop( Edit->TerminatedProcedure, claim->ClaimRtpReasn )
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),132(R11)   37
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S307: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S308: }
*S309: break;
AAH00157 J     AAH00277
* 38
*S312: case Edit->ImplantInconsist:
* Not active for Non-OPPS
*S314: if( not claim->Bits->Nopps ) then {
AAH00158 TM    3004(R9),1   NOPPS
         JNE   AAH00159
*S315: do GAPC.plop( Edit->ImplantInconsist, line->Edits );/*v2.0 */
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),136(R11)   38
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S316: do GAPC.plop( Edit->ImplantInconsist, claim->ClaimRtpReasn );/*
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),136(R11)   38
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S317: claim->Bits->PrePaymentEdits:=1;/*v2.0 */
         OI    3003(R9),64   PREPAYMENTEDITS
*S318: }
*S319: break;
AAH00159 J     AAH00277
* 40
*S322: case Edit->CompCompMod1:
* Not active for Non-OPPS
*S325: /*line 2 is passed*/
*S326: if( do GAPC.plop( Edit->CompCompMod1, line->Edits ) ) then
AAH00160 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),140(R11)   40
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
         L     R15,88(R12)
         LTR   R15,R15
         JE    AAH00161
*S327: {
*S328: do GAPC.plop( Edit->CompCompMod1, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),140(R11)   40
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S329: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S330: claim->Bits->HasDenRej :=1;/*v2.2 */
         OI    3004(R9),128   HASDENREJ
*S331: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S332: line->Bits->IgnoreForObs :=1;/*4.0 post release correction*/
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S333: }
*S335: break;
AAH00161 J     AAH00277
* 41
*S338: case Edit->InvalidRevenueCode:
*S339: do GAPC.plop( Edit->InvalidRevenueCode, line->RevenueEdits );
AAH00162 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),144(R11)   41
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,892(R3)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S340: do GAPC.plop( Edit->InvalidRevenueCode, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),144(R11)   41
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S341: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S342: line->Bits->HasInvRev:=1;/*4.2 ( for Edit 48 test )*/
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1083(R3),64   HASINVREV
*S343: break;
         J     AAH00277
* 42
*S346: case Edit->DupEmSameRevCode:
* Not active for Non-OPPS
*S348: if( not claim->Bits->Nopps ) then
AAH00163 TM    3004(R9),1   NOPPS
         JNE   AAH00167
*S349: {
*S350: if( editinstance=1 ) then
         L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00164
*S351: {
*S352: do GAPC.plop( Edit->DupEmSameRevCode, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),148(R11)   42
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
         J     AAH00166
*S353: }
*S354: else if( editinstance=2 ) then
AAH00164 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00165
*S355: {
*S356: do GAPC.plop( Edit->DupEmSameRevCode, claim->ClaimRtpReasn );/*
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),148(R11)   42
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S357: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S358: }
*S359: }
*S360: break;
AAH00165 EQU   *
AAH00166 EQU   *
AAH00167 J     AAH00277
* 43
*S363: case Edit->BldSvcWOBldProd:
* Not active for Non-OPPS
*S365: if( not claim->Bits->Nopps ) then
AAH00168 TM    3004(R9),1   NOPPS
         JNE   AAH00169
*S366: {
*S367: do GAPC.plop( Edit->BldSvcWOBldProd, line->Edits );/*v1.1*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),152(R11)   43
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S368: do GAPC.plop( Edit->BldSvcWOBldProd, claim->ClaimRtpReasn );/*v
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),152(R11)   43
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S369: claim->Bits->PrePaymentEdits:=1;/*v1.1*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S370: }
*S371: break;
AAH00169 J     AAH00277
* 44
*S374: case Edit->Rev762WOObs:
* Not active for Non-OPPS
*S376: if( not claim->Bits->Nopps ) then
AAH00170 TM    3004(R9),1   NOPPS
         JNE   AAH00171
*S377: {
*S378: do GAPC.plop( Edit->Rev762WOObs, line->Edits );/*v2.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),156(R11)   44
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S379: do GAPC.plop( Edit->Rev762WOObs, claim->ClaimRtpReasn );/*v2.0*
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),156(R11)   44
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S380: claim->Bits->PrePaymentEdits:=1;/*v2.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S381: }
*S382: break;
AAH00171 J     AAH00277
* 45
*S385: case Edit->SepProcNotPaid:
* Not active for Non-OPPS
*S387: if( not claim->Bits->Nopps ) then
AAH00172 TM    3004(R9),1   NOPPS
         JNE   AAH00173
*S388: {
*S389: do GAPC.plop( Edit->SepProcNotPaid, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),160(R11)   45
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S390: do GAPC.plop( Edit->SepProcNotPaid, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),160(R11)   45
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S391: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S392: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S393: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S394: line->Bits->IgnoreForObs :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S395: }
*S396: break;
AAH00173 J     AAH00277
* 46
*S399: case Edit->Cc41NaTOB:
*S400: do GAPC.plop( Edit->Cc41NaTOB,claim->ClaimRtpReasn );/*v2.0 */
AAH00174 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),164(R11)   46
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S401: claim->Bits->PrePaymentEdits:=1;/*v2.0 */
         OI    3003(R9),64   PREPAYMENTEDITS
*S402: break;
         J     AAH00277
* 47
*S405: case Edit->ServNotSepPay:
* Not active for Non-OPPS
*S407: if( not claim->Bits->Nopps ) then
AAH00175 TM    3004(R9),1   NOPPS
         JNE   AAH00176
*S408: {
*S409: do GAPC.plop( Edit->ServNotSepPay, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),168(R11)   47
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S410: do GAPC.plop( Edit->ServNotSepPay, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),168(R11)   47
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S411: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S412: claim->Bits->HasDenRej :=1;/*20050724 added for consistency*/
         OI    3004(R9),128   HASDENREJ
*S413: line->Bits->IgnoreForObs :=1;/*20050724 added for consistency*/
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S414: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S415: }
*S416: break;
AAH00176 J     AAH00277
* 48
*S419: case Edit->RevCntrReqHcpcs:
* Not active for Non-OPPS
*S421: if( not claim->Bits->Nopps ) then
AAH00177 TM    3004(R9),1   NOPPS
         JNE   AAH00178
*S422: {
*S423: do GAPC.plop( Edit->RevCntrReqHcpcs, line->RevenueEdits );/*v1.
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),172(R11)   48
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,892(R3)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S424: do GAPC.plop( Edit->RevCntrReqHcpcs, claim->ClaimRtpReasn );/*v
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),172(R11)   48
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S425: claim->Bits->PrePaymentEdits:=1;/*v1.1 */
         OI    3003(R9),64   PREPAYMENTEDITS
*S426: }
*S427: break;
AAH00178 J     AAH00277
* 49
*S430: case Edit->SameDayAsInpat:
* Not active for Non-OPPS
*S432: if( not claim->Bits->Nopps ) then
AAH00179 TM    3004(R9),1   NOPPS
         JNE   AAH00180
*S433: {
*S434: do GAPC.plop( Edit->SameDayAsInpat, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),176(R11)   49
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S435: do GAPC.plop( Edit->SameDayAsInpat, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),176(R11)   49
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S436: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S437: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S438: line->Bits->IgnoreForObs :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S439: line->Bits->IgnoreInpat :=1;
         L     R8,68(R12)   LINE
         L     R2,0(R8)   LINE
         OI    1081(R2),32   IGNOREINPAT
*S440: claim->Bits->PrePaymentEdits :=1;/*20050724 added for consisten
         OI    3003(R9),64   PREPAYMENTEDITS
*S441: }
*S442: break;
AAH00180 J     AAH00277
* 50
*S445: case Edit->StatutoryExcl:
*S446: if( editinstance=1 ) then/*Procedure edit 50*/
AAH00181 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00182
*S447: {
*S448: do GAPC.plop( Edit->StatutoryExcl, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),180(R11)   50
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S449: do GAPC.plop( Edit->StatutoryExcl, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),180(R11)   50
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S450: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
         J     AAH00184
*S451: }
*S452: else if( editinstance=2 ) then/*Rev edit 50*/
AAH00182 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00183
*S453: {
*S454: do GAPC.plop( Edit->StatutoryExcl, line->RevenueEdits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),180(R11)   50
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,892(R5)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S455: do GAPC.plop( Edit->StatutoryExcl, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),180(R11)   50
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S456: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S457: }
*S458: break;
AAH00183 EQU   *
AAH00184 J     AAH00277
* 53
*S461: case Edit->ObsBTNot13x:
*S462: do GAPC.plop( Edit->ObsBTNot13x,line->Edits );/*v3.0*/
AAH00185 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),184(R11)   53
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S463: do GAPC.plop( Edit->ObsBTNot13x,claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),184(R11)   53
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S464: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S465: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S466: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S467: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S468: if( line->Bits->HasObs2 ) then
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1082(R3),16   HASOBS2
         JE    AAH00186
*S469: line->Bits->HasObs2:=0;/*v4.1 is this code G0244;negate as Spec
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         NI    1082(R5),239   HASOBS2
*S470: break;
AAH00186 J     AAH00277
* 55
*S473: case Edit->NonreportableSite:
* Not active for Non-OPPS
*S475: if( not claim->Bits->Nopps ) then
AAH00187 TM    3004(R9),1   NOPPS
         JNE   AAH00188
*S476: {
*S477: do GAPC.plop( Edit->NonreportableSite, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),188(R11)   55
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S478: do GAPC.plop( Edit->NonreportableSite, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),188(R11)   55
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S479: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S480: }
*S481: break;
AAH00188 J     AAH00277
* 57
*S484: case Edit->ObsEmAncYes1231:
* Not active for Non-OPPS
*S486: if( not claim->Bits->Nopps ) then
AAH00189 TM    3004(R9),1   NOPPS
         JNE   AAH00190
*S487: {
*S488: do GAPC.plop( Edit->ObsEmAncYes1231, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),192(R11)   57
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S489: do GAPC.plop( Edit->ObsEmAncYes1231, claim->ClaimSusReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),192(R11)   57
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2604(R9)   CLAIMSUSREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S490: claim->Bits->PrePaymentEdits:=1;%v9.0 added - it was not there
         OI    3003(R9),64   PREPAYMENTEDITS
*S491: }
*S492: break;
AAH00190 J     AAH00277
* 58
*S495: case Edit->NoPayableObs:
* Not active for Non-OPPS
*S497: if( not claim->Bits->Nopps ) then
AAH00191 TM    3004(R9),1   NOPPS
         JNE   AAH00192
*S498: {
*S499: do GAPC.plop( Edit->NoPayableObs, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),196(R11)   58
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S500: do GAPC.plop( Edit->NoPayableObs, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),196(R11)   58
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S501: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S502: }
*S503: break;
AAH00192 J     AAH00277
* 60
*S506: case Edit->MultErDied:
* Not active for Non-OPPS
*S508: if( not claim->Bits->Nopps ) then
AAH00193 TM    3004(R9),1   NOPPS
         JNE   AAH00194
*S509: {
*S510: do GAPC.plop( Edit->MultErDied, line->Edits );/*v4.1*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),200(R11)   60
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S511: do GAPC.plop( Edit->MultErDied, claim->ClaimRtpReasn );/*v4.1*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),200(R11)   60
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S512: claim->Bits->PrePaymentEdits:=1;/*v4.1*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S513: }
*S514: break;
AAH00194 J     AAH00277
* 61
*S517: case Edit->OnlyDME:
*S518: do GAPC.plop( Edit->OnlyDME, line->Edits );
AAH00195 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),204(R11)   61
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S519: do GAPC.plop( Edit->OnlyDME, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),204(R11)   61
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S520: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S521: break;
         J     AAH00277
* 62
*S524: case Edit->NotRecogOPPS:
* Not active for Non-OPPS
*S526: if( not claim->Bits->Nopps ) then {
AAH00196 TM    3004(R9),1   NOPPS
         JNE   AAH00198
*S527: do GAPC.plop( Edit->NotRecogOPPS, line->Edits );/*v5.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),208(R11)   62
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S528: do GAPC.plop( Edit->NotRecogOPPS, claim->ClaimRtpReasn );/*v5.0
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),208(R11)   62
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S529: if( not claim->Bits->PrePaymentEdits ) then {
         TM    3003(R9),64   PREPAYMENTEDITS
         JNE   AAH00197
*S530: claim->Bits->PrePaymentEdits:=1;/*v5.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S531: }
*S532: }
*S533: break;
AAH00197 EQU   *
AAH00198 J     AAH00277
* 63
*S536: case Edit->OTnotPH:
* Not active for Non-OPPS
*S538: if( not claim->Bits->Nopps ) then
AAH00199 TM    3004(R9),1   NOPPS
         JNE   AAH00200
*S539: {
*S540: do GAPC.plop( Edit->OTnotPH, line->Edits );/*v5.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),212(R11)   63
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S541: do GAPC.plop( Edit->OTnotPH, claim->ClaimRtpReasn );/*v5.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),212(R11)   63
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S542: claim->Bits->PrePaymentEdits:=1;/*v5.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S543: }
*S544: break;
AAH00200 J     AAH00277
* 64
*S547: case Edit->ATnotPH:
* Not active for Non-OPPS
*S549: if( not claim->Bits->Nopps ) then
AAH00201 TM    3004(R9),1   NOPPS
         JNE   AAH00202
*S550: {
*S551: do GAPC.plop( Edit->ATnotPH, line->Edits );/*v5.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),216(R11)   64
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S552: do GAPC.plop( Edit->ATnotPH, claim->LineRejReasn );/*v5.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),216(R11)   64
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S553: line->DenialFlag :=1;/*v5.0*//*v2.3 retro */
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S554: claim->Bits->HasDenRej :=1;/*v5.0*//*v2.3 retro */
         OI    3004(R9),128   HASDENREJ
*S555: line->Bits->IgnoreForObs :=1;/*v5.0*/
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S556: claim->Bits->PrePaymentEdits :=1;/*v5.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S557: }
*S558: break;
AAH00202 J     AAH00277
* 65
*S561: case Edit->RevNotRecMcare:
*S562: do GAPC.plop( Edit->RevNotRecMcare,line->RevenueEdits );/*v5.2*
AAH00203 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),220(R11)   65
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,892(R3)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S563: do GAPC.plop( Edit->RevNotRecMcare,claim->LineRejReasn );/*v5.2
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),220(R11)   65
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S564: line->DenialFlag :=1;/*v5.2*/
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S565: claim->Bits->HasDenRej :=1;/*v5.2*/
         OI    3004(R9),128   HASDENREJ
*S566: claim->Bits->PrePaymentEdits :=1;/*v5.2*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S567: line->Bits->IgnoreForObs :=1;/*v5.2*/
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S568: break;
         J     AAH00277
* 66
*S571: case Edit->ReqManPricing:
* Not active for Non-OPPS
*S573: if( not claim->Bits->Nopps ) then
AAH00204 TM    3004(R9),1   NOPPS
         JNE   AAH00205
*S574: {
*S575: do GAPC.plop( Edit->ReqManPricing, line->Edits );/*v5.2*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),224(R11)   66
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S576: do GAPC.plop( Edit->ReqManPricing, claim->ClaimSusReasn );/*v5.
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),224(R11)   66
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2604(R9)   CLAIMSUSREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S577: claim->Bits->PrePaymentEdits:=1;/*v5.2*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S578: }
*S579: break;
AAH00205 J     AAH00277
* 67
*S582: case Edit->BeforeApprDt:
* v9.3, eff. 10/1/08 LID
*S584: do GAPC.plop( Edit->BeforeApprDt, line->Edits );
AAH00206 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),228(R11)   67
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S585: do GAPC.plop( Edit->BeforeApprDt, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),228(R11)   67
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S586: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S587: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S588: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S589: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S590: break;
         J     AAH00277
* 68
*S593: case Edit->NotNCDApproved:
* v9.3, eff. 10/1/08 LID
*S595: do GAPC.plop( Edit->NotNCDApproved, line->Edits );
AAH00207 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),232(R11)   68
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S596: do GAPC.plop( Edit->NotNCDApproved, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),232(R11)   68
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S597: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S598: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S599: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S600: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S601: break;
         J     AAH00277
* 69
*S604: case Edit->OutsideAppDt:
* v9.3, eff. 10/1/08 LID
*S606: do GAPC.plop( Edit->OutsideAppDt, line->Edits );
AAH00208 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),236(R11)   69
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S607: do GAPC.plop( Edit->OutsideAppDt, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),236(R11)   69
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S608: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S609: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S610: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S611: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S612: break;
         J     AAH00277
* 70
*S615: case Edit->InpatientStatusCode:
* Not active for Non-OPPS
*S617: if( not claim->Bits->Nopps ) then
AAH00209 TM    3004(R9),1   NOPPS
         JNE   AAH00210
*S618: {
*S619: do GAPC.plop( Edit->InpatientStatusCode, line->Edits );/*v6.1*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),240(R11)   70
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S620: do GAPC.plop( Edit->InpatientStatusCode, claim->ClaimRtpReasn )
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),240(R11)   70
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S621: claim->Bits->PrePaymentEdits:=1;/*v6.1*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S622: }
*S623: break;
AAH00210 J     AAH00277
* 71
*S626: /*V15.0.0, EFFECTIVED 2014-01-01 DEACTIVATED*/
*S627: case Edit->DeviceCodeRequired:
* Not active for Non-OPPS
*S629: if( not claim->Bits->Nopps ) then
AAH00211 TM    3004(R9),1   NOPPS
         JNE   AAH00212
*S630: {
*S631: /*line 2 is passed*/
*S632: do GAPC.plop( Edit->DeviceCodeRequired, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),244(R11)   71
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S633: do GAPC.plop( Edit->DeviceCodeRequired, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),244(R11)   71
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S634: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S635: }
*S636: break;
AAH00212 J     AAH00277
* 72
*S639: case Edit->ServNotBillableFI:
*S640: do GAPC.plop( Edit->ServNotBillableFI, line->Edits );
AAH00213 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),248(R11)   72
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S641: do GAPC.plop( Edit->ServNotBillableFI, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),248(R11)   72
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S642: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S646: break;
         J     AAH00277
* 73
*S649: case Edit->BadBloodBilling:
* Not active for Non-OPPS
*S651: if( not claim->Bits->Nopps ) then
AAH00214 TM    3004(R9),1   NOPPS
         JNE   AAH00224
*S652: {
*S653: if( editinstance=1 ) then
         L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00215
*S654: {
*S655: do GAPC.plop( Edit->BadBloodBilling, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
         J     AAH00223
*S656: }
*S657: else if( editinstance=2 ) then
AAH00215 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00216
*S658: {
*S659: /*BloodLine is passed - to accomplish 2 lines we need 2 instanc
*S660: do GAPC.plop( Edit->BadBloodBilling, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S661: do GAPC.plop( Edit->BadBloodBilling, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S662: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
         J     AAH00222
*S663: }
*S664: else if( editinstance=3 ) then
AAH00216 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,3
         JNE   AAH00217
*S665: {
*S666: /*using another instance due to documentation of split case abo
*S667: do GAPC.plop( Edit->BadBloodBilling, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S668: do GAPC.plop( Edit->BadBloodBilling, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S669: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
         J     AAH00221
*S670: }
*S671: else if( editinstance=4 ) then
AAH00217 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,4
         JNE   AAH00218
*S672: {
*S673: do GAPC.plop( Edit->BadBloodBilling, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S674: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
         J     AAH00220
*S675: }
*S676: else if( editinstance=5 ) then
AAH00218 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,5
         JNE   AAH00219
*S677: {
*S678: /*BloodLine passed in*/
*S679: do GAPC.plop( Edit->BadBloodBilling, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),252(R11)   73
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S680: }
*S681: }
*S682: break;
AAH00219 EQU   *
AAH00220 EQU   *
AAH00221 EQU   *
AAH00222 EQU   *
AAH00223 EQU   *
AAH00224 J     AAH00277
* 74
*S685: case Edit->Modif50BilatUnits:
*S686: /*line level method*/
*S687: if( editinstance=1 ) then {
AAH00225 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,1
         JNE   AAH00227
*S688: /*N/A all nopps bill types that have this edit instance - line
*S689: if( not claim->Bits->Nopps ) then {
         TM    3004(R9),1   NOPPS
         JNE   AAH00226
*S690: do GAPC.plop( Edit->Modif50BilatUnits, line->Edits );/*v7.3*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),256(R11)   74
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S691: do GAPC.plop( Edit->Modif50BilatUnits, claim->ClaimRtpReasn );/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),256(R11)   74
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S692: claim->Bits->PrePaymentEdits:=1;/*v7.3*/
         OI    3003(R9),64   PREPAYMENTEDITS
AAH00226 J     AAH00229
*S693: }
*S694: }
*S695: else if( editinstance=2 ) then {
AAH00227 L     R2,80(R12)   EDITINSTANCE
         L     R3,0(R2)   EDITINSTANCE
         CHI   R3,2
         JNE   AAH00228
*S696: /*specific day level roll up method*/
*S697: do GAPC.plop( Edit->Modif50BilatUnits, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),256(R11)   74
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,572(R5)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S698: do GAPC.plop( Edit->Modif50BilatUnits, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),256(R11)   74
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S699: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S700: }
*S701: break;
AAH00228 EQU   *
AAH00229 J     AAH00277
* 75
*S704: /*V15.0.0, EFFECTIVED 2014-01-01 DEACTIVATED*/
*S705: case Edit->FBnoSTVX:/*v8.0*/
* Not active for Non-OPPS
*S707: if( not claim->Bits->Nopps ) then
AAH00230 TM    3004(R9),1   NOPPS
         JNE   AAH00231
*S708: {
*S709: do GAPC.modplop( Edit->FBnoSTVX,modinstance,line->ModifierEdits
         MVC   88(4,R12),260(R11)   75
         LA    R14,88(R12)
         ST    R14,64(R13)
         MVC   68(4,R13),84(R12)   MODINSTANCE
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,692(R3)   MODIFIEREDITS
         ST    R14,72(R13)
         L     R15,84(R11)   GAPCC125
         BASR  R14,R15
*S710: do GAPC.plop( Edit->FBnoSTVX, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),260(R11)   75
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S711: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S712: }
*S713: break;
AAH00231 J     AAH00277
* 76
*S716: case Edit->TraumaActReqd:/*v8.0*/
* Not active for Non-OPPS
*S718: if( not claim->Bits->Nopps ) then
AAH00232 TM    3004(R9),1   NOPPS
         JNE   AAH00233
*S719: {
*S720: do GAPC.plop( Edit->TraumaActReqd,line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),264(R11)   76
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S721: do GAPC.plop( Edit->TraumaActReqd,claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),264(R11)   76
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S722: line->DenialFlag :=1;
         L     R4,68(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   548(4,R5),8(R11)   1
*S723: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S724: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S725: line->Bits->IgnoreForObs :=1;
         L     R6,68(R12)   LINE
         L     R7,0(R6)   LINE
         OI    1081(R7),16   IGNOREFOROBS
*S726: }
*S727: break;
AAH00233 J     AAH00277
* 77
*S730: /*V15.0.0, EFFECTIVED 2014-01-01 DEACTIVATED*/
*S731: case Edit->ProcCodeRequired:
* Not active for Non-OPPS
*S733: if( not claim->Bits->Nopps ) then
AAH00234 TM    3004(R9),1   NOPPS
         JNE   AAH00235
*S734: {
*S735: /*line 2 is passed*/
*S736: do GAPC.plop( Edit->ProcCodeRequired, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),268(R11)   77
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S737: do GAPC.plop( Edit->ProcCodeRequired, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),268(R11)   77
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S738: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S739: }
*S740: break;
AAH00235 J     AAH00277
* 78
*S743: /*V15.0.0, EFFECTIVED 2014-01-01 DEACTIVATED*/
*S744: case Edit->RadioPharmNuclear:
* Not active for Non-OPPS
*S746: if( not claim->Bits->Nopps ) then
AAH00236 TM    3004(R9),1   NOPPS
         JNE   AAH00237
*S747: {
*S748: do GAPC.plop( Edit->RadioPharmNuclear, line->Edits );/*v9.0*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),272(R11)   78
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S749: do GAPC.plop( Edit->RadioPharmNuclear, claim->ClaimRtpReasn );/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),272(R11)   78
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S750: claim->Bits->PrePaymentEdits:=1;/*v9.0*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S751: }
*S752: break;
AAH00237 J     AAH00277
* 79
*S755: case Edit->BloodRev:
* Not active for Non-OPPS
*S757: if( not claim->Bits->Nopps ) then
AAH00238 TM    3004(R9),1   NOPPS
         JNE   AAH00239
*S758: {
*S759: do GAPC.plop( Edit->BloodRev, line->Edits );/*v9.3*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),276(R11)   79
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S760: do GAPC.plop( Edit->BloodRev, claim->ClaimRtpReasn );/*v9.3*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),276(R11)   79
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S761: claim->Bits->PrePaymentEdits:=1;/*v9.3*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S762: }
*S763: break;
AAH00239 J     AAH00277
* 80
*S766: case Edit->MhNotPh:
* Not active for Non-OPPS
*S768: if( not claim->Bits->Nopps ) then
AAH00240 TM    3004(R9),1   NOPPS
         JNE   AAH00241
*S769: {
*S770: do GAPC.plop( Edit->MhNotPh, line->Edits );/*v9.3*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),280(R11)   80
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S771: do GAPC.plop( Edit->MhNotPh, claim->ClaimRtpReasn );/*v9.3*/
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),280(R11)   80
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S772: claim->Bits->PrePaymentEdits:=1;/*v9.3*/
         OI    3003(R9),64   PREPAYMENTEDITS
*S773: }
*S774: break;
AAH00241 J     AAH00277
* 81
*S777: /*v10.0*/
*S778: case Edit->PhNotMh:
* Not active for Non-OPPS
*S780: if( not claim->Bits->Nopps ) then
AAH00242 TM    3004(R9),1   NOPPS
         JNE   AAH00243
*S781: {
*S782: do GAPC.plop( Edit->PhNotMh, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),284(R11)   81
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S783: do GAPC.plop( Edit->PhNotMh, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),284(R11)   81
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S784: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S785: }
*S786: break;
AAH00243 J     AAH00277
* 82
*S789: /*v10.0*/
*S790: case Edit->TokenChargeOnly:
* Not active for Non-OPPS
*S792: if( not claim->Bits->Nopps ) then
AAH00244 TM    3004(R9),1   NOPPS
         JNE   AAH00245
*S793: {
*S794: do GAPC.plop( Edit->TokenChargeOnly, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),288(R11)   82
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S795: do GAPC.plop( Edit->TokenChargeOnly, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),288(R11)   82
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S796: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S797: }
*S798: break;
AAH00245 J     AAH00277
* 83
*S801: /*v10.0*/
*S802: case Edit->NCDTermination:
*S803: do GAPC.plop( Edit->NCDTermination, line->Edits );
AAH00246 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),292(R11)   83
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S804: do GAPC.plop( Edit->NCDTermination, claim->LineDenReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),292(R11)   83
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S805: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S806: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S807: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S808: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S809: break;
         J     AAH00277
* 84 Primary Code Missing, V13.0, EFFECTIVE 2012-01-01
*S812: /*V15.0.0, EFFECTIVED 2014-01-01 DEACTIVATED*/
*S813: case Edit->PrimaryCodeRequired:
* Not active for Non-OPPS
*S815: if( not claim->Bits->Nopps ) then {
AAH00247 TM    3004(R9),1   NOPPS
         JNE   AAH00248
*S816: do GAPC.plop( Edit->PrimaryCodeRequired, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),296(R11)   84
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S817: do GAPC.plop( Edit->PrimaryCodeRequired, claim->ClaimRtpReasn )
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),296(R11)   84
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S818: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S819: }
*S820: break;
AAH00248 J     AAH00277
* 85 Code is Dependant upon Another Code, V13.0
*S823: /*V15.0.0 EFFECTIVE 2014-01-01, DEACTIVATED*/
*S824: case Edit->DependentCodeRequired:
* Not active for Non-OPPS
*S826: if( not claim->Bits->Nopps ) then {
AAH00249 TM    3004(R9),1   NOPPS
         JNE   AAH00250
*S827: do GAPC.plop( Edit->DependentCodeRequired, line->Edits );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),300(R11)   85
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S828: do GAPC.plop( Edit->DependentCodeRequired, claim->ClaimRtpReasn
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),300(R11)   85
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S829: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S830: }
*S831: break;
AAH00250 J     AAH00277
* Edit 86 - Manifestation code not allowed as principal diagnosis, V14
*S834: case Edit->Manifestation:
*S835: do GAPC.plop( Edit->Manifestation, dxp->Edits );
AAH00251 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),304(R11)   86
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,72(R12)   DXP
         L     R3,0(R2)   DXP
         LA    R14,28(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S836: do GAPC.plop( Edit->Manifestation, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),304(R11)   86
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S837: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S838: break;
         J     AAH00277
* Edit 87 - Skin Substitute Edit, V15.0
*S841: case Edit->SkinSubstitute:
*S842: do GAPC.plop( Edit->SkinSubstitute, line->Edits );
AAH00252 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),308(R11)   87
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S843: do GAPC.plop( Edit->SkinSubstitute, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),308(R11)   87
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S844: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S845: break;
         J     AAH00277
* Edit 88 - FQHC Payment Code Not Reported for FQHC Claim, V15.3
*S848: case Edit->FqhcVisitRequired:
*S849: do GAPC.plop( Edit->FqhcVisitRequired, claim->ClaimRtpReasn );
AAH00253 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),312(R11)   88
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S850: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S851: break;
         J     AAH00277
* Edit 89 - FQHC Claim Lacks Required Qualifying Visit Code, V15.3
*S854: case Edit->FqhcPairRequired:
*S855: do GAPC.plop( Edit->FqhcPairRequired, line->Edits );
AAH00254 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),316(R11)   89
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S856: do GAPC.plop( Edit->FqhcPairRequired, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),316(R11)   89
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S857: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S858: break;
         J     AAH00277
* Edit 90 - Incorrect Revenue Code Reported for FQHC Payment Code, V15
*S861: case Edit->FqhcRevenueCodeRequired:
*S862: do GAPC.plop( Edit->FqhcRevenueCodeRequired, line->RevenueEdits
AAH00255 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),320(R11)   90
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,892(R3)   REVENUEEDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S863: do GAPC.plop( Edit->FqhcRevenueCodeRequired, claim->ClaimRtpRea
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),320(R11)   90
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S864: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S865: break;
         J     AAH00277
* Edit 91 - Item Or Service Not Covered under FQHC PPS, V15.3
*S868: case Edit->FqhcNonCoveredService:
*S869: do GAPC.plop( Edit->FqhcNonCoveredService, line->Edits );
AAH00256 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),324(R11)   91
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S870: do GAPC.plop( Edit->FqhcNonCoveredService, claim->LineRejReasn
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),324(R11)   91
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S871: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S872: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S873: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S874: line->ActionFlag :="5";
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,414(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),410(R11)   1
         L     R15,328(R11)   DMNSCPY
         BASR  R14,R15
*S875: break;
         J     AAH00277
* Edit 92 - New Device/Procedure Edit, V15.0
*S878: case Edit->DeviceProcedure:
*S879: do GAPC.plop( Edit->DeviceProcedure, line->Edits );
AAH00257 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),332(R11)   92
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S880: do GAPC.plop( Edit->DeviceProcedure, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),332(R11)   92
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S881: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S882: break;
         J     AAH00277
* Edit 93 - Corneal Tissue Processing Reported without Cornea Transpla
*S885: case Edit->CorneaTransplant:
*S886: do GAPC.plop( Edit->CorneaTransplant, line->Edits );
AAH00258 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),336(R11)   93
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S887: do GAPC.plop( Edit->CorneaTransplant, claim->LineRejReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),336(R11)   93
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S888: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S889: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S890: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S891: break;
         J     AAH00277
* Edit 94 - Biosimilar Must Be Reported with Appropriate Modifier, V17
*S894: case Edit->Biosimilar:
*S895: do GAPC.plop( Edit->Biosimilar, line->Edits );
AAH00259 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),340(R11)   94
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S896: do GAPC.plop( Edit->Biosimilar, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),340(R11)   94
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S897: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S898: break;
         J     AAH00277
* (OLD EDIT) Edit 95 - For weeks that have 4 or more dates of service,
* Edit 95 - Weekly partial hospitalization services require a minimum
*S902: case Edit->PHPServiceCountNotMet:
*S903: do GAPC.plop( Edit->PHPServiceCountNotMet, line->Edits );
AAH00260 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),344(R11)   95
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S904: do GAPC.plop( Edit->PHPServiceCountNotMet, claim->LineRejReasn
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),344(R11)   95
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S905: line->DenialFlag :=3;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),20(R11)   3
* DO NOT IMPACT PAYMENT, NOR FINAL DISPOSITON
* claim->Bits->PrePaymentEdits :=TRUE;
* claim->Bits->HasDenRej   :=TRUE;
*S909: break;
         J     AAH00277
* Edit 98 - Claim with pass-through device lacks required procedure, V
*S912: case Edit->PassThroughMissingCompanion:
*S913: do GAPC.plop( Edit->PassThroughMissingCompanion, line->Edits );
AAH00261 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),348(R11)   98
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S914: do GAPC.plop( Edit->PassThroughMissingCompanion, claim->ClaimRt
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),348(R11)   98
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S915: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S916: break;
         J     AAH00277
* Edit 99 - Claim with drug or biological lacks OPPS payable procedure
*S919: case Edit->DrugMissingProcedure:
*S920: do GAPC.plop( Edit->DrugMissingProcedure, line->Edits );
AAH00262 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),352(R11)   99
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S921: do GAPC.plop( Edit->DrugMissingProcedure, claim->ClaimRtpReasn
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),352(R11)   99
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S922: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S923: break;
         J     AAH00277
* Edit 100 - Claim for HSCT allogeneic transplantation lacks required
*S926: case Edit->RevenueCodeRequiredOnClaim:
*S927: do GAPC.plop( Edit->RevenueCodeRequiredOnClaim, line->Edits );
AAH00263 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),356(R11)   100
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S928: do GAPC.plop( Edit->RevenueCodeRequiredOnClaim, claim->ClaimRtp
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),356(R11)   100
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S929: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S930: break;
         J     AAH00277
* Edit 101 - Section 603 Problem, V18.0
*S933: case Edit->E101:
*S934: do GAPC.plop( Edit->E101, line->Edits );
AAH00264 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),360(R11)   101
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S935: do GAPC.plop( Edit->E101, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),360(R11)   101
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S936: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S937: break;
         J     AAH00277
* Edit 102 - Modifier Conflict, V20.0 (Definition Expanded)
*S940: case Edit->ModifierConflict:
*S941: do GAPC.plop( Edit->ModifierConflict, line->Edits );
AAH00265 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),364(R11)   102
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S942: do GAPC.plop( Edit->ModifierConflict, claim->ClaimRtpReasn );
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),364(R11)   102
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S943: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S944: break;
         J     AAH00277
* Edit 103 - Midquarter Modifier, V19.0
*S947: case Edit->MidquarterModifier:
*S948: do GAPC.plop( Edit->MidquarterModifier, claim->LineDenReasn );
AAH00266 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),368(R11)   103
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S949: do GAPC.modplop( Edit->MidquarterModifier, modinstance, line->M
         MVC   88(4,R12),368(R11)   103
         LA    R14,88(R12)
         ST    R14,64(R13)
         MVC   68(4,R13),84(R12)   MODINSTANCE
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,692(R3)   MODIFIEREDITS
         ST    R14,72(R13)
         L     R15,84(R11)   GAPCC125
         BASR  R14,R15
*S950: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S951: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S952: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S953: break;
         J     AAH00277
* Edit 104 - RHC service not eligible, V19.1
*S956: case Edit->RHCServiceNotEligibleIncRate:
*S957: do GAPC.plop( Edit->RHCServiceNotEligibleIncRate, line->Edits )
AAH00267 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),372(R11)   104
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S958: do GAPC.plop( Edit->RHCServiceNotEligibleIncRate, claim->LineRe
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),372(R11)   104
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S959: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S960: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S961: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S962: line->Bits->IgnoreForObs :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S963: break;
         J     AAH00277
* Edit 105 - Mid quarter device pair, V19.1
*S966: case Edit->MidquarterDevicePair:
*S967: do GAPC.plop( Edit->MidquarterDevicePair, line->Edits );
AAH00268 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),376(R11)   105
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S968: do GAPC.plop( Edit->MidquarterDevicePair, claim->LineDenReasn )
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),376(R11)   105
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S969: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S970: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S971: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S972: break;
         J     AAH00277
* Edit 106 - Addon code type one, V19.1
*S975: case Edit->AddonTypeOneMissingPrimary:
*S976: do GAPC.plop( Edit->AddonTypeOneMissingPrimary, line->Edits );
AAH00269 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),380(R11)   106
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S977: do GAPC.plop( Edit->AddonTypeOneMissingPrimary, claim->LineDenR
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),380(R11)   106
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S978: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S979: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S980: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S981: break;
         J     AAH00277
* Edit 107 - Addon code type two, V19.1
*S984: case Edit->AddonTypeTwoMissingPrimary:
*S985: do GAPC.plop( Edit->AddonTypeTwoMissingPrimary, line->Edits );
AAH00270 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),384(R11)   107
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S986: do GAPC.plop( Edit->AddonTypeTwoMissingPrimary, claim->LineDenR
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),384(R11)   107
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S987: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S988: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S989: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S990: break;
         J     AAH00277
* Edit 108 - Addon code type three, V19.1
*S993: case Edit->AddonTypeThreeMissingPrimary:
*S994: do GAPC.plop( Edit->AddonTypeThreeMissingPrimary, line->Edits )
AAH00271 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),388(R11)   108
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S995: do GAPC.plop( Edit->AddonTypeThreeMissingPrimary, claim->LineDe
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),388(R11)   108
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2852(R9)   LINEDENREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S996: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S997: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S998: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S999: break;
         J     AAH00277
* Edit 109 - Mental Health Dx missing from first secondary Dx position
*S1002: case Edit->CodeFirstRequiresMH:
*S1003: do GAPC.plop( Edit->CodeFirstRequiresMH, claim->ClaimRtpReasn
AAH00272 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),392(R11)   109
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2480(R9)   CLAIMRTPREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1004: claim->Bits->PrePaymentEdits:=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S1005: break;
         J     AAH00277
* Edit 110 - Code reported prior to activation date, V20.0
*S1008: case Edit->ReportedPriorToApprovalDate:
*S1009: do GAPC.plop( Edit->ReportedPriorToApprovalDate, line->Edits )
AAH00273 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),396(R11)   110
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1010: do GAPC.plop( Edit->ReportedPriorToApprovalDate, claim->LineRe
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),396(R11)   110
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1011: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S1012: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S1013: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S1014: break;
         J     AAH00277
* Edit 111 - Code reported prior to activation date, V20.2
*S1017: case Edit->BundledInBiological:
*S1018: do GAPC.plop(Edit->BundledInBiological, line->Edits);
AAH00274 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),400(R11)   111
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1019: do GAPC.plop(Edit->BundledInBiological, claim->LineRejReasn);
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),400(R11)   111
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1020: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S1021: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S1022: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S1023: break;
         J     AAH00277
* Edit 112 - Code reported prior to activation date, V21.0
*S1026: case Edit->InformationOnly:
*S1027: do GAPC.plop(Edit->InformationOnly, line->Edits);
AAH00275 LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),404(R11)   112
         LA    R14,92(R12)
         ST    R14,64(R13)
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,572(R3)   EDITS
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1028: do GAPC.plop(Edit->InformationOnly, claim->LineRejReasn);
         LA    R14,88(R12)
         ST    R14,60(R13)
         MVC   92(4,R12),404(R11)   112
         LA    R14,92(R12)
         ST    R14,64(R13)
         LA    R14,2728(R9)   LINEREJREASN
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC124
         BASR  R14,R15
*S1029: line->DenialFlag :=1;
         L     R2,68(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   548(4,R3),8(R11)   1
*S1030: claim->Bits->HasDenRej :=1;
         OI    3004(R9),128   HASDENREJ
*S1031: claim->Bits->PrePaymentEdits :=1;
         OI    3003(R9),64   PREPAYMENTEDITS
*S1032: break;
AAH00277 EQU   *
AAH00278 EQU   *
AAH00279 EQU   *
AAH00280 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC092
**************************
GAPCC092 CSECT
GAPCC092 AMODE ANY
GAPCC092 RMODE ANY
*XREF - GAPCC092 GAPC.CheckInpatient
*  R11 + 0000 Literals        (112 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (64 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line)
*        0080(R12)-> Integer len 4 (suppressE18)
*        0084(R12)-> Integer len 4 (suppressE49)
*        0088(R12)-> Integer len 4 (diedOrTransferredCount)
*        0092(R12)-> Integer len 4 (comprehensiveInpatient)
*        0096(R12)-> Integer len 4 (diedOrTransferredStatusCode)
*        0100(R12)-> Integer len 4 (hasTKA)
*        0104(R12)-> Integer len 4 (suppressE18ForTKA)
*        0108(R12)-> Integer len 4 (bypassTKACheck)
*        0112(R12)-> Unknown ()
*        0112(R12)-> Integer len 4 ()
*        0116(R12)-> Integer len 4 ()
*        0120(R12)-> Integer len 4 ()
*        0124(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 136)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,136  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00303
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    A(DMNATFD) @00008
         DC    A(GAPCC119) @00012
         DC    F'60' @00016
         DC    A(GAPCC091) @00020
         DC    F'70' @00024
         DC    A(DMNSCPY) @00028
         DC    A(GAPCC115) @00032
         DC    A(GAPCC114) @00036
         DC    F'18' @00040
         DC    F'49' @00044
         DC    A(DMNFREE) @00048
         DC    H'2'  0 2 @00052
         DC    H'10'  0 10 @00054
         DC    H'1120'  4 96 @00056
         DC    H'5'  0 5 @00058
         DC    CL2'13' @00060
         DC    CL2'12' @00062
         DC    CL2'20' @00064
         DC    CL2'02' @00066
         DC    CL2'05' @00068
         DC    CL2'62' @00070
         DC    CL2'63' @00072
         DC    CL2'65' @00074
         DC    CL2'66' @00076
         DC    CL2'82' @00078
         DC    CL2'85' @00080
         DC    CL2'90' @00082
         DC    CL2'91' @00084
         DC    CL2'93' @00086
         DC    CL2'94' @00088
         DC    CL5'27447' @00090
         DC    CL5'01402' @00095
         DC    CL5'05881' @00100
         DC    CL5'00375' @00105
AAH00303 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(60,R12),72(R12)
         ST    R2,132(R12)
* Edits 60, 70, 18, 49 and TKA
* CRITERIA FOR COMPREHENSIVE INPATIENT APC
*S1049: if( 61 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAH00308
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAH00307
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00306
         TM    3001(R9),16   HASCCW2
         JNE   AAH00307
AAH00306 J     AAH00308
*S1050: and (
*S1051: base->BillType="13"
*S1052: or ( base->BillType="12" and claim->Bits->HasCcW2 )
*S1053: ) ) then {
*S1054: comprehensiveInpatient:=1;
AAH00307 MVC   92(4,R12),4(R11)   1
*S1055: }
* CRITERIA FOR DIED OR TRANSFERRED STATUS CODE
*S1058: if( claim->StatusCode="20"
AAH00308 LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,64(R11)   20
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00311
         L     R3,1868(R9)   VERSION
         CHI   R3,61
         JNH   AAH00310
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,66(R11)   02
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   05
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   62
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   63
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,74(R11)   65
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,76(R11)   66
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,78(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,80(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,82(R11)   90
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R11)   91
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)   93
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00309
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R11)   94
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00310
AAH00309 J     AAH00311
AAH00310 J     AAH00312
*S1059: or ( 61 < base->Version
*S1060: and (
*S1061: claim->StatusCode="02"
*S1062: or claim->StatusCode="05"
*S1063: or claim->StatusCode="62"
*S1064: or claim->StatusCode="63"
*S1065: or claim->StatusCode="65"
*S1066: or claim->StatusCode="66"
*S1067: or claim->StatusCode="82"
*S1068: or claim->StatusCode="85"
*S1069: or claim->StatusCode="90"
*S1070: or claim->StatusCode="91"
*S1071: or claim->StatusCode="93"
*S1072: or claim->StatusCode="94"
*S1073: )
*S1074: ) ) then {
*S1075: diedOrTransferredStatusCode:=1;
AAH00311 MVC   96(4,R12),4(R11)   1
*S1076: }
* Edit 18 - Inpatient Procedure - redefined for v4.0
*S1079: loop(day:=base->firstVisit; day; day:=day->nextVisit) {
AAH00312 MVC   72(4,R12),60(R9)   FIRSTVISIT
AAH00313 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAH00367
*S1080: reset suppressE18;
         XC    80(4,R12),80(R12)
* V19.2: Check to see if we need to bypass edit 18 for anesthesia code
* In the event that TKA exists on the claim, we want to package and
* bypass edit 18 for the anesthesia codes. Once we've set this flag we
* need to do it again.
*S1085: if(base->Version >= 70 and not bypassTKACheck and comprehensiv
         L     R2,1868(R9)   VERSION
         CHI   R2,70
         JL    AAH00325
         L     R15,108(R12)   BYPASSTKACHECK
         LTR   R15,R15
         JNE   AAH00325
         L     R15,92(R12)   COMPREHENSIVEINPATIENT
         LTR   R15,R15
         JE    AAH00325
*S1086: bypassTKACheck := 1;
         MVC   108(4,R12),4(R11)   1
*S1087: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00314 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00318
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),54(R11)   10
         MVC   66(2,R13),56(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00318
*S1088: if (line->Hcpcs="27447" and not hasTKA) then {
         L     R2,76(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   27447
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00315
         L     R15,100(R12)   HASTKA
         LTR   R15,R15
         JNE   AAH00315
*S1089: hasTKA := 1;
         MVC   100(4,R12),4(R11)   1
AAH00315 EQU   *
AAH00316 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00317
         L     R2,8(R2)
AAH00317 ST    R2,4(R9)   ITEM
         J     AAH00314
*S1090: }
*S1091: }
* If we have TKA on the claim all anesthesia codes on the claim get
* packaged and we suppress edit 18 for them.
*S1094: if(hasTKA) then {
AAH00318 L     R15,100(R12)   HASTKA
         LTR   R15,R15
         JE    AAH00324
*S1095: suppressE18ForTKA := 1;
         MVC   104(4,R12),4(R11)   1
*S1096: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00319 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00323
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),54(R11)   10
         MVC   66(2,R13),56(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00323
*S1097: if(line->Hcpcs = "01402" and line->PackagingFlag != 1) then {
         L     R2,76(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,95(R11)   01402
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00320
         L     R4,76(R12)   LINE
         L     R5,540(R4)   PACKAGINGFLAG
         CHI   R5,1
         JE    AAH00320
*S1098: do GAPC.PackageCode(line);
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC119
         BASR  R14,R15
AAH00320 EQU   *
AAH00321 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00322
         L     R2,8(R2)
AAH00322 ST    R2,4(R9)   ITEM
         J     AAH00319
*S1099: }
*S1100: }
*S1101: }
*S1102: }
* BYPASS INPATIENT LOGIC FOR THIS DAY IF THE ADSM FLAG (LIAF 8) IS SET
* OR NO INPATIENT PROCEDURES EXIST ON THE DAY.
*S1105: if( not ( day->Bits->HasNonSepProc or day->Bits->HasSepProc )
AAH00323 EQU   *
AAH00324 EQU   *
AAH00325 L     R2,72(R12)   DAY
         TM    625(R2),64   HASNONSEPPROC
         JNE   AAH00326
         L     R3,72(R12)   DAY
         TM    625(R3),128   HASSEPPROC
         JNE   AAH00326
         J     AAH00366
* BILL TYPES COVERED: 13X,12X,14X,85X
*S1107: if( base->control->Observation ) then {/*v6.1 removing hard co
AAH00326 TM    1970(R9),64   OBSERVATION
         JE    AAH00357
* FIRST ADD UP THE UNITS FOR EACH INPAT LINE WITH 'DiedOrTransferred'
* TO ENSURE THAT THERE IS NOT MORE THAN ONE INSTANCE ON THIS DAY
*S1110: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00327 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00332
*S1111: if( line->Bits->DiedOrTransferred
         L     R2,76(R12)   LINE
         TM    1082(R2),64   DIEDORTRANSFERRED
         JE    AAH00330
         L     R3,76(R12)   LINE
         TM    1082(R3),128   HASNONSEPPROC
         JNE   AAH00329
         L     R4,76(R12)   LINE
         TM    1081(R4),1   HASSEPPROC
         JE    AAH00328
         L     R5,72(R12)   DAY
         TM    625(R5),32   HASTYPET
         JNE   AAH00328
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAH00329
AAH00328 J     AAH00330
*S1112: and ( line->Bits->HasNonSepProc
*S1113: or ( line->Bits->HasSepProc and not ( day->Bits->HasTypeT or c
*S1114: ) ) then {
*S1115: diedOrTransferredCount +=line->ServiceUnits;
AAH00329 L     R2,76(R12)   LINE
         L     R3,88(R12)   DIEDORTRANSFERREDCOUNT
         A     R3,468(R2)   SERVICEUNITS
         ST    R3,88(R12)   DIEDORTRANSFERREDCOUNT
AAH00330 EQU   *
AAH00331 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00327
*S1116: }
*S1117: }
* NOW EITHER ASSIGN APC 977 (<v14) or 375 (>=v14) IF THERE IS ONLY ONE
* LINE W 'ERDIED' AND ONLY ONE UNIT AND NO PATIENT STATUS 20,
* OR ASSIGN EDIT 60 TO ALL INPAT LINES WITH 'ERDIED' FLAGGED
*S1121: /*v6.1 OR ASSIGN EDIT 70 TO ALL INPAT LINES WITH 'ERDIED' FLAG
*S1122: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAH00332 L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00333 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00356
*S1123: if( line->Bits->DiedOrTransferred
         L     R2,76(R12)   LINE
         TM    1082(R2),64   DIEDORTRANSFERRED
         JE    AAH00354
         L     R3,76(R12)   LINE
         TM    1082(R3),128   HASNONSEPPROC
         JNE   AAH00335
         L     R4,76(R12)   LINE
         TM    1081(R4),1   HASSEPPROC
         JE    AAH00334
         L     R5,72(R12)   DAY
         TM    625(R5),32   HASTYPET
         JNE   AAH00334
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAH00335
AAH00334 J     AAH00354
*S1124: and ( line->Bits->HasNonSepProc
*S1125: or ( line->Bits->HasSepProc and not ( day->Bits->HasTypeT or c
*S1126: ) ) then {
* IF AN INPATIENT CODE IS PRESENT WITH THE DIED OR TRANSFERRED MODIFIE
*S1128: if( not suppressE18 ) then {
AAH00335 L     R15,80(R12)   SUPPRESSE18
         LTR   R15,R15
         JNE   AAH00336
*S1129: suppressE18 :=1;
         MVC   80(4,R12),4(R11)   1
*S1130: }
* Edit 60 - Use of Modifier CA with More Than One Procedure Not Allowe
*S1132: if( 1 < diedOrTransferredCount ) then {
AAH00336 L     R2,88(R12)   DIEDORTRANSFERREDCOUNT
         CHI   R2,1
         JNH   AAH00337
*S1133: do GAPC.SetEdit( Edit->MultErDied, line, base->NoDxp, base->No
         MVC   112(4,R12),16(R11)   60
         LA    R14,112(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,80(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S1134: }
* Edit 70 - CA Modifier Requires Patient Died or Transferred Patient S
* V18.0, EFFECTIVE RETROACTIVE TO 2016-01-01, REIMPLEMENTATION OF EDIT
*S1137: if( not diedOrTransferredStatusCode ) then {
AAH00337 L     R15,96(R12)   DIEDORTRANSFERREDSTATUSCODE
         LTR   R15,R15
         JNE   AAH00338
*S1138: do GAPC.SetEdit( Edit->InpatientStatusCode, line, base->NoDxp,
         MVC   112(4,R12),24(R11)   70
         LA    R14,112(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,80(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
*S1139: }
*S1140: if( diedOrTransferredCount < 2
AAH00338 L     R2,88(R12)   DIEDORTRANSFERREDCOUNT
         CHI   R2,2
         JNL   AAH00353
         L     R15,96(R12)   DIEDORTRANSFERREDSTATUSCODE
         LTR   R15,R15
         JE    AAH00353
*S1141: and diedOrTransferredStatusCode ) then {
* V17.0, EFFECTIVE 2016-01-01, INPATIENT COMPREHENSIVE APC TAKES PRECE
* MUST RESTRICT THE BILL TYPE HERE BECAUSE OLD INPATIENT LOGIC STILL V
* COMPREHENSIVE SERVICE BILL TYPES.
*S1145: if( comprehensiveInpatient ) then {
         L     R15,92(R12)   COMPREHENSIVEINPATIENT
         LTR   R15,R15
         JE    AAH00345
*S1146: do GAPC.SetApcAssignment( line, "05881" );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,124(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,100(R11)   05881
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,124(R12)
         ST    R14,68(R13)
         L     R15,32(R11)   GAPCC115
         BASR  R14,R15
*S1147: claim->PrimaryComprehensive :=line;
         MVC   1972(4,R9),76(R12)   LINE
*S1148: claim->Bits->InpApcSet |=1;
         TM    3005(R9),1   INPAPCSET
         JNE   AAH00339
         XR    R2,R2
         J     AAH00340
AAH00339 LHI   R2,1
AAH00340 EQU   *
AAH00341 O     R2,4(R11)   1
         LTR   R2,R2
         JNE   AAH00342
         NI    3005(R9),254   INPAPCSET
         J     AAH00343
AAH00342 OI    3005(R9),1   INPAPCSET
*S1149: day->Bits->InpApcSet :=1;
AAH00343 L     R3,72(R12)   DAY
         OI    626(R3),64   INPAPCSET
*S1150: line->Bits->InpApcSet :=1;
         L     R4,76(R12)   LINE
         OI    1083(R4),2   INPAPCSET
* E49 IS SUPPRESSED ACROSS THE CLAIM FOR CAPC, DON'T RESET AND THE DAY
*S1152: suppressE49 :=1;
         MVC   84(4,R12),4(R11)   1
* NO COMPLEXITY ADJUSTMENT FOR INPATIENT CAPC
*S1154: if( claim->Bits->SuppressComplexityAdjustment ) then {
         TM    3005(R9),2   SUPPRESSCOMPLEXITYADJUSTMENT
         JE    AAH00344
*S1155: claim->Bits->SuppressComplexityAdjustment:=0;
         NI    3005(R9),253   SUPPRESSCOMPLEXITYADJUSTMENT
AAH00344 J     AAH00352
*S1156: }
*S1157: }
*S1158: else if (base -> Version < 62) then {
AAH00345 L     R2,1868(R9)   VERSION
         CHI   R2,62
         JNL   AAH00351
*S1159: do GAPC.SetApcAssignment( line, "00375" );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,124(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,105(R11)   00375
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,28(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,124(R12)
         ST    R14,68(R13)
         L     R15,32(R11)   GAPCC115
         BASR  R14,R15
*S1160: do GAPC.ReduceUnits( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC114
         BASR  R14,R15
*S1161: claim->Bits->InpApcSet |=1;
         TM    3005(R9),1   INPAPCSET
         JNE   AAH00346
         XR    R3,R3
         J     AAH00347
AAH00346 LHI   R3,1
AAH00347 EQU   *
AAH00348 O     R3,4(R11)   1
         LTR   R3,R3
         JNE   AAH00349
         NI    3005(R9),254   INPAPCSET
         J     AAH00350
AAH00349 OI    3005(R9),1   INPAPCSET
*S1162: day->Bits->InpApcSet :=1;
AAH00350 L     R4,72(R12)   DAY
         OI    626(R4),64   INPAPCSET
*S1163: line->Bits->InpApcSet :=1;
         L     R5,76(R12)   LINE
         OI    1083(R5),2   INPAPCSET
AAH00351 EQU   *
AAH00352 EQU   *
AAH00353 EQU   *
AAH00354 EQU   *
AAH00355 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00333
*S1164: }
*S1165: }
*S1166: }
*S1167: }
*S1168: }
* APPLY EDIT 18 IF WE HAVE NOT FOUND A PAYABLE INPATIENT PROCEDURE ON
* V19.2 TKA ANETHESIA CODES DO NOT GET EDIT 18 IF THE EDIT IS SUPRESSE
*S1172: if( not suppressE18 ) then {
AAH00356 EQU   *
AAH00357 L     R15,80(R12)   SUPPRESSE18
         LTR   R15,R15
         JNE   AAH00365
*S1173: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00358 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00364
* We don't want edit 18 on any TKA anesthesia code if the suppression
*S1175: if suppressE18ForTKA and line->Hcpcs = "01402" then continue;
         L     R15,104(R12)   SUPPRESSE18FORTKA
         LTR   R15,R15
         JE    AAH00359
         L     R2,76(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,95(R11)   01402
         ST    R14,64(R13)
         MVC   70(2,R13),58(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00359
         J     AAH00363
*S1176: if(line->Bits->HasNonSepProc
AAH00359 L     R2,76(R12)   LINE
         TM    1082(R2),128   HASNONSEPPROC
         JNE   AAH00361
         L     R3,76(R12)   LINE
         TM    1081(R3),1   HASSEPPROC
         JE    AAH00360
         L     R4,72(R12)   DAY
         TM    625(R4),32   HASTYPET
         JNE   AAH00360
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAH00361
AAH00360 J     AAH00362
*S1177: or (line->Bits->HasSepProc
*S1178: and not (day->Bits->HasTypeT or claim->PrimaryComprehensive)))
* Edit 18 - Inpatient Procedure on Outpatient Claim
*S1180: do GAPC.SetEdit( Edit->InpatientProc, line, base->NoDxp, day,
AAH00361 MVC   112(4,R12),40(R11)   18
         LA    R14,112(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,80(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAH00362 EQU   *
AAH00363 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00358
AAH00364 EQU   *
AAH00365 EQU   *
AAH00366 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAH00313
*S1181: }
*S1182: }
*S1183: }
*S1184: }
* IF WE HAD PAYABLE INPATIENT PROC(S) (APC 977 <v14,375 >=v14), WE PAY
* THAT PROCEDURE. ALL OTHER PROCS ON THE SAME DAY CHANGED TO SI=N AND
* NOTE: FOR TRICARE ONLY ONE LINE GETS THE PAYABLE INPATIENT APC
*S1189: loop( day:=base->firstVisit; day; day:=day->nextVisit ){/*v4.0
AAH00367 MVC   72(4,R12),60(R9)   FIRSTVISIT
AAH00368 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAH00386
*S1191: if( day->Bits->InpApcSet ) then {/*v4.0 exclude payable proc;
         L     R2,72(R12)   DAY
         TM    626(R2),64   INPAPCSET
         JE    AAH00379
*S1192: if( 61 < base->Version ) then {
         L     R3,1868(R9)   VERSION
         CHI   R3,61
         JNH   AAH00373
* NEW VERSION FOR COMPREHENSIVE INPATIENT DIED OR TRANSFERRED PROCEDUR
*S1194: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R4,72(R12)   DAY
         MVC   76(4,R12),8(R4)   FIRSTDAYSITEMS
AAH00369 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00372
*S1195: if( not line->Bits->InpApcSet ) then {
         L     R2,76(R12)   LINE
         TM    1083(R2),2   INPAPCSET
         JNE   AAH00370
*S1196: line->Bits->IgnoreForObs :=1;
         L     R3,76(R12)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S1197: line->Bits->IgnoreInpat :=1;
         L     R4,76(R12)   LINE
         OI    1081(R4),32   IGNOREINPAT
AAH00370 EQU   *
AAH00371 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00369
AAH00372 J     AAH00378
*S1198: }
*S1199: }
*S1200: }
*S1201: else{
*S1202: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAH00373 L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00374 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00377
* TRICARE ONLY PAYS ONE INPATIENT DIED OR TRANSFERRED PROCEDURE PER DA
* OR TRANSFERRED PROCEDURES. E60 IS OMITTED TO CHECK FOR MULTIPLE INPA
*S1205: if( not line->Bits->InpApcSet ) then {
         L     R2,76(R12)   LINE
         TM    1083(R2),2   INPAPCSET
         JNE   AAH00375
*S1206: do GAPC.PackageCode( line );
         LA    R14,76(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC119
         BASR  R14,R15
*S1207: line->Bits->IgnoreForObs:=1;/*v4.0 Ignore lines on same day th
         L     R3,76(R12)   LINE
         OI    1081(R3),16   IGNOREFOROBS
*S1208: line->Bits->IgnoreInpat :=1;/*v4.0 way as edit 49 lines are ig
         L     R4,76(R12)   LINE
         OI    1081(R4),32   IGNOREINPAT
AAH00375 EQU   *
AAH00376 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00374
*S1209: }
*S1210: }
*S1211: }
*S1212: }
* IF WE HAD AN INPATIENT PROCEDURE THAT WAS DENIED WITH EDIT 18, ALL T
*S1215: /*7.1T added differentiation due to possibility of DayDeny fla
* V17.1 EFFECTIVE 2016-01-01, DO NOT APPLY E49 IF NEW ER DIED COMPREHE
*S1217: if( day->Bits->DayDeniedE1849
AAH00377 EQU   *
AAH00378 EQU   *
AAH00379 L     R2,72(R12)   DAY
         TM    624(R2),8   DAYDENIEDE1849
         JE    AAH00384
         L     R15,84(R12)   SUPPRESSE49
         LTR   R15,R15
         JNE   AAH00384
*S1218: and not suppressE49 ) then {
*S1219: day->Bits->DayDenied :=1;/*7.1T set this now here and not in s
         L     R2,72(R12)   DAY
         OI    624(R2),16   DAYDENIED
*S1220: claim->Bits->HasDayDenied :=1;
         OI    3004(R9),32   HASDAYDENIED
*S1221: claim->Bits->HasDayDeniedE1849 :=1;/*7.1T added to differentia
         OI    3004(R9),16   HASDAYDENIEDE1849
*S1222: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAH00380 L     R15,76(R12)   LINE
         LTR   R15,R15
         JE    AAH00383
*S1223: if( line->DenialFlag=0
         L     R2,76(R12)   LINE
         L     R3,548(R2)   DENIALFLAG
         LTR   R3,R3
         JNE   AAH00381
         L     R4,76(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAH00381
*S1224: and not line->Bits->IgnoreInpat ) then {
* Edit 49  - Same Day as Inpatient Procedure
*S1226: do GAPC.SetEdit( Edit->SameDayAsInpat, line, base->NoDxp, day,
         MVC   112(4,R12),44(R11)   49
         LA    R14,112(R12)
         ST    R14,64(R13)
         LA    R14,76(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,72(R12)   DAY
         ST    R14,76(R13)
         XC    116(4,R12),116(R12)
         LA    R14,116(R12)
         ST    R14,80(R13)
         XC    120(4,R12),120(R12)
         LA    R14,120(R12)
         ST    R14,84(R13)
         L     R15,20(R11)   GAPCC091
         BASR  R14,R15
AAH00381 EQU   *
AAH00382 L     R2,76(R12)   LINE
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00380
AAH00383 EQU   *
AAH00384 EQU   *
AAH00385 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAH00368
AAH00386 EQU   *
AAH00387 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,48(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC093
**************************
GAPCC093 CSECT
GAPCC093 AMODE ANY
GAPCC093 RMODE ANY
*XREF - GAPCC093 GAPC.DoBloodLogic
*  R11 + 0000 Literals        (40 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (76 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> reference to Struct len 1120 (BloodLine)
*        0076(R12)-> reference to Struct len 1120 (BLmod39BloodFirst)
*        0080(R12)-> reference to Struct len 1120 (BLmod39BloodLast)
*        0084(R12)-> reference to Struct len 1120 (BLmod38BloodFirst)
*        0088(R12)-> reference to Struct len 1120 (BLmod38BloodLast)
*        0092(R12)-> reference to Struct len 1120 (all39BloodFirst)
*        0096(R12)-> reference to Struct len 1120 (all39BloodLast)
*        0100(R12)-> reference to Struct len 1120 (all38BloodFirst)
*        0104(R12)-> reference to Struct len 1120 (all38BloodLast)
*        0108(R12)-> reference to Struct len 1120 (noBLmod38BloodFirst
*        0112(R12)-> reference to Struct len 1120 (noBLmod38BloodLast)
*        0116(R12)-> Integer len 4 (BL39Sum)
*        0120(R12)-> Integer len 4 (BL38Sum)
*        0124(R12)-> Integer len 4 (Has39BL38noBL)
*        0128(R12)-> Unknown ()
*        0128(R12)-> Integer len 4 ()
*        0132(R12)-> Integer len 4 ()
*        0136(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 144)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,144  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00403
         DC    F'79' @00000
         DC    A(GAPCC091) @00004
         DC    A(DMNSCMP) @00008
         DC    F'73' @00012
         DC    F'1' @00016
         DC    F'2' @00020
         DC    F'3' @00024
         DC    F'4' @00028
         DC    F'5' @00032
         DC    F'6' @00036
AAH00403 XC    64(76,R12),64(R12)
* v6.2 Blood Billing Logic - Edit 73 and payment adjustment 5,6
* Edits 73
*S1258: loop( day:=base->firstVisit; day; day:=day->nextVisit )
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAH00406 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAH00494
*S1259: {
*S1260: /*************Check that certain rev codes must contain only c
*S1261: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00407 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAH00413
*S1262: {
* v9.3, eff 10/1/08 Edit 79
*S1264: if( (
*S1265: ( line->RevenueCode=381 and not line->flags->PackedRedCells )
         L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,381
         JNE   AAH00408
         L     R4,68(R12)   LINE
         TM    1090(R4),1   PACKEDREDCELLS
         JE    AAH00410
AAH00408 L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,382
         JNE   AAH00409
         L     R4,68(R12)   LINE
         TM    1091(R4),128   WHOLEBLOOD
         JE    AAH00410
AAH00409 J     AAH00411
AAH00410 L     R2,68(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH00411
         L     R3,68(R12)   LINE
         TM    1081(R3),32   IGNOREINPAT
         JNE   AAH00411
*S1266: or
*S1267: ( line->RevenueCode=382 and not line->flags->WholeBlood )
*S1268: )
*S1269: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1270: do GAPC.SetEdit( Edit->BloodRev, line, base->NoDxp, base->NoDa
         MVC   128(4,R12),0(R11)   79
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    132(4,R12),132(R12)
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAH00411 EQU   *
AAH00412 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00407
*S1271: }
*S1272: }
*S1274: if( day->Bits->HasBloodProd ) then
AAH00413 L     R2,64(R12)   DAY
         TM    626(R2),128   HASBLOODPROD
         JE    AAH00492
*S1275: {
*S1276: /*each list is re-used each day, so we need to re-init the poi
*S1277: reset BLmod39BloodFirst;
         XC    76(4,R12),76(R12)
*S1278: reset BLmod39BloodLast;
         XC    80(4,R12),80(R12)
*S1279: reset BLmod38BloodFirst;
         XC    84(4,R12),84(R12)
*S1280: reset BLmod38BloodLast;
         XC    88(4,R12),88(R12)
*S1281: reset all39BloodFirst;
         XC    92(4,R12),92(R12)
*S1282: reset all39BloodLast;
         XC    96(4,R12),96(R12)
*S1283: reset all38BloodFirst;
         XC    100(4,R12),100(R12)
*S1284: reset all38BloodLast;
         XC    104(4,R12),104(R12)
*S1285: reset noBLmod38BloodFirst;
         XC    108(4,R12),108(R12)
*S1286: reset noBLmod38BloodFirst;
         XC    108(4,R12),108(R12)
*S1288: /*************************************************************
*S1289: /**********I.  Create this day's blood lists used in the flowc
*S1290: /*************************************************************
*S1291: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R3,64(R12)   DAY
         MVC   68(4,R12),8(R3)   FIRSTDAYSITEMS
AAH00414 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAH00440
*S1292: {
*S1293: if( line->flags->BloodProduct
         L     R2,68(R12)   LINE
         TM    1090(R2),2   BLOODPRODUCT
         JE    AAH00438
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAH00438
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAH00438
*S1294: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1295: {
*S1297: /*create list of 39x, w/ BL mod*/
*S1298: reset BloodLine;
         XC    72(4,R12),72(R12)
*S1299: if( line->Bits->Has39x and line->Bits->HasBLModifier ) then
         L     R2,68(R12)   LINE
         TM    1083(R2),16   HAS39X
         JE    AAH00421
         L     R3,68(R12)   LINE
         TM    1083(R3),4   HASBLMODIFIER
         JE    AAH00421
*S1300: {
*S1301: if( BLmod39BloodLast ) then
         L     R15,80(R12)   BLMOD39BLOODLAST
         LTR   R15,R15
         JE    AAH00415
*S1302: BLmod39BloodLast->nextBLmod39Blood:=line;
         L     R2,80(R12)   BLMOD39BLOODLAST
         MVC   20(4,R2),68(R12)   LINE
         J     AAH00416
*S1303: else BLmod39BloodFirst:=line;
AAH00415 MVC   76(4,R12),68(R12)   LINE
*S1304: BLmod39BloodLast:=line;
AAH00416 MVC   80(4,R12),68(R12)   LINE
*S1305: loop( BloodLine:=BLmod39BloodFirst; BloodLine; BloodLine:=Bloo
         MVC   72(4,R12),76(R12)   BLMOD39BLOODFIRST
AAH00417 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00420
*S1306: {
*S1307: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00418
*S1308: {
*S1309: BloodLine->BL39Sum+=line->ServiceUnits;
         L     R5,72(R12)   BLOODLINE
         L     R6,72(R12)   BLOODLINE
         L     R7,68(R12)   LINE
         L     R8,1072(R6)   BL39SUM
         A     R8,468(R7)   SERVICEUNITS
         ST    R8,1072(R5)   BL39SUM
*S1310: break;/* drop out of the loop with non-null line for 1st match
         J     AAH00420
AAH00418 EQU   *
AAH00419 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),20(R2)   NEXTBLMOD39BLOOD
         J     AAH00417
*S1311: }
*S1312: }
*S1313: }
*S1315: /*create list of 38x, w/ BL mod*/
*S1316: reset BloodLine;
AAH00420 EQU   *
AAH00421 XC    72(4,R12),72(R12)
*S1317: if( line->Bits->Has38x and line->Bits->HasBLModifier ) then
         L     R2,68(R12)   LINE
         TM    1083(R2),8   HAS38X
         JE    AAH00428
         L     R3,68(R12)   LINE
         TM    1083(R3),4   HASBLMODIFIER
         JE    AAH00428
*S1318: {
*S1319: if( BLmod38BloodLast ) then
         L     R15,88(R12)   BLMOD38BLOODLAST
         LTR   R15,R15
         JE    AAH00422
*S1320: BLmod38BloodLast->nextBLmod38Blood:=line;
         L     R2,88(R12)   BLMOD38BLOODLAST
         MVC   24(4,R2),68(R12)   LINE
         J     AAH00423
*S1321: else BLmod38BloodFirst:=line;
AAH00422 MVC   84(4,R12),68(R12)   LINE
*S1322: BLmod38BloodLast:=line;
AAH00423 MVC   88(4,R12),68(R12)   LINE
*S1323: loop( BloodLine:=BLmod38BloodFirst; BloodLine; BloodLine:=Bloo
         MVC   72(4,R12),84(R12)   BLMOD38BLOODFIRST
AAH00424 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00427
*S1324: {
*S1325: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00425
*S1326: {
*S1327: BloodLine->BL38Sum+=line->ServiceUnits;
         L     R5,72(R12)   BLOODLINE
         L     R6,72(R12)   BLOODLINE
         L     R7,68(R12)   LINE
         L     R8,1068(R6)   BL38SUM
         A     R8,468(R7)   SERVICEUNITS
         ST    R8,1068(R5)   BL38SUM
*S1328: break;/* drop out of the loop with non-null line for 1st match
         J     AAH00427
AAH00425 EQU   *
AAH00426 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),24(R2)   NEXTBLMOD38BLOOD
         J     AAH00424
*S1329: }
*S1330: }
*S1331: }
*S1333: /*create list of 39x all blood lines*/
*S1334: if( line->Bits->Has39x ) then
AAH00427 EQU   *
AAH00428 L     R2,68(R12)   LINE
         TM    1083(R2),16   HAS39X
         JE    AAH00431
*S1335: {
*S1336: if( all39BloodLast ) then
         L     R15,96(R12)   ALL39BLOODLAST
         LTR   R15,R15
         JE    AAH00429
*S1337: all39BloodLast->nextall39Blood:=line;
         L     R3,96(R12)   ALL39BLOODLAST
         MVC   28(4,R3),68(R12)   LINE
         J     AAH00430
*S1338: else all39BloodFirst:=line;
AAH00429 MVC   92(4,R12),68(R12)   LINE
*S1339: all39BloodLast:=line;
AAH00430 MVC   96(4,R12),68(R12)   LINE
*S1340: }
*S1342: /*create list of 38x all blood lines*/
*S1343: if( line->Bits->Has38x ) then
AAH00431 L     R2,68(R12)   LINE
         TM    1083(R2),8   HAS38X
         JE    AAH00434
*S1344: {
*S1345: if( all38BloodLast ) then
         L     R15,104(R12)   ALL38BLOODLAST
         LTR   R15,R15
         JE    AAH00432
*S1346: all38BloodLast->nextall38Blood:=line;
         L     R3,104(R12)   ALL38BLOODLAST
         MVC   32(4,R3),68(R12)   LINE
         J     AAH00433
*S1347: else all38BloodFirst:=line;
AAH00432 MVC   100(4,R12),68(R12)   LINE
*S1348: all38BloodLast:=line;
AAH00433 MVC   104(4,R12),68(R12)   LINE
*S1349: }
*S1351: /*create list of 38x all blood lines w/out BL mod, this code*/
*S1352: if( line->Bits->Has38x and not line->Bits->HasBLModifier ) the
AAH00434 L     R2,68(R12)   LINE
         TM    1083(R2),8   HAS38X
         JE    AAH00437
         L     R3,68(R12)   LINE
         TM    1083(R3),4   HASBLMODIFIER
         JNE   AAH00437
*S1353: {
*S1354: if( noBLmod38BloodLast ) then
         L     R15,112(R12)   NOBLMOD38BLOODLAST
         LTR   R15,R15
         JE    AAH00435
*S1355: noBLmod38BloodLast->nextnoBLmod38Blood:=line;
         L     R2,112(R12)   NOBLMOD38BLOODLAST
         MVC   36(4,R2),68(R12)   LINE
         J     AAH00436
*S1356: else noBLmod38BloodFirst:=line;
AAH00435 MVC   108(4,R12),68(R12)   LINE
*S1357: noBLmod38BloodLast:=line;
AAH00436 MVC   112(4,R12),68(R12)   LINE
AAH00437 EQU   *
AAH00438 EQU   *
AAH00439 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00414
*S1358: }
*S1360: }
*S1361: }
*S1363: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
AAH00440 L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00441 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAH00491
*S1364: {
*S1365: if( line->flags->BloodProduct
         L     R2,68(R12)   LINE
         TM    1090(R2),2   BLOODPRODUCT
         JE    AAH00489
         L     R3,68(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAH00489
         L     R4,68(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAH00489
*S1366: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1367: {
*S1368: if( line->Bits->Has39x ) then
         L     R2,68(R12)   LINE
         TM    1083(R2),16   HAS39X
         JE    AAH00480
*S1369: {
*S1370: if( not line->Bits->HasBLModifier ) then
         L     R3,68(R12)   LINE
         TM    1083(R3),4   HASBLMODIFIER
         JNE   AAH00446
*S1371: {
*S1372: /*1. condition of no 38x must be met to pay, otherwise plop ed
*S1373: loop( BloodLine:=all38BloodFirst; BloodLine; BloodLine:=BloodL
         MVC   72(4,R12),100(R12)   ALL38BLOODFIRST
AAH00442 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00445
*S1374: {
*S1375: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00443
*S1376: {
*S1377: /*plop the edit on line && bloodline: 39x w/out BL mod and pre
*S1378: /*redundant plopping can be attempted, but will not happen in
*S1379: do GAPC.SetEdit( Edit->BadBloodBilling, line, base->NoDxp, bas
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),16(R11)   1
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S1380: do GAPC.SetEdit( Edit->BadBloodBilling, BloodLine, base->NoDxp
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   BLOODLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),20(R11)   2
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAH00443 EQU   *
AAH00444 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),32(R2)   NEXTALL38BLOOD
         J     AAH00442
AAH00445 J     AAH00479
*S1381: }
*S1382: }
*S1383: }/*if the 39x does not have a BL mod*/
*S1384: else
*S1385: {
*S1386: Has39BL38noBL:=0;
AAH00446 XC    124(4,R12),124(R12)   HAS39BL38NOBL
*S1387: loop( BloodLine:=all38BloodFirst; BloodLine; BloodLine:=BloodL
         MVC   72(4,R12),100(R12)   ALL38BLOODFIRST
AAH00447 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00450
*S1388: {
*S1389: if( line->Hcpcs=BloodLine->Hcpcs ) then break;
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00448
         J     AAH00450
AAH00448 EQU   *
AAH00449 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),32(R2)   NEXTALL38BLOOD
         J     AAH00447
*S1390: }
*S1391: /*2b. if 38s present, then all 38x matches must also have the
*S1392:        if a 38x is present without it, also plop the edit*/
*S1393: if( BloodLine ) then
AAH00450 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00455
*S1394: {
*S1395: loop( BloodLine:=noBLmod38BloodFirst; BloodLine; BloodLine:=Bl
         MVC   72(4,R12),108(R12)   NOBLMOD38BLOODFIRST
AAH00451 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00454
*S1396: {
*S1397: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00452
*S1398: {
*S1399: /*plop the edit on line: 39x BL has matching 38x w/out modifie
*S1400: /*redundant plopping can be attempted, but will not happen in
*S1401: do GAPC.SetEdit( Edit->BadBloodBilling, line, base->NoDxp, bas
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),16(R11)   1
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S1402: do GAPC.SetEdit( Edit->BadBloodBilling, BloodLine, base->NoDxp
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   BLOODLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),20(R11)   2
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S1403: Has39BL38noBL:=1;
         MVC   124(4,R12),16(R11)   1
AAH00452 EQU   *
AAH00453 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),36(R2)   NEXTNOBLMOD38BLOOD
         J     AAH00451
AAH00454 J     AAH00456
*S1404: }
*S1405: }
*S1406: }
*S1407: /*2a. 39 BL must have 38's....*/
*S1408: /*exhaustive check to see that there are some 38 blood lines
*S1409:        but this would/should get caught in the sum check below
*S1410: else {
*S1411: do GAPC.SetEdit( Edit->BadBloodBilling, line, base->NoDxp, bas
AAH00455 MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),24(R11)   3
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*S1412: Has39BL38noBL:=1;
         MVC   124(4,R12),16(R11)   1
*S1414: }
*S1416: /*3. We have 39 BL mods w 38 BL mods, their sums must match or
*S1417: if( Has39BL38noBL=0 ) then
AAH00456 L     R2,124(R12)   HAS39BL38NOBL
         LTR   R2,R2
         JNE   AAH00478
*S1418: {
*S1419: BL39Sum:=0;
         XC    116(4,R12),116(R12)   BL39SUM
*S1420: BL38Sum:=0;
         XC    120(4,R12),120(R12)   BL38SUM
*S1421: loop( BloodLine:=BLmod38BloodFirst; BloodLine; BloodLine:=Bloo
         MVC   72(4,R12),84(R12)   BLMOD38BLOODFIRST
AAH00457 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00460
*S1422: {
*S1423: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00458
*S1424: {
*S1425: BL38Sum:=BloodLine->BL38Sum;
         L     R5,72(R12)   BLOODLINE
         L     R6,1068(R5)   BL38SUM
         ST    R6,120(R12)   BL38SUM
*S1426: break;/*first contains sum*/
         J     AAH00460
AAH00458 EQU   *
AAH00459 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),24(R2)   NEXTBLMOD38BLOOD
         J     AAH00457
*S1427: }
*S1428: }
*S1429: loop( BloodLine:=BLmod39BloodFirst; BloodLine; BloodLine:=Bloo
AAH00460 MVC   72(4,R12),76(R12)   BLMOD39BLOODFIRST
AAH00461 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00464
*S1430: {
*S1431: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00462
*S1432: {
*S1433: BL39Sum:=BloodLine->BL39Sum;
         L     R5,72(R12)   BLOODLINE
         L     R6,1072(R5)   BL39SUM
         ST    R6,116(R12)   BL39SUM
*S1434: break;/*first contains sum*/
         J     AAH00464
AAH00462 EQU   *
AAH00463 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),20(R2)   NEXTBLMOD39BLOOD
         J     AAH00461
*S1435: }
*S1436: }
*S1438: /*if sums are not equal raise the edit and
*S1439:         either plop edit on all the 39/38 modifier BL lines wh
*S1440:         or set the payadjflags 38BL->5; 39BL->6 because it mee
*S1441: if( BL39Sum<>BL38Sum ) then
AAH00464 L     R2,116(R12)   BL39SUM
         C     R2,120(R12)   BL38SUM
         JE    AAH00465
*S1442: {
*S1443: do GAPC.SetEdit( Edit->BadBloodBilling, base->NoLine, base->No
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,88(R9)   NOLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),28(R11)   4
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
*Edit73Raised:=1;
*S1445: }
*S1447: loop( BloodLine:=BLmod38BloodFirst; BloodLine; BloodLine:=Bloo
AAH00465 MVC   72(4,R12),84(R12)   BLMOD38BLOODFIRST
AAH00466 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00471
*S1448: {
*S1449: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00469
*S1450: {
*S1451: if( BL39Sum<>BL38Sum ) then {
         L     R5,116(R12)   BL39SUM
         C     R5,120(R12)   BL38SUM
         JE    AAH00467
*S1452: do GAPC.SetEdit( Edit->BadBloodBilling, BloodLine, base->NoDxp
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   BLOODLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),32(R11)   5
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
         J     AAH00468
*S1453: }
*S1454: else BloodLine->PayAdjFlag:=5;
AAH00467 L     R2,72(R12)   BLOODLINE
         MVC   544(4,R2),32(R11)   5
AAH00468 EQU   *
AAH00469 EQU   *
AAH00470 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),24(R2)   NEXTBLMOD38BLOOD
         J     AAH00466
*S1455: }
*S1456: }
*S1457: loop( BloodLine:=BLmod39BloodFirst; BloodLine; BloodLine:=Bloo
AAH00471 MVC   72(4,R12),76(R12)   BLMOD39BLOODFIRST
AAH00472 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00477
*S1458: {
*S1459: if( line->Hcpcs=BloodLine->Hcpcs ) then
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00475
*S1460: {
*S1461: if( BL39Sum<>BL38Sum ) then {
         L     R5,116(R12)   BL39SUM
         C     R5,120(R12)   BL38SUM
         JE    AAH00473
*S1462: do GAPC.SetEdit( Edit->BadBloodBilling, BloodLine, base->NoDxp
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   BLOODLINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),32(R11)   5
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
         J     AAH00474
*S1463: }
*S1464: else BloodLine->PayAdjFlag:=6;
AAH00473 L     R2,72(R12)   BLOODLINE
         MVC   544(4,R2),36(R11)   6
AAH00474 EQU   *
AAH00475 EQU   *
AAH00476 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),20(R2)   NEXTBLMOD39BLOOD
         J     AAH00472
AAH00477 EQU   *
AAH00478 EQU   *
AAH00479 J     AAH00488
*S1465: }
*S1466: }
*S1467: }/*there were 38 lines and all have BL*/
*S1468: }/*else then the  39x has a BL mod*/
*S1469: }
*S1470: else if( line->Bits->Has38x ) then
AAH00480 L     R2,68(R12)   LINE
         TM    1083(R2),8   HAS38X
         JE    AAH00486
*S1471: {
*S1472: /*4. line has 38x but no other 39x on day*/
*S1473: loop( BloodLine:=all39BloodFirst; BloodLine; BloodLine:=BloodL
         MVC   72(4,R12),92(R12)   ALL39BLOODFIRST
AAH00481 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JE    AAH00484
*S1474: {
*S1475: if( line->Hcpcs=BloodLine->Hcpcs ) then break;
         L     R2,68(R12)   LINE
         L     R3,72(R12)   BLOODLINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00482
         J     AAH00484
AAH00482 EQU   *
AAH00483 L     R2,72(R12)   BLOODLINE
         MVC   72(4,R12),28(R2)   NEXTALL39BLOOD
         J     AAH00481
*S1476: }
*S1477: if( not BloodLine ) then
AAH00484 L     R15,72(R12)   BLOODLINE
         LTR   R15,R15
         JNE   AAH00485
*S1478: {
*S1479: /*plop the edit on line: 38x without any 39x's*/
*S1480: do GAPC.SetEdit( Edit->BadBloodBilling, line, base->NoDxp, bas
         MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),24(R11)   3
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAH00485 J     AAH00487
*S1481: }
*S1482: }
*S1483: else
*S1484: {
*S1485: /*5. no 38 or 39x on this blood line*/
*S1486: /*plop the edit on line: neither 38 or 39 on the bloodline*/
*S1487: do GAPC.SetEdit( Edit->BadBloodBilling, line, base->NoDxp, bas
AAH00486 MVC   128(4,R12),12(R11)   73
         LA    R14,128(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         MVC   132(4,R12),24(R11)   3
         LA    R14,132(R12)
         ST    R14,80(R13)
         XC    136(4,R12),136(R12)
         LA    R14,136(R12)
         ST    R14,84(R13)
         L     R15,4(R11)   GAPCC091
         BASR  R14,R15
AAH00487 EQU   *
AAH00488 EQU   *
AAH00489 EQU   *
AAH00490 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00441
AAH00491 EQU   *
AAH00492 EQU   *
AAH00493 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAH00406
AAH00494 EQU   *
AAH00495 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC094
**************************
GAPCC094 CSECT
GAPCC094 AMODE ANY
GAPCC094 RMODE ANY
*XREF - GAPCC094 GAPC.OppsProc
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (16 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 ()
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00503
         DC    A(DMNATFD) @00000
         DC    F'55' @00004
         DC    A(GAPCC091) @00008
         DC    H'10'  0 10 @00012
         DC    H'1120'  4 96 @00014
AAH00503 XC    64(16,R12),64(R12)
* Edits 55
* Edit 55 - Non-reportable for site of service
*S1500: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00506 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00510
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),12(R11)   10
         MVC   66(2,R13),14(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00510
*S1501: if( line->flags->NonreportableSite
         L     R2,64(R12)   LINE
         TM    1088(R2),8   NONREPORTABLESITE
         JE    AAH00507
         L     R3,64(R12)   LINE
         TM    1081(R3),64   IGNORELINE
         JNE   AAH00507
         L     R4,64(R12)   LINE
         TM    1081(R4),32   IGNOREINPAT
         JNE   AAH00507
*S1502: and not ( line->Bits->IgnoreLine or line->Bits->IgnoreInpat )
*S1503: do GAPC.SetEdit( Edit->NonreportableSite, line, base->NoDxp, b
         MVC   68(4,R12),4(R11)   55
         LA    R14,68(R12)
         ST    R14,64(R13)
         LA    R14,64(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    72(4,R12),72(R12)
         LA    R14,72(R12)
         ST    R14,80(R13)
         XC    76(4,R12),76(R12)
         LA    R14,76(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAH00507 EQU   *
AAH00508 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00509
         L     R2,8(R2)
AAH00509 ST    R2,4(R9)   ITEM
         J     AAH00506
AAH00510 EQU   *
AAH00511 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC095
**************************
GAPCC095 CSECT
GAPCC095 AMODE ANY
GAPCC095 RMODE ANY
*XREF - GAPCC095 GAPC.DMEProc
*  R11 + 0000 Literals        (32 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (28 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*        0072(R12)-> Integer len 4 (isFqhc)
*        0076(R12)-> Integer len 4 (isComprehensiveApc)
*        0080(R12)-> Unknown ()
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 ()
*        0088(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00603
         DC    A(DMNSCMP) @00000
         DC    F'61' @00004
         DC    A(GAPCC091) @00008
         DC    A(GAPCC118) @00012
         DC    F'72' @00016
         DC    H'2'  0 2 @00020
         DC    CL2'77' @00022
         DC    CL2'85' @00024
         DC    CL2'81' @00026
         DC    CL2'82' @00028
         DC    CL2'71' @00030
AAH00603 XC    64(28,R12),64(R12)
* Edits 61, 72
*S1518: isFqhc:=( 56 < base->Version and not claim->Bits->HasCc65 and
         L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAH00606
         TM    3000(R9),1   HASCC65
         JNE   AAH00606
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00606
         LHI   R2,1
         J     AAH00607
AAH00606 XR    R2,R2
AAH00607 ST    R2,72(R12)   ISFQHC
*S1519: isComprehensiveApc:=( 57 < base->Version and claim->PrimaryCom
         L     R3,1868(R9)   VERSION
         CHI   R3,57
         JNH   AAH00608
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAH00608
         LHI   R2,1
         J     AAH00609
AAH00608 XR    R2,R2
AAH00609 ST    R2,76(R12)   ISCOMPREHENSIVEAPC
*S1521: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAH00610 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAH00625
*S1522: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay
         L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAH00611 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAH00623
*S1523: /*v10.2 eff with edits as applicable back to 8/1/00,
*S1524:      need to test for inpatient-only ignore condition
*S1525:      note:  day structure already excludes other ignores*/
*S1526: if( not line->Bits->IgnoreInpat ) then {
         L     R2,68(R12)   LINE
         TM    1081(R2),32   IGNOREINPAT
         JNE   AAH00621
* Edit 61
*S1529: /*V15.3.0, SUPPRESS EDIT 61 FOR FQHC CLAIMS INDENTIFIED AS HAV
*S1530: /*V16.0.0, SUPPRESS EDIT 61 FOR COMPREHENSIVE CLAIMS INCLUDING
*S1531: if( line->flags->DmercBillableOnly
         L     R3,68(R12)   LINE
         TM    1092(R3),2   DMERCBILLABLEONLY
         JE    AAH00612
         L     R15,72(R12)   ISFQHC
         LTR   R15,R15
         JNE   AAH00612
         L     R15,76(R12)   ISCOMPREHENSIVEAPC
         LTR   R15,R15
         JNE   AAH00612
*S1532: and not ( isFqhc or isComprehensiveApc ) ) then {
*S1533: do GAPC.SetEdit( Edit->OnlyDME, line, base->NoDxp, base->NoDay
         MVC   80(4,R12),4(R11)   61
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
*S1534: }
* Edit 72
*S1537: /*v6.1*/
*S1538: /*v8.2 exclude if nopps, 85x and revcodes 96x,97x,98x*/
*S1539: if( line->flags->NonBillableMac
AAH00612 L     R2,68(R12)   LINE
         TM    1093(R2),32   NONBILLABLEMAC
         JE    AAH00620
         TM    3004(R9),1   NOPPS
         JE    AAH00613
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00613
         L     R2,68(R12)   LINE
         TM    1076(R2),2   FOUNDREVENUE
         JE    AAH00613
         L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,960
         JL    AAH00613
         L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,989
         JNH   AAH00620
*S1540: and not (
*S1541: claim->Bits->Nopps
*S1542: and base->BillType="85"
*S1543: and line->Bits->FoundRevenue
*S1544: and line->RevenueCode>=960
*S1545: and line->RevenueCode<=989
*S1546: ) ) then {
*S1547: /*v11.0, eff 1/1/10 change SI,( PI, PMF ) for 81x/82x and RC 6
*S1548: /*v10.2, eff. 7/1/2007,  exclude if 81x or 82x and rev coded 6
*S1549: if( line->RevenueCode=657
AAH00613 L     R2,68(R12)   LINE
         L     R3,464(R2)   REVENUECODE
         CHI   R3,657
         JNE   AAH00615
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAH00614
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAH00615
*S1550: and ( base->BillType="81" or base->BillType="82" ) ) then {
*S1551: do GAPC.SetSeparatelyPayable( line );
AAH00614 LA    R14,68(R12)   LINE
         ST    R14,64(R13)
         L     R15,12(R11)   GAPCC118
         BASR  R14,R15
         J     AAH00619
*S1552: }
*S1553: else {
* RHC claims (Bill 71x) or FQHC w/o 65 with the E72 bypass flag are no
* subject to edit 72 from V19.1 on, any previous version gets the edit
* of bill type or flag.
*S1557: if (not (base->Version >= 71
AAH00615 L     R2,1868(R9)   VERSION
         CHI   R2,71
         JL    AAH00617
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,30(R11)   71
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAH00616
         L     R15,72(R12)   ISFQHC
         LTR   R15,R15
         JE    AAH00617
AAH00616 L     R2,68(R12)   LINE
         TM    1096(R2),2   BYPASSE72FQHCRHC
         JE    AAH00617
         L     R2,1868(R9)   VERSION
         CHI   R2,71
         JNL   AAH00618
*S1558: and ((base->BillType = "71" or isFqhc) and line->flags->Bypass
*S1559: or base->Version < 71) then {
*S1560: do GAPC.SetEdit(Edit->ServNotBillableFI, line, base->NoDxp, ba
AAH00617 MVC   80(4,R12),16(R11)   72
         LA    R14,80(R12)
         ST    R14,64(R13)
         LA    R14,68(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    84(4,R12),84(R12)
         LA    R14,84(R12)
         ST    R14,80(R13)
         XC    88(4,R12),88(R12)
         LA    R14,88(R12)
         ST    R14,84(R13)
         L     R15,8(R11)   GAPCC091
         BASR  R14,R15
AAH00618 EQU   *
AAH00619 EQU   *
AAH00620 EQU   *
AAH00621 EQU   *
AAH00622 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAH00611
AAH00623 EQU   *
AAH00624 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAH00610
AAH00625 EQU   *
AAH00626 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC096
**************************
GAPCC096 CSECT
GAPCC096 AMODE ANY
GAPCC096 RMODE ANY
*XREF - GAPCC096 GAPC.ExcludeFromSection603Reduction
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> Integer len 4 (exclude)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00703
         DC    F'1' @00000
AAH00703 XC    68(4,R12),68(R12)
*18.0
* IF PAF IS 4,9, OR 10, PMF 7 WILL BE ASSIGNED INSTEAD OF 8
* ADDED SECTION 603 OVERRIDES TO LIST OF EXCLUSIONS
*S1576: if( line->PayAdjFlag=PaymentAdjustments->DEDUCTIBLE_NA
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,544(R3)   PAYADJFLAG
         CHI   R4,4
         JE    AAH00706
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         L     R7,544(R6)   PAYADJFLAG
         CHI   R7,9
         JE    AAH00706
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,544(R3)   PAYADJFLAG
         CHI   R4,10
         JE    AAH00706
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         TM    1098(R3),2   OVERRIDESECTION603
         JE    AAH00707
*S1577: or line->PayAdjFlag=PaymentAdjustments->DEDUCTIBLE_COINS_NA
*S1578: or line->PayAdjFlag=PaymentAdjustments->COINS_NA
*S1579: or line->flags->OverrideSection603 ) then {
*S1580: exclude:=1;
AAH00706 MVC   68(4,R12),0(R11)   1
*S1581: }
*S1582: /*
* CAN'T USE A FLAG HERE, WE HAVE TO CHECK THE FINAL PAYING APC AGAINST
* IF EXCLUDED, PMF 7 WILL BE ASSIGNED; OTHERWISE, PMF 8 WILL BE ASSIGN
* V18.0, RETROACTIVE TO 2017-01-01, PREVENT LINES WITH MODIFIER PN AND
* FROM HAVING THEIR PMF DEMOTED FROM 8 TO 7. (PMF=8 MAY NOW POTENTIALL
*S1587:  else if( line->PaymentApc ) then {
*S1588:   loop( rc:=select DataApcTbl using byApc( line->PaymentApc );
*S1589:    if( line->PaymentApc=DataApcTbl->Apc ) then {
*S1590:     if( DataApcTbl->LoVersion <= base->Version
*S1591:     and base->Version <= DataApcTbl->HiVersion ) then {
*S1592:      if( DataApcTbl->flags->Section603Exclusion ) then {
*S1593:       exclude:=TRUE;
*S1594:      }
*S1595:      break;
*S1596:     }
*S1597:     else continue;
*S1598:    }
*S1599:    else break;
*S1600:   }
*S1601:  }
*S1602:  */
*S1603: return exclude;
AAH00707 L     R2,60(R12)
         L     R3,68(R12)   EXCLUDE
         ST    R3,0(R2)
AAH00708 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC097
**************************
GAPCC097 CSECT
GAPCC097 AMODE ANY
GAPCC097 RMODE ANY
*XREF - GAPCC097 GAPC.SubjectTo603Rules
*  R11 + 0000 Literals        (76 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (52 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (applied)
*        0080(R12)-> Integer len 4 (exists)
*        0084(R12)-> Integer len 4 (rc)
*        0088(R12)-> Integer len 4 (editCleared)
*        0092(R12)-> Integer len 4 (idx)
*        0096(R12)-> Integer len 4 (observationPresent)
*        0100(R12)-> Unknown ()
*        0100(R12)-> Integer len 4 ()
*        0104(R12)-> Integer len 4 ()
*        0108(R12)-> Integer len 4 ()
*        0112(R12)-> String ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00803
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    A(DMNATFD) @00008
         DC    F'101' @00012
         DC    A(GAPCC091) @00016
         DC    A(DMNSCPY) @00020
         DC    A(GAPCC115) @00024
         DC    A(DMNSEL) @00028
         DC    F'5' @00032
         DC    A(DMNSCPYX) @00036
         DC    A(DMNFREE) @00040
         DC    H'2'  0 2 @00044
         DC    H'10'  0 10 @00046
         DC    H'1120'  4 96 @00048
         DC    H'5'  0 5 @00050
         DC    H'1'  0 1 @00052
         DC    H'4'  0 4 @00054
         DC    H'7'  0 7 @00056
         DC    CL2'J2' @00058
         DC    CL2'13' @00060
         DC    CL5'G0463' @00062
         DC    CL1'P' @00067
         DC    CL5'05853' @00068
         DC    CL2'76' @00073
AAH00803 XC    64(8,R12),64(R12)
         LA    R4,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R4,44(R10)
         XC    72(48,R12),72(R12)
         ST    R4,120(R12)
*18.0
*S1613: if( claim->PrimaryComprehensive
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAH00806
         L     R2,1972(R9)   PRIMARYCOMPREHENSIVE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00806
*S1614: and claim->PrimaryComprehensive->StatusIndicator="J2" ) then {
*S1615: observationPresent:=1;
         MVC   96(4,R12),4(R11)   1
*S1616: }
*S1618: if( base->BillType="13" ) then {
AAH00806 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00859
* CHECK FOR THE PRESENCE OF MODIFIER PN/PO (V20.0) LINES AND E101 COND
* V20.0, for G0463 with PO modifier we want to set the exists flag so
* 603 PMF logic below. We won't get the exit as it is excluded.
*S1623: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH00807 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00817
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),46(R11)   10
         MVC   66(2,R13),48(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00817
*S1624: if(line->Bits->HasPNModifier or (line->Bits->HasPOModifier and
         L     R2,72(R12)   LINE
         TM    1078(R2),1   HASPNMODIFIER
         JNE   AAH00809
         L     R3,72(R12)   LINE
         TM    1079(R3),128   HASPOMODIFIER
         JE    AAH00808
         L     R4,72(R12)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   G0463
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAH00808
         L     R2,1868(R9)   VERSION
         CHI   R2,74
         JNL   AAH00809
AAH00808 J     AAH00814
*S1625: if( line->Bits->Section603E101Candidate
AAH00809 L     R2,72(R12)   LINE
         TM    1085(R2),1   SECTION603E101CANDIDATE
         JE    AAH00811
         L     R15,96(R12)   OBSERVATIONPRESENT
         LTR   R15,R15
         JNE   AAH00811
         L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   G0463
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAH00811
*S1626: and not observationPresent
*S1627: and line->Hcpcs<>"G0463" ) then {
*S1628: do GAPC.SetEdit( Edit->E101, line, base->NoDxp, base->NoDay, 0
         MVC   100(4,R12),12(R11)   101
         LA    R14,100(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    104(4,R12),104(R12)
         LA    R14,104(R12)
         ST    R14,80(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
*S1629: if( not applied ) then {
         L     R15,76(R12)   APPLIED
         LTR   R15,R15
         JNE   AAH00810
*S1630: applied:=1;
         MVC   76(4,R12),4(R11)   1
AAH00810 J     AAH00813
*S1631: }
*S1632: }
*S1633: else if( not ( exists or line->PackagingFlag ) ) then {
AAH00811 L     R15,80(R12)   EXISTS
         LTR   R15,R15
         JNE   AAH00812
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAH00812
*S1634: exists:=1;
         MVC   80(4,R12),4(R11)   1
AAH00812 EQU   *
AAH00813 EQU   *
AAH00814 EQU   *
AAH00815 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00816
         L     R2,8(R2)
AAH00816 ST    R2,4(R9)   ITEM
         J     AAH00807
*S1635: }
*S1636: }
*S1637: }
* IF MODIFIER PN LINES EXIST AND E101 HASN'T BEEN ASSIGNED, CONTINUE W
*S1640: if( exists and not applied ) then {
AAH00817 L     R15,80(R12)   EXISTS
         LTR   R15,R15
         JE    AAH00858
         L     R15,76(R12)   APPLIED
         LTR   R15,R15
         JNE   AAH00858
* OVERRIDE PHP APC WITH CMHC APC FOR SI=P ON BILL TYPE 13X/CC41 (PAYME
*S1643: if( claim->Bits->HasCc41 ) then {
         TM    3000(R9),32   HASCC41
         JE    AAH00823
*S1644: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00818 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00822
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),46(R11)   10
         MVC   66(2,R13),48(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00822
*S1645: if( line->StatusIndicator="P"
         L     R2,72(R12)   LINE
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,67(R11)   P
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH00819
         L     R4,72(R12)   LINE
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   05853
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAH00819
*S1646: and line->PaymentApc<>"05853" ) then {
*S1647: do GAPC.SetApcAssignment( line, "05853" );
         LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,112(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   05853
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,112(R12)
         ST    R14,68(R13)
         L     R15,24(R11)   GAPCC115
         BASR  R14,R15
AAH00819 EQU   *
AAH00820 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00821
         L     R2,8(R2)
AAH00821 ST    R2,4(R9)   ITEM
         J     AAH00818
*S1648: }
*S1649: }
*S1650: }
* ASSIGN ALTERNATIVE APC FOR LINES FLAGGED AS SECTION 603 OVERRIDES (C
* FOR UNPACKAGED LINES WITH PN MODIFIER
*S1654: loop( item:=base->lines->first; item and (line:=&item->line, l
AAH00822 EQU   *
AAH00823 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00824 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00847
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),46(R11)   10
         MVC   66(2,R13),48(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00847
*S1656: if( line->flags->OverrideSection603
         L     R2,72(R12)   LINE
         TM    1098(R2),2   OVERRIDESECTION603
         JE    AAH00844
         L     R3,72(R12)   LINE
         TM    1078(R3),1   HASPNMODIFIER
         JE    AAH00844
         L     R2,72(R12)   LINE
         TM    1076(R2),128   FOUNDHCPCS
         JE    AAH00844
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAH00844
*S1657: and line->Bits->HasPNModifier
*S1658: and line->Bits->FoundHcpcs
*S1659: and not line->PackagingFlag ) then {
* ASSIGN NEW APC VALUES FOR SELECTED HCPCS (APC/SI OVERRIDES)
*S1662: loop( rc:=select MapS603OverrideTbl using byHCPCS( line->Hcpcs
         MVC   60(2,R13),54(R11)   4
         MVC   62(2,R13),52(R11)   1
         LA    R14,3796(R9)   MAPS603OVERRIDETBL
         ST    R14,64(R13)
         L     R2,72(R12)   LINE
         LA    R3,68(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),50(R11)   5
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,28(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAH00825
         L     R5,64(R13)
         AHI   R13,80
         LA    R14,3804(R9)   MAPS603OVERRIDETBL
         ST    R14,60(R13)
         ST    R5,64(R13)
         MVC   68(4,R13),32(R11)   5
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3816(2,R9),5(R5)
         AHI   R13,80
         LA    R14,3820(R9)   MAPS603OVERRIDETBL
         ST    R14,60(R13)
         LA    R14,7(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),32(R11)   5
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
AAH00825 ST    R4,84(R12)   RC
AAH00826 L     R2,84(R12)   RC
         CHI   R2,1
         JNL   AAH00834
*S1663: if( MapS603OverrideTbl->HCPCS = line->Hcpcs ) then {
         L     R3,72(R12)   LINE
         LA    R14,3804(R9)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00831
*S1664: if( base->Version < MapS603OverrideTbl->LoVersion
         L     R5,1868(R9)   VERSION
         XR    R14,R14
         TM    3816(R9),128   LOVERSION
         JE    AAH00827
         LHI   R14,-1
AAH00827 IC    R14,3816(R9)   LOVERSION
         CR    R5,R14
         JL    AAH00829
         XR    R6,R6
         TM    3817(R9),128   HIVERSION
         JE    AAH00828
         LHI   R6,-1
AAH00828 IC    R6,3817(R9)   HIVERSION
         C     R6,1868(R9)   VERSION
         JNL   AAH00830
*S1665: or MapS603OverrideTbl->HiVersion < base->Version ) then contin
AAH00829 J     AAH00832
*S1666: do GAPC.SetApcAssignment( line, MapS603OverrideTbl->Apc );
AAH00830 LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         LA    R14,3820(R9)   APC
         ST    R14,68(R13)
         L     R15,24(R11)   GAPCC115
         BASR  R14,R15
*S1667: }
*S1668: break;
AAH00831 J     AAH00834
AAH00832 MVC   60(2,R13),56(R11)   7
         LA    R14,3796(R9)   MAPS603OVERRIDETBL
         ST    R14,64(R13)
         L     R15,28(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAH00833
         L     R3,64(R13)
         AHI   R13,72
         LA    R14,3804(R9)   MAPS603OVERRIDETBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),32(R11)   5
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3816(2,R9),5(R3)
         AHI   R13,72
         LA    R14,3820(R9)   MAPS603OVERRIDETBL
         ST    R14,60(R13)
         LA    R14,7(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),32(R11)   5
         L     R15,36(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
AAH00833 ST    R2,84(R12)   RC
         J     AAH00826
*S1669: }
* REMOVE E62 IF APPLIED TO OVERRIDE LINE (BECAUSE OF INITIAL SI=B)
* NOTE: THE PRE PAYMENT EDIT FLAG WILL HAVE BEEN TURNED OFF IF E62 IS
* ON THE CLAIM, SEE BELOW.
*S1674: loop( idx:=0; idx<30 and line->Edits[idx]; idx+=1 ){
AAH00834 XC    92(4,R12),92(R12)   IDX
AAH00835 L     R2,92(R12)   IDX
         CHI   R2,30
         JNL   AAH00843
         L     R3,72(R12)   LINE
         LA    R4,572(R3)   EDITS
         L     R5,92(R12)   IDX
         MHI   R5,4
         AR    R4,R5
         L     R15,0(R4)   EDITS
         LTR   R15,R15
         JE    AAH00843
*S1675: if( line->Edits[idx]=Edit->NotRecogOPPS ) then {
         L     R2,72(R12)   LINE
         LA    R3,572(R2)   EDITS
         L     R4,92(R12)   IDX
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   EDITS
         CHI   R5,62
         JNE   AAH00841
*S1676: if( idx+1<30 and line->Edits[idx+1] ) then {
         LHI   R6,1
         A     R6,92(R12)   IDX
         CHI   R6,30
         JNL   AAH00838
         L     R7,72(R12)   LINE
         LA    R8,572(R7)   EDITS
         MHI   R6,4
         AR    R8,R6
         L     R15,0(R8)   EDITS
         LTR   R15,R15
         JE    AAH00838
*S1677: loop {
*S1678: line->Edits[idx]:=line->Edits[idx+1];
AAH00836 L     R2,72(R12)   LINE
         LA    R3,572(R2)   EDITS
         L     R4,92(R12)   IDX
         MHI   R4,4
         AR    R3,R4
         L     R5,72(R12)   LINE
         LHI   R6,1
         A     R6,92(R12)   IDX
         LA    R7,572(R5)   EDITS
         MHI   R6,4
         AR    R7,R6
         L     R8,0(R7)   EDITS
         ST    R8,0(R3)   EDITS
*S1679: reset line->Edits[idx+1];
         L     R2,72(R12)   LINE
         LHI   R3,1
         A     R3,92(R12)   IDX
         LA    R4,572(R2)   EDITS
         MHI   R3,4
         AR    R4,R3
         XC    0(4,R4),0(R4)
*S1680: idx+=1;
         LHI   R8,1
         A     R8,92(R12)   IDX
         ST    R8,92(R12)   IDX
         AHI   R8,1
         CHI   R8,30
         JNL   AAH00837
         L     R5,72(R12)   LINE
         LA    R6,572(R5)   EDITS
         MHI   R8,4
         AR    R6,R8
         L     R15,0(R6)   EDITS
         LTR   R15,R15
         JNE   AAH00836
AAH00837 J     AAH00839
*S1681: } while( idx+1<30 and line->Edits[idx+1] );
*S1682: }
*S1683: else {
*S1684: reset line->Edits[idx];
AAH00838 L     R2,72(R12)   LINE
         LA    R3,572(R2)   EDITS
         L     R4,92(R12)   IDX
         MHI   R4,4
         AR    R3,R4
         XC    0(4,R3),0(R3)
*S1685: }
*S1686: if( not editCleared ) then {
AAH00839 L     R15,88(R12)   EDITCLEARED
         LTR   R15,R15
         JNE   AAH00840
*S1687: editCleared:=1;
         MVC   88(4,R12),4(R11)   1
*S1688: }
*S1689: break;
AAH00840 J     AAH00843
AAH00841 EQU   *
AAH00842 LHI   R2,1
         A     R2,92(R12)   IDX
         ST    R2,92(R12)   IDX
         J     AAH00835
AAH00843 EQU   *
AAH00844 EQU   *
AAH00845 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00846
         L     R2,8(R2)
AAH00846 ST    R2,4(R9)   ITEM
         J     AAH00824
*S1690: }
*S1691: }
*S1692: }
*S1693: }
* IF E62 WAS REMOVED FROM THE LINE BUFFER, REMOVE IT FROM THE RTP BUFF
* DISPOSITION VARIABLE IF NO OTHER EDITS ARE PRESENT.
*S1696: if( editCleared ) then {
AAH00847 L     R15,88(R12)   EDITCLEARED
         LTR   R15,R15
         JE    AAH00857
*S1697: loop( idx:=0; idx<30 and claim->ClaimRtpReasn[idx]; idx+=1 ){
         XC    92(4,R12),92(R12)   IDX
AAH00848 L     R2,92(R12)   IDX
         CHI   R2,30
         JNL   AAH00855
         LA    R3,2480(R9)   CLAIMRTPREASN
         L     R4,92(R12)   IDX
         MHI   R4,4
         AR    R3,R4
         L     R15,0(R3)   CLAIMRTPREASN
         LTR   R15,R15
         JE    AAH00855
*S1698: if( claim->ClaimRtpReasn[idx]=Edit->NotRecogOPPS ) then {
         LA    R2,2480(R9)   CLAIMRTPREASN
         L     R3,92(R12)   IDX
         MHI   R3,4
         AR    R2,R3
         L     R4,0(R2)   CLAIMRTPREASN
         CHI   R4,62
         JNE   AAH00853
* CLEAR AND SHIFT ANY OTHER EDITS TO THE LEFT, LEAVE idx POINTING TO C
*S1700: if( idx+1<30
         LHI   R5,1
         A     R5,92(R12)   IDX
         CHI   R5,30
         JNL   AAH00851
         LA    R6,2480(R9)   CLAIMRTPREASN
         MHI   R5,4
         AR    R6,R5
         L     R15,0(R6)   CLAIMRTPREASN
         LTR   R15,R15
         JE    AAH00851
*S1701: and claim->ClaimRtpReasn[idx+1] ) then {
*S1702: loop {
*S1703: idx+=1;
AAH00849 LHI   R2,1
         A     R2,92(R12)   IDX
         ST    R2,92(R12)   IDX
*S1704: claim->ClaimRtpReasn[idx-1]:=claim->ClaimRtpReasn[idx];
         AHI   R2,-1
         LA    R3,2480(R9)   CLAIMRTPREASN
         MHI   R2,4
         AR    R3,R2
         LA    R4,2480(R9)   CLAIMRTPREASN
         L     R5,92(R12)   IDX
         MHI   R5,4
         AR    R4,R5
         L     R6,0(R4)   CLAIMRTPREASN
         ST    R6,0(R3)   CLAIMRTPREASN
*S1705: reset claim->ClaimRtpReasn[idx];
         LA    R7,2480(R9)   CLAIMRTPREASN
         L     R8,92(R12)   IDX
         MHI   R8,4
         AR    R7,R8
         XC    0(4,R7),0(R7)
         L     R6,92(R12)   IDX
         CHI   R6,30
         JNL   AAH00850
         LA    R2,2480(R9)   CLAIMRTPREASN
         L     R3,92(R12)   IDX
         MHI   R3,4
         AR    R2,R3
         L     R15,0(R2)   CLAIMRTPREASN
         LTR   R15,R15
         JNE   AAH00849
AAH00850 J     AAH00852
*S1706: } while( idx<30 and claim->ClaimRtpReasn[idx] );
*S1707: }
*S1708: else {
*S1709: reset claim->ClaimRtpReasn[idx];
AAH00851 LA    R2,2480(R9)   CLAIMRTPREASN
         L     R3,92(R12)   IDX
         MHI   R3,4
         AR    R2,R3
         XC    0(4,R2),0(R2)
*S1710: }
*S1711: break;
AAH00852 J     AAH00855
AAH00853 EQU   *
AAH00854 LHI   R2,1
         A     R2,92(R12)   IDX
         ST    R2,92(R12)   IDX
         J     AAH00848
*S1712: }
*S1713: }
* NO OTHER EDITS, REMOVE claim->Bits->PrePaymentEdits FLAG
* ALL CMS EDITS ARE PREPAY, ACCEPT FOR E10 AND THE FIFTH INSTANCE OF E
*S1716: if( 0=idx
AAH00855 L     R2,92(R12)   IDX
         LTR   R2,R2
         JNE   AAH00856
         TM    3003(R9),64   PREPAYMENTEDITS
         JE    AAH00856
*S1717: and claim->Bits->PrePaymentEdits ) then {
*S1718: claim->Bits->PrePaymentEdits:=0;
         NI    3003(R9),191   PREPAYMENTEDITS
AAH00856 EQU   *
AAH00857 EQU   *
AAH00858 J     AAH00870
*S1719: }
*S1720: }
*S1721: }
*S1722: }
*S1723: else if( base->BillType="76" ) then {
AAH00859 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,73(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),44(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00869
* CHECK FOR THE PRESENCE OF MODIFIER PN LINES AND E101 CONDITIONS FOR
*S1726: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH00860 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00868
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),46(R11)   10
         MVC   66(2,R13),48(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00868
*S1727: if( line->Bits->HasPNModifier ) then {
         L     R2,72(R12)   LINE
         TM    1078(R2),1   HASPNMODIFIER
         JE    AAH00865
*S1728: if( line->StatusIndicator="P" ) then {
         L     R3,72(R12)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,67(R11)   P
         ST    R14,64(R13)
         MVC   70(2,R13),52(R11)   1
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAH00862
*S1729: do GAPC.SetEdit( Edit->E101, line, base->NoDxp, base->NoDay, 0
         MVC   100(4,R12),12(R11)   101
         LA    R14,100(R12)
         ST    R14,64(R13)
         LA    R14,72(R12)   LINE
         ST    R14,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    104(4,R12),104(R12)
         LA    R14,104(R12)
         ST    R14,80(R13)
         XC    108(4,R12),108(R12)
         LA    R14,108(R12)
         ST    R14,84(R13)
         L     R15,16(R11)   GAPCC091
         BASR  R14,R15
*S1730: if( not applied ) then {
         L     R15,76(R12)   APPLIED
         LTR   R15,R15
         JNE   AAH00861
*S1731: applied:=1;
         MVC   76(4,R12),4(R11)   1
AAH00861 J     AAH00864
*S1732: }
*S1733: }
*S1734: else if( not ( exists or line->PackagingFlag ) ) then {
AAH00862 L     R15,80(R12)   EXISTS
         LTR   R15,R15
         JNE   AAH00863
         L     R2,72(R12)   LINE
         L     R15,540(R2)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAH00863
*S1735: exists:=1;
         MVC   80(4,R12),4(R11)   1
AAH00863 EQU   *
AAH00864 EQU   *
AAH00865 EQU   *
AAH00866 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00867
         L     R2,8(R2)
AAH00867 ST    R2,4(R9)   ITEM
         J     AAH00860
*S1736: }
*S1737: }
*S1738: }
*S1740: }
*S1741: return ( exists and not applied );
AAH00868 EQU   *
AAH00869 EQU   *
AAH00870 L     R2,60(R12)
         L     R15,80(R12)   EXISTS
         LTR   R15,R15
         JE    AAH00871
         L     R15,76(R12)   APPLIED
         LTR   R15,R15
         JNE   AAH00871
         LHI   R3,1
         J     AAH00872
AAH00871 XR    R3,R3
AAH00872 ST    R3,0(R2)
AAH00873 LA    R5,64(R12)
         ST    R5,60(R13)
         L     R15,40(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC098
**************************
GAPCC098 CSECT
GAPCC098 AMODE ANY
GAPCC098 RMODE ANY
*XREF - GAPCC098 GAPC.SetPaymentMethodFlags
*  R11 + 0000 Literals        (124 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (28 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (section603Applicable)
*        0080(R12)-> Integer len 4 (isOverrideG0463)
*        0084(R12)-> String ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH00903
         DC    A(DMNATFD) @00000
         DC    F'0' @00004
         DC    F'1' @00008
         DC    A(DMNSUBS) @00012
         DC    A(DMNSTBL) @00016
         DC    A(DMNSCPY) @00020
         DC    A(DMNSCMP) @00024
         DC    A(GAPCC097) @00028
         DC    A(GAPCC096) @00032
         DC    A(DMNFREE) @00036
         DC    H'10'  0 10 @00040
         DC    H'1120'  4 96 @00042
         DC    H'6'  0 6 @00044
         DC    H'1'  0 1 @00046
         DC    H'2'  0 2 @00048
         DC    H'5'  0 5 @00050
         DC    H'11'  0 11 @00052
         DC    H'9'  0 9 @00054
         DC    CL1'1' @00056
         DC    CL1'3' @00057
         DC    CL1'2' @00058
         DC    CL2'13' @00059
         DC    CL1'0' @00061
         DC    CL1'7' @00062
         DC    CL5'G0463' @00063
         DC    CL2'J1' @00068
         DC    CL2'J2' @00070
         DC    CL1'S' @00072
         DC    CL1'T' @00073
         DC    CL1'V' @00074
         DC    CL2'Q1' @00075
         DC    CL2'Q2' @00077
         DC    CL2'Q3' @00079
         DC    CL2'Q4' @00081
         DC    CL1'A' @00083
         DC    CL1'8' @00084
         DC    CL1'Q' @00085
         DC    CL1'H' @00086
         DC    CL1'R' @00087
         DC    CL1'U' @00088
         DC    CL1'P' @00089
         DC    CL1'G' @00090
         DC    CL1'K' @00091
         DC    CL2'12' @00092
         DC    CL2'14' @00094
         DC    CL2'34' @00096
         DC    CL2'75' @00098
         DC    CL2'76' @00100
         DC    CL1'9' @00102
         DC    CL1'6' @00103
         DC    CL5'Q3014' @00104
         DC    CL5'G2025' @00109
         DC    CL2'77' @00114
         DC    CL1'5' @00116
         DC    CL2'43' @00117
         DC    CL2'71' @00119
AAH00903 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(20,R12),72(R12)
         ST    R2,92(R12)
         XC    96(4,R12),96(R12)
* Set Payment Method Flag
*S1750: if( claim->Bits->Nopps ) then {
         TM    3004(R9),1   NOPPS
         JE    AAH00921
*S1751: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00906 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00920
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00920
*S1752: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH00917
*S1753: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
         L     R3,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),44(R11)   6
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH00907
         DC    CL1'C'
         DC    X'00'
         J     AAH00908
         DC    CL1'E'
         DC    X'00'
         J     AAH00909
         DC    CL1'M'
         DC    X'00'
         J     AAH00910
         DC    CL1'W'
         DC    X'00'
         J     AAH00911
         DC    CL1'Y'
         DC    X'00'
         J     AAH00912
         DC    CL1'Z'
         DC    X'00'
         J     AAH00913
*S1754: case "C":
*S1755: case "E":
*S1756: case "M":
*S1757: case "W":
*S1758: case "Y":
*S1759: case "Z":
*S1760: line->PayMethFlag:="1";
AAH00907 EQU   *
AAH00908 EQU   *
AAH00909 EQU   *
AAH00910 EQU   *
AAH00911 EQU   *
AAH00912 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1761: break;
         J     AAH00916
*S1762: default:
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1764: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00913 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00914
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00914
         LA    R3,57(R11)   3
         J     AAH00915
AAH00914 LA    R3,58(R11)   2
AAH00915 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1765: break;
AAH00916 EQU   *
AAH00917 EQU   *
AAH00918 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00919
         L     R2,8(R2)
AAH00919 ST    R2,4(R9)   ITEM
         J     AAH00906
AAH00920 J     AAH01127
*S1766: }
*S1767: }
*S1768: }
*S1769: }
*S1770: else if( base->BillType="13" ) then {
AAH00921 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,59(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH00977
* CHECK IF SECTION 603 RULES ARE APPLICABLE
*S1773: section603Applicable:=do GAPC.SubjectTo603Rules();
         LA    R14,76(R12)   SECTION603APPLICABLE
         ST    R14,60(R13)
         L     R15,28(R11)   GAPCC097
         BASR  R14,R15
*S1774: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH00922 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00976
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00976
*S1775: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH00973
*S1776: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
         L     R3,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),40(R11)   10
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH00923
         DC    CL1'A'
         DC    X'00'
         J     AAH00926
         DC    CL1'F'
         DC    X'00'
         J     AAH00927
         DC    CL1'L'
         DC    X'00'
         J     AAH00932
         DC    CL1'C'
         DC    X'00'
         J     AAH00933
         DC    CL1'E'
         DC    X'00'
         J     AAH00934
         DC    CL1'B'
         DC    X'00'
         J     AAH00935
         DC    CL1'M'
         DC    X'00'
         J     AAH00936
         DC    CL1'W'
         DC    X'00'
         J     AAH00937
         DC    CL1'Y'
         DC    X'00'
         J     AAH00938
         DC    CL1'Z'
         DC    X'00'
         J     AAH00939
*S1777: case "A":
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1779: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00923 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00924
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00924
         LA    R3,57(R11)   3
         J     AAH00925
AAH00924 LA    R3,58(R11)   2
AAH00925 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1782: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1784: break;
         J     AAH00972
*S1785: case "F":
*S1786: case "L":
*V18.0 SECTION 603 PMF LOGIC FOR SI F, L
*S1788: if( section603Applicable
AAH00926 EQU   *
AAH00927 L     R15,76(R12)   SECTION603APPLICABLE
         LTR   R15,R15
         JE    AAH00928
         L     R2,72(R12)   LINE
         TM    1078(R2),1   HASPNMODIFIER
         JE    AAH00928
*S1789: and line->Bits->HasPNModifier ) then {
*S1790: line->PayMethFlag:="7";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   7
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00931
*S1791: }
*S1792: else{
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1794: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00928 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00929
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00929
         LA    R3,57(R11)   3
         J     AAH00930
AAH00929 LA    R3,58(R11)   2
AAH00930 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1797: line->PaymentApc :=0;
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1799: }
*S1800: break;
AAH00931 J     AAH00972
*S1801: case "C":
*S1802: case "E":
*S1803: case "B":
*S1804: case "M":
*case "Q":
*S1806: case "W":
*S1807: case "Y":
*S1808: case "Z":
*S1809: line->PayMethFlag:="1";
AAH00932 EQU   *
AAH00933 EQU   *
AAH00934 EQU   *
AAH00935 EQU   *
AAH00936 EQU   *
AAH00937 EQU   *
AAH00938 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1812: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1814: break;
         J     AAH00972
*S1815: default:
*V18.0 SECTION 603 PMF LOGIC
*V20.0 Added PO logic specifically for G0463 (PMF 'A') which is curren
* check for the flag is redundant but intentional, as we only want PO
* so it is needed.
*S1820: isOverrideG0463 := (line->Hcpcs = "G0463" and line->Bits->HasP
AAH00939 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,63(R11)   G0463
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00940
         L     R4,72(R12)   LINE
         TM    1079(R4),128   HASPOMODIFIER
         JE    AAH00940
         L     R2,1868(R9)   VERSION
         CHI   R2,74
         JL    AAH00940
         LHI   R2,1
         J     AAH00941
AAH00940 XR    R2,R2
AAH00941 ST    R2,80(R12)   ISOVERRIDEG0463
*S1821: if(section603Applicable
         L     R15,76(R12)   SECTION603APPLICABLE
         LTR   R15,R15
         JE    AAH00963
         L     R2,72(R12)   LINE
         TM    1078(R2),1   HASPNMODIFIER
         JNE   AAH00942
         L     R15,80(R12)   ISOVERRIDEG0463
         LTR   R15,R15
         JE    AAH00963
*S1822: and (line->Bits->HasPNModifier or isOverrideG0463)) then {
*S1823: if( line->StatusIndicator="J1"
AAH00942 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,68(R11)   J1
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   J2
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-80
         LTR   R5,R5
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   S
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,73(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,74(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,75(R11)   Q1
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,77(R11)   Q2
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,79(R11)   Q3
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,81(R11)   Q4
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00943
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,63(R11)   G0463
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00949
*S1824: or line->StatusIndicator="J2"
*S1825: or line->StatusIndicator="S"
*S1826: or line->StatusIndicator="T"
*S1827: or line->StatusIndicator="V"
*S1828: or line->StatusIndicator="Q1"
*S1829: or line->StatusIndicator="Q2"
*S1830: or line->StatusIndicator="Q3"
*S1831: or line->StatusIndicator="Q4"
*S1832: or line->Hcpcs="G0463" ) then {
*S1833: if (isOverrideG0463) then {
AAH00943 L     R15,80(R12)   ISOVERRIDEG0463
         LTR   R15,R15
         JE    AAH00944
*S1834: line->PayMethFlag:="A";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,83(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00947
*S1835: }
*S1836: else if( do GAPC.ExcludeFromSection603Reduction( line ) ) then
AAH00944 AHI   R13,80
         LA    R14,96(R12)
         ST    R14,60(R13)
         LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,32(R11)   GAPCC096
         BASR  R14,R15
         AHI   R13,-80
         L     R15,96(R12)
         LTR   R15,R15
         JE    AAH00945
*S1837: line->PayMethFlag:="7";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   7
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00946
*S1838: }
*S1839: else{
*S1840: line->PayMethFlag:="8";
AAH00945 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,84(R11)   8
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1841: }
*S1843: if( StrPartial( line->StatusIndicator, 0, 1 )="Q" ) then {
AAH00946 EQU   *
AAH00947 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,85(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00948
*line->HcpcsApc  :=0;
*S1846: line->PaymentApc :=0;
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
AAH00948 J     AAH00962
*S1848: }
*S1850: }
*S1851: else if( line->StatusIndicator="H"
AAH00949 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,86(R11)   H
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JE    AAH00950
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R4)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,87(R11)   R
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-80
         LTR   R5,R5
         JE    AAH00950
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,88(R11)   U
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00951
*S1852: or line->StatusIndicator="R"
*S1853: or line->StatusIndicator="U" ) then {
*S1854: line->PayMethFlag:="7";
AAH00950 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   7
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00961
*S1855: }
*S1856: else if( line->StatusIndicator="P"
AAH00951 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,89(R11)   P
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00952
         TM    3000(R9),32   HASCC41
         JE    AAH00952
*S1857: and claim->Bits->HasCc41 ) then {
*S1858: line->PayMethFlag:="7";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,62(R11)   7
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00960
*S1859: }
*S1860: else if( 61 < base->Version
AAH00952 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAH00956
         L     R3,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-80
         LTR   R4,R4
         JE    AAH00953
         L     R5,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,91(R11)   K
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         AHI   R13,-80
         LTR   R6,R6
         JNE   AAH00956
*S1861: and ( line->StatusIndicator="G" or line->StatusIndicator="K" )
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1863: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00953 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00954
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00954
         LA    R3,57(R11)   3
         J     AAH00955
AAH00954 LA    R3,58(R11)   2
AAH00955 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00959
*S1864: /*#ifndef separation
*line->HcpcsApc  :=0;
*S1866:         line->PaymentApc :=0;
*S1867: #endif*/
*S1868: }
*S1869: else if( StrPartial( line->StatusIndicator, 0, 1 )="Q" ) then
AAH00956 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,85(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00957
*S1870: line->PayMethFlag:="1";
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1873: line->PaymentApc :=0;
         L     R5,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R5)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00958
*S1875: }
*S1876: else{
*S1877: line->PayMethFlag:="0";
AAH00957 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
AAH00958 EQU   *
AAH00959 EQU   *
AAH00960 EQU   *
AAH00961 EQU   *
AAH00962 J     AAH00971
*S1878: }
*S1879: }
*S1880: else if( 61 < base->Version
AAH00963 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAH00967
         L     R3,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-80
         LTR   R4,R4
         JE    AAH00964
         L     R5,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,91(R11)   K
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         AHI   R13,-80
         LTR   R6,R6
         JNE   AAH00967
*S1881: and ( line->StatusIndicator="G" or line->StatusIndicator="K" )
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1883: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00964 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00965
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00965
         LA    R3,57(R11)   3
         J     AAH00966
AAH00965 LA    R3,58(R11)   2
AAH00966 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00970
*S1884: /*#ifndef separation
*line->HcpcsApc  :=0;
*S1886:        line->PaymentApc :=0;
*S1887: #endif*/
*S1888: }
*S1889: else if( StrPartial( line->StatusIndicator, 0, 1 )="Q" ) then
AAH00967 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         AHI   R13,-80
         AHI   R13,80
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,85(R11)   Q
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-80
         LTR   R3,R3
         JNE   AAH00968
*S1890: line->PayMethFlag:="1";
         L     R4,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R4)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1893: line->PaymentApc :=0;
         L     R5,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R5)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH00969
*S1895: }
*S1896: else{
*S1897: line->PayMethFlag:="0";
AAH00968 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1898: }
*S1899: break;
AAH00969 EQU   *
AAH00970 EQU   *
AAH00971 EQU   *
AAH00972 EQU   *
AAH00973 EQU   *
AAH00974 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00975
         L     R2,8(R2)
AAH00975 ST    R2,4(R9)   ITEM
         J     AAH00922
AAH00976 J     AAH01126
*S1900: }
*S1901: }
*S1902: }
*S1903: }
*S1904: else if( base->BillType="12"
AAH00977 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,92(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH00978
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,94(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH01011
*S1905: or base->BillType="14" ) then {
*S1906: if( claim->Bits->HasCc41 ) then {
AAH00978 TM    3000(R9),32   HASCC41
         JE    AAH00984
*S1907: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00979 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH00983
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH00983
*S1908: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH00980
*S1909: line->PayMethFlag :="1";
         L     R3,72(R12)   LINE
         LA    R14,208(R3)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*line->HcpcsApc  :=0;
*S1912: line->PaymentApc :=0;
         L     R4,72(R12)   LINE
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
AAH00980 EQU   *
AAH00981 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH00982
         L     R2,8(R2)
AAH00982 ST    R2,4(R9)   ITEM
         J     AAH00979
AAH00983 J     AAH01010
*S1914: }
*S1915: }
*S1916: }
*S1917: else{
*S1918: loop( item:=base->lines->first; item and (line:=&item->line, l
AAH00984 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH00985 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01009
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01009
*S1919: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01006
*S1920: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
         L     R3,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),52(R11)   11
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH00986
         DC    CL1'A'
         DC    X'00'
         J     AAH00987
         DC    CL1'F'
         DC    X'00'
         J     AAH00988
         DC    CL1'L'
         DC    X'00'
         J     AAH00991
         DC    CL1'C'
         DC    X'00'
         J     AAH00992
         DC    CL1'E'
         DC    X'00'
         J     AAH00993
         DC    CL1'B'
         DC    X'00'
         J     AAH00994
         DC    CL1'M'
         DC    X'00'
         J     AAH00995
         DC    CL1'Q'
         DC    X'00'
         J     AAH00996
         DC    CL1'W'
         DC    X'00'
         J     AAH00997
         DC    CL1'Y'
         DC    X'00'
         J     AAH00998
         DC    CL1'Z'
         DC    X'00'
         J     AAH00999
*S1921: case "A":
*S1922: case "F":
*S1923: case "L":
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1925: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH00986 EQU   *
AAH00987 EQU   *
AAH00988 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH00989
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH00989
         LA    R3,57(R11)   3
         J     AAH00990
AAH00989 LA    R3,58(R11)   2
AAH00990 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1928: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1930: break;
         J     AAH01005
*S1931: case "C":
*S1932: case "E":
*S1933: case "B":
*S1934: case "M":
*S1935: case "Q":
*S1936: case "W":
*S1937: case "Y":
*S1938: case "Z":
*S1939: line->PayMethFlag:="1";
AAH00991 EQU   *
AAH00992 EQU   *
AAH00993 EQU   *
AAH00994 EQU   *
AAH00995 EQU   *
AAH00996 EQU   *
AAH00997 EQU   *
AAH00998 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1942: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1944: break;
         J     AAH01005
*S1945: default:
*S1946: if( 61 < base->Version
AAH00999 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAH01003
         L     R3,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,90(R11)   G
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-80
         LTR   R4,R4
         JE    AAH01000
         L     R5,72(R12)   LINE
         AHI   R13,80
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,91(R11)   K
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         AHI   R13,-80
         LTR   R6,R6
         JNE   AAH01003
*S1947: and ( line->StatusIndicator="G" or line->StatusIndicator="K" )
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1949: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01000 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01001
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01001
         LA    R3,57(R11)   3
         J     AAH01002
AAH01001 LA    R3,58(R11)   2
AAH01002 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH01004
*S1950: /*#ifndef separation
*line->HcpcsApc  :=0;
*S1952:         line->PaymentApc :=0;
*S1953: #endif*/
*S1954: }
*S1955: else line->PayMethFlag:="0";
AAH01003 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1956: break;
AAH01004 EQU   *
AAH01005 EQU   *
AAH01006 EQU   *
AAH01007 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01008
         L     R2,8(R2)
AAH01008 ST    R2,4(R9)   ITEM
         J     AAH00985
AAH01009 EQU   *
AAH01010 J     AAH01125
*S1957: }
*S1958: }
*S1959: }
*S1960: }
*S1961: }
*S1962: else if( base->BillType="34" ) then {
AAH01011 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,96(R11)   34
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH01030
*S1963: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH01012 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01029
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01029
*S1964: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01026
*S1965: if( line->flags->Vaccine
         L     R3,72(R12)   LINE
         TM    1089(R3),32   VACCINE
         JNE   AAH01013
         L     R4,72(R12)   LINE
         TM    1089(R4),16   ANTIGEN
         JNE   AAH01013
         L     R2,72(R12)   LINE
         TM    1089(R2),8   SPLINT
         JNE   AAH01013
         L     R2,72(R12)   LINE
         TM    1089(R2),4   CAST
         JNE   AAH01013
         L     R2,72(R12)   LINE
         TM    1089(R2),2   NEGATIVEPRESSUREWOUNDTHERAPY
         JE    AAH01014
*S1966: or line->flags->Antigen
*S1967: or line->flags->Splint
*S1968: or line->flags->Cast
*S1969: or line->flags->NegativePressureWoundTherapy ) then {
*S1970: line->PayMethFlag:="0";
AAH01013 L     R2,72(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAH01025
*S1971: }
*S1972: else{
*S1973: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
AAH01014 L     R2,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),44(R11)   6
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH01015
         DC    CL1'C'
         DC    X'00'
         J     AAH01016
         DC    CL1'E'
         DC    X'00'
         J     AAH01017
         DC    CL1'M'
         DC    X'00'
         J     AAH01018
         DC    CL1'W'
         DC    X'00'
         J     AAH01019
         DC    CL1'Y'
         DC    X'00'
         J     AAH01020
         DC    CL1'Z'
         DC    X'00'
         J     AAH01021
*S1974: case "C":
*S1975: case "E":
*S1976: case "M":
*S1977: case "W":
*S1978: case "Y":
*S1979: case "Z":
*S1980: line->PayMethFlag:="1";
AAH01015 EQU   *
AAH01016 EQU   *
AAH01017 EQU   *
AAH01018 EQU   *
AAH01019 EQU   *
AAH01020 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1983: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1985: break;
         J     AAH01024
*S1986: default:
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S1988: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01021 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01022
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01022
         LA    R3,57(R11)   3
         J     AAH01023
AAH01022 LA    R3,58(R11)   2
AAH01023 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S1991: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S1993: break;
AAH01024 EQU   *
AAH01025 EQU   *
AAH01026 EQU   *
AAH01027 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01028
         L     R2,8(R2)
AAH01028 ST    R2,4(R9)   ITEM
         J     AAH01012
AAH01029 J     AAH01124
*S1994: }
*S1995: }
*S1996: }
*S1997: }
*S1998: }
*S1999: else if( base->BillType="75" ) then {
AAH01030 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,98(R11)   75
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH01046
*S2000: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH01031 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01045
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01045
*S2001: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01042
*S2002: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
         L     R3,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),44(R11)   6
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH01032
         DC    CL1'C'
         DC    X'00'
         J     AAH01033
         DC    CL1'E'
         DC    X'00'
         J     AAH01034
         DC    CL1'M'
         DC    X'00'
         J     AAH01035
         DC    CL1'W'
         DC    X'00'
         J     AAH01036
         DC    CL1'Y'
         DC    X'00'
         J     AAH01037
         DC    CL1'Z'
         DC    X'00'
         J     AAH01038
*S2003: case "C":
*S2004: case "E":
*S2005: case "M":
*S2006: case "W":
*S2007: case "Y":
*S2008: case "Z":
*S2009: line->PayMethFlag:="1";
AAH01032 EQU   *
AAH01033 EQU   *
AAH01034 EQU   *
AAH01035 EQU   *
AAH01036 EQU   *
AAH01037 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2012: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2014: break;
         J     AAH01041
*S2015: default:
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S2017: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01038 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01039
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01039
         LA    R3,57(R11)   3
         J     AAH01040
AAH01039 LA    R3,58(R11)   2
AAH01040 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2020: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2022: break;
AAH01041 EQU   *
AAH01042 EQU   *
AAH01043 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01044
         L     R2,8(R2)
AAH01044 ST    R2,4(R9)   ITEM
         J     AAH01031
AAH01045 J     AAH01123
*S2023: }
*S2024: }
*S2025: }
*S2026: }
*S2027: else if( base->BillType="76" ) then {
AAH01046 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,100(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAH01079
* CHECK IF SECTION 603 RULES ARE APPLICABLE (FOR BILLTYPE 76X, JUST US
*S2030: do GAPC.SubjectTo603Rules();
         LA    R14,96(R12)
         ST    R14,60(R13)
         L     R15,28(R11)   GAPCC097
         BASR  R14,R15
* V18.0, CHANGED PMF FOR CMHC PHP SERVICE EFFECTIVE 2017-01-01
*S2033: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAH01047 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01078
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01078
*S2034: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01075
*S2035: if( line->PackagingFlag
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAH01048
         L     R4,72(R12)   LINE
         TM    1093(R4),2   PHSERVICE
         JE    AAH01053
*S2036: or line->flags->PhService ) then {
* V18.0, CHANGED PMF FOR CMHC PHP SERVICE EFFECTIVE 2017-01-01
*S2038: if( 65 < base->Version and claim->Bits->HasCcMY ) then {
AAH01048 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAH01049
         TM    3001(R9),4   HASCCMY
         JE    AAH01049
*S2039: line->PayMethFlag:="9";
         L     R2,72(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)   9
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAH01052
*S2040: }
*S2041: else if( 65 < base->Version and claim->Bits->HasCc66 ) then {
AAH01049 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAH01050
         TM    3001(R9),8   HASCC66
         JE    AAH01050
*S2042: line->PayMethFlag:="6";
         L     R2,72(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,103(R11)   6
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAH01051
*S2043: }
*S2044: else {
*S2045: line->PayMethFlag:="0";
AAH01050 L     R2,72(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
AAH01051 EQU   *
AAH01052 J     AAH01074
*S2046: }
*S2047: }
*S2048: else if( line->Hcpcs="Q3014" or line->Hcpcs="G2025") then {
AAH01053 L     R2,72(R12)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,104(R11)   Q3014
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAH01054
         L     R4,72(R12)   LINE
         LA    R14,144(R4)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,109(R11)   G2025
         ST    R14,64(R13)
         MVC   70(2,R13),50(R11)   5
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAH01057
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S2050: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01054 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01055
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01055
         LA    R3,57(R11)   3
         J     AAH01056
AAH01055 LA    R3,58(R11)   2
AAH01056 LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*line->HcpcsApc  :=0;
*S2053: line->PaymentApc :=0;
         L     R4,72(R12)   LINE
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAH01073
*S2055: }
*S2056: else {
*S2057: switch( line->PaymentApc ){
AAH01057 L     R2,72(R12)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),54(R11)   9
         MVC   68(2,R13),50(R11)   5
         MVC   70(2,R13),44(R11)   6
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH01058
         DC    CL5'00172'
         DC    X'00'
         J     AAH01059
         DC    CL5'00173'
         DC    X'00'
         J     AAH01060
         DC    CL5'00175'
         DC    X'00'
         J     AAH01061
         DC    CL5'00176'
         DC    X'00'
         J     AAH01062
         DC    CL5'05861'
         DC    X'00'
         J     AAH01063
         DC    CL5'05862'
         DC    X'00'
         J     AAH01064
         DC    CL5'05863'
         DC    X'00'
         J     AAH01065
         DC    CL5'05851'
         DC    X'00'
         J     AAH01066
         DC    CL5'05852'
         DC    X'00'
         J     AAH01071
*S2058: case "00172":
*S2059: case "00173":
*S2060: case "00175":
*S2061: case "00176":
*S2062: case "05861":
*S2063: case "05862":
*S2064: case "05863":
*S2065: case "05851":
*S2066: case "05852":
* V18.0, CHANGED PMF FOR CMHC PHP SERVICE EFFECTIVE 2017-01-01
*S2068: if( 65 < base->Version and claim->Bits->HasCcMY ) then {
AAH01058 EQU   *
AAH01059 EQU   *
AAH01060 EQU   *
AAH01061 EQU   *
AAH01062 EQU   *
AAH01063 EQU   *
AAH01064 EQU   *
AAH01065 EQU   *
AAH01066 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAH01067
         TM    3001(R9),4   HASCCMY
         JE    AAH01067
*S2069: line->PayMethFlag:="9";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,102(R11)   9
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH01070
*S2070: }
*S2071: else if( 65 < base->Version and claim->Bits->HasCc66 ) then {
AAH01067 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAH01068
         TM    3001(R9),8   HASCC66
         JE    AAH01068
*S2072: line->PayMethFlag:="6";
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,103(R11)   6
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         J     AAH01069
*S2073: }
*S2074: else {
*S2075: line->PayMethFlag:="0";
AAH01068 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2076: }
*S2077: break;
AAH01069 EQU   *
AAH01070 J     AAH01072
*S2078: default:
*S2079: line->PayMethFlag:="1";
AAH01071 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2082: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2084: break;
AAH01072 EQU   *
AAH01073 EQU   *
AAH01074 EQU   *
AAH01075 EQU   *
AAH01076 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01077
         L     R2,8(R2)
AAH01077 ST    R2,4(R9)   ITEM
         J     AAH01047
AAH01078 J     AAH01122
*S2085: }
*S2086: }
*S2087: }
*S2088: }
*S2089: }
*V15.3.0, ALL LINES ON FQHC CLAIMS GET PMF 5
*S2091: else if( 56 < base->Version
AAH01079 L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAH01085
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAH01085
         TM    3000(R9),1   HASCC65
         JNE   AAH01085
*S2092: and base->BillType="77"
*S2093: and not claim->Bits->HasCc65 ) then {
*S2094: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH01080 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01084
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01084
*S2095: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01081
*S2096: line->PayMethFlag:="5";
         L     R3,72(R12)   LINE
         LA    R14,208(R3)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R11)   5
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
*line->HcpcsApc  :=0;
*S2099: line->PaymentApc :=0;
         L     R4,72(R12)   LINE
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
AAH01081 EQU   *
AAH01082 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01083
         L     R2,8(R2)
AAH01083 ST    R2,4(R9)   ITEM
         J     AAH01080
AAH01084 J     AAH01121
*S2101: }
*S2102: }
*S2103: }
*S2104: else {
*S2106: if( claim->Bits->HasCc07/*v7.3 added 71 and 73 versioned and c
AAH01085 TM    3000(R9),128   HASCC07
         JE    AAH01104
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,117(R11)   43
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH01104
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,119(R11)   71
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAH01104
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,114(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),48(R11)   2
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAH01104
*S2107: and not (
*S2108: base->BillType="43"
*S2109: or base->BillType="71"
*S2110: or base->BillType="77"/*v11.1, eff 4/1/10 FQHC goes from 73x t
*S2111: ) ) then {
*S2112: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH01086 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01103
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01103
*S2113: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01100
*S2114: if( line->flags->Antigen
         L     R3,72(R12)   LINE
         TM    1089(R3),16   ANTIGEN
         JNE   AAH01087
         L     R4,72(R12)   LINE
         TM    1089(R4),8   SPLINT
         JNE   AAH01087
         L     R2,72(R12)   LINE
         TM    1089(R2),4   CAST
         JE    AAH01088
*S2115: or line->flags->Splint
*S2116: or line->flags->Cast
*S2117: /*or ( 65 < base->Version and line->flags->NegativePressureWou
*S2118: line->PayMethFlag:="0";
AAH01087 L     R2,72(R12)   LINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         J     AAH01099
*S2119: }
*S2120: else{
*S2121: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
AAH01088 L     R2,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R2)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),44(R11)   6
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH01089
         DC    CL1'C'
         DC    X'00'
         J     AAH01090
         DC    CL1'E'
         DC    X'00'
         J     AAH01091
         DC    CL1'M'
         DC    X'00'
         J     AAH01092
         DC    CL1'W'
         DC    X'00'
         J     AAH01093
         DC    CL1'Y'
         DC    X'00'
         J     AAH01094
         DC    CL1'Z'
         DC    X'00'
         J     AAH01095
*S2122: case "C":
*S2123: case "E":
*S2124: case "M":
*S2125: case "W":
*S2126: case "Y":
*S2127: case "Z":
*S2128: line->PayMethFlag:="1";
AAH01089 EQU   *
AAH01090 EQU   *
AAH01091 EQU   *
AAH01092 EQU   *
AAH01093 EQU   *
AAH01094 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2131: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2133: break;
         J     AAH01098
*S2134: default:
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S2136: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01095 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01096
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01096
         LA    R3,57(R11)   3
         J     AAH01097
AAH01096 LA    R3,58(R11)   2
AAH01097 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2139: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2141: break;
AAH01098 EQU   *
AAH01099 EQU   *
AAH01100 EQU   *
AAH01101 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01102
         L     R2,8(R2)
AAH01102 ST    R2,4(R9)   ITEM
         J     AAH01086
AAH01103 J     AAH01120
*S2142: }
*S2143: }
*S2144: }
*S2145: }
*S2146: }
*S2147: else{
*S2148: loop( item:=base->lines->first; item and (line:=&item->line, l
AAH01104 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH01105 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01119
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),40(R11)   10
         MVC   66(2,R13),42(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01119
*S2149: if( not line->Bits->IgnoreLine ) then {
         L     R2,72(R12)   LINE
         TM    1081(R2),64   IGNORELINE
         JNE   AAH01116
*S2150: switch( StrPartial( line->StatusIndicator, 0, 1 ) ){
         L     R3,72(R12)   LINE
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),4(R11)   0
         MVC   76(4,R13),8(R11)   1
         L     R15,12(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    64(2,R13),64(R13)
         MVC   66(2,R13),44(R11)   6
         MVC   68(2,R13),46(R11)   1
         MVC   70(2,R13),48(R11)   2
         L     R15,16(R11)   DMNSTBL
         BASR  R14,R15
         J     AAH01106
         DC    CL1'C'
         DC    X'00'
         J     AAH01107
         DC    CL1'E'
         DC    X'00'
         J     AAH01108
         DC    CL1'M'
         DC    X'00'
         J     AAH01109
         DC    CL1'W'
         DC    X'00'
         J     AAH01110
         DC    CL1'Y'
         DC    X'00'
         J     AAH01111
         DC    CL1'Z'
         DC    X'00'
         J     AAH01112
*S2151: case "C":
*S2152: case "E":
*S2153: case "M":
*S2154: case "W":
*S2155: case "Y":
*S2156: case "Z":
*S2157: line->PayMethFlag:="1";
AAH01106 EQU   *
AAH01107 EQU   *
AAH01108 EQU   *
AAH01109 EQU   *
AAH01110 EQU   *
AAH01111 L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,56(R11)   1
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2160: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2162: break;
         J     AAH01115
*S2163: default:
* IF LINE ITEM DENIAL/REJECTION FLAG IS 1 OR 2, AND THE PAYMENT METHOD
*S2165: line->PayMethFlag:= ( 0 < line->DenialFlag and line->DenialFla
AAH01112 L     R2,72(R12)   LINE
         L     R3,72(R12)   LINE
         L     R4,548(R3)   DENIALFLAG
         LTR   R4,R4
         JNH   AAH01113
         L     R5,72(R12)   LINE
         L     R6,548(R5)   DENIALFLAG
         CHI   R6,3
         JNL   AAH01113
         LA    R3,57(R11)   3
         J     AAH01114
AAH01113 LA    R3,58(R11)   2
AAH01114 AHI   R13,80
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*line->HcpcsApc  :=0;
*S2168: line->PaymentApc :=0;
         L     R2,72(R12)   LINE
         AHI   R13,80
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,61(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),46(R11)   1
         L     R15,20(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
*S2170: break;
AAH01115 EQU   *
AAH01116 EQU   *
AAH01117 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01118
         L     R2,8(R2)
AAH01118 ST    R2,4(R9)   ITEM
         J     AAH01105
AAH01119 EQU   *
AAH01120 EQU   *
AAH01121 EQU   *
AAH01122 EQU   *
AAH01123 EQU   *
AAH01124 EQU   *
AAH01125 EQU   *
AAH01126 EQU   *
AAH01127 EQU   *
AAH01128 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,36(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC099
**************************
GAPCC099 CSECT
GAPCC099 AMODE ANY
GAPCC099 RMODE ANY
*XREF - GAPCC099 GAPC.ROModelPaymentMethodFlagOverride
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAH01203
         DC    A(DMNATFD) @00000
         DC    A(DMNSCPY) @00004
         DC    H'10'  0 10 @00008
         DC    H'1120'  4 96 @00010
         DC    H'1'  0 1 @00012
         DC    CL1'B' @00014
AAH01203 XC    64(4,R12),64(R12)
* V21.2 For codes flagged set the PMF to be regardless of action flag/
*S2182: loop( item:=base->lines->first; item and (line:=&item->line, l
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAH01206 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAH01210
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),8(R11)   10
         MVC   66(2,R13),10(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAH01210
*S2183: if (line->Bits->ROModel) then {
         L     R2,64(R12)   LINE
         TM    1087(R2),4   ROMODEL
         JE    AAH01207
*S2184: line->PayMethFlag := "B";
         L     R3,64(R12)   LINE
         LA    R14,208(R3)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   B
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   1
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
AAH01207 EQU   *
AAH01208 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAH01209
         L     R2,8(R2)
AAH01209 ST    R2,4(R9)   ITEM
         J     AAH01206
AAH01210 EQU   *
AAH01211 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAI
**************************
*    GAPCC100
**************************
GAPCC100 CSECT
GAPCC100 AMODE ANY
GAPCC100 RMODE ANY
*XREF - GAPCC100 GAPC.OceInit
*  R11 + 0000 Literals        (136 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAI00103
         DC    A(DMNFREE) @00000
         DC    A(DMNRESET) @00004
         DC    XL16'2000200004471C001C00101E00041C00' @00008
         DC    XL16'0000101E00041C000000100A00041C00'
         DC    XL16'0000102400061C001C0000001C001C00'
         DC    XL8'04571C0004020000'
         DC    XL16'04031C0004031C0004031C0004031C00' @00064
         DC    XL16'04031C0004031C0004031C0004031C00'
         DC    XL16'04031C0004031C0004031C001C001C00'
         DC    XL16'1C001C001C0014000000032800000000'
         DC    XL6'000000000000'
*S6: reset pool apc_pool;
AAI00103 LR    R2,R9
         AHI   R2,4236
         ST    R2,60(R13)
         L     R15,0(R11)   DMNFREE
         BASR  R14,R15
*S11: reset base;
         LA    R14,8(R11)
         ST    R14,60(R13)
         LA    R14,12(R9)
         ST    R14,64(R13)
         L     R15,4(R11)   DMNRESET
         BASR  R14,R15
*S12: reset claim;
         LA    R14,64(R11)
         ST    R14,60(R13)
         LA    R14,1972(R9)
         ST    R14,64(R13)
         L     R15,4(R11)   DMNRESET
         BASR  R14,R15
*S14: return_code:=0;
         XC    3016(4,R9),3016(R9)   RETURN_CODE
AAI00106 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC101
**************************
GAPCC101 CSECT
GAPCC101 AMODE ANY
GAPCC101 RMODE ANY
*XREF - GAPCC101 GAPC.OceClaim
*  R11 + 0000 Literals        (608 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (28 bytes)
*        0072(R12)-> Unknown ()
*        0072(R12)-> String ()
*        0084(R12)-> String ()
*        0096(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAI00203
         DC    F'1' @00000
         DC    F'1120' @00004
         DC    A(DMNNEW) @00008
         DC    A(DMNINIT) @00012
         DC    F'148' @00016
         DC    F'628' @00020
         DC    A(GAPCC008) @00024
         DC    A(GAPCC009) @00028
         DC    A(GAPCC037) @00032
         DC    A(GAPCC036) @00036
         DC    A(GAPCC011) @00040
         DC    A(GAPCC010) @00044
         DC    A(GAPCC073) @00048
         DC    A(GAPCC074) @00052
         DC    A(GAPCC079) @00056
         DC    A(GAPCC078) @00060
         DC    A(GAPCC080) @00064
         DC    A(GAPCC012) @00068
         DC    F'18' @00072
         DC    A(V40LJMP) @00076
         DC    F'22' @00080
         DC    A(GAPCC013) @00084
         DC    F'16' @00088
         DC    A(GAPCC085) @00092
         DC    A(GAPCC086) @00096
         DC    A(GAPCC035) @00100
         DC    A(GAPCC090) @00104
         DC    A(GAPCC092) @00108
         DC    A(DMNSCMP) @00112
         DC    A(GAPCC045) @00116
         DC    A(GAPCC014) @00120
         DC    A(GAPCC041) @00124
         DC    A(GAPCC042) @00128
         DC    A(GAPCC059) @00132
         DC    A(GAPCC060) @00136
         DC    A(GAPCC004) @00140
         DC    A(GAPCC005) @00144
         DC    A(GAPCC002) @00148
         DC    A(GAPCC006) @00152
         DC    A(GAPCC016) @00156
         DC    A(GAPCC017) @00160
         DC    A(GAPCC018) @00164
         DC    A(GAPCC019) @00168
         DC    A(GAPCC020) @00172
         DC    A(GAPCC021) @00176
         DC    A(GAPCC022) @00180
         DC    A(GAPCC093) @00184
         DC    A(DMNSCPY) @00188
         DC    F'85' @00192
         DC    A(GAPCC025) @00196
         DC    A(GAPCC028) @00200
         DC    A(GAPCC070) @00204
         DC    A(GAPCC030) @00208
         DC    A(GAPCC031) @00212
         DC    A(GAPCC034) @00216
         DC    A(GAPCC094) @00220
         DC    A(GAPCC095) @00224
         DC    A(GAPCC044) @00228
         DC    A(GAPCC043) @00232
         DC    A(GAPCC046) @00236
         DC    A(GAPCC068) @00240
         DC    A(GAPCC061) @00244
         DC    A(GAPCC063) @00248
         DC    A(GAPCC062) @00252
         DC    A(GAPCC064) @00256
         DC    A(GAPCC065) @00260
         DC    A(GAPCC066) @00264
         DC    F'2' @00268
         DC    A(GAPCC067) @00272
         DC    F'4' @00276
         DC    A(GAPCC056) @00280
         DC    A(GAPCC058) @00284
         DC    A(GAPCC057) @00288
         DC    F'3' @00292
         DC    A(GAPCC026) @00296
         DC    A(GAPCC023) @00300
         DC    A(GAPCC024) @00304
         DC    A(GAPCC027) @00308
         DC    A(GAPCC029) @00312
         DC    A(GAPCC015) @00316
         DC    A(GAPCC032) @00320
         DC    A(GAPCC033) @00324
         DC    A(GAPCC104) @00328
         DC    A(GAPCC105) @00332
         DC    A(GAPCC107) @00336
         DC    A(GAPCC108) @00340
         DC    A(GAPCC047) @00344
         DC    A(GAPCC082) @00348
         DC    A(GAPCC083) @00352
         DC    A(GAPCC084) @00356
         DC    A(GAPCC098) @00360
         DC    A(GAPCC007) @00364
         DC    A(GAPCC099) @00368
         DC    A(GAPCC081) @00372
         DC    A(GAPCC048) @00376
         DC    A(DMNFREE) @00380
         DC    XL16'04471C001C001C001C001C001C001C00' @00384
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C0004031C001C001C001C001C00'
         DC    XL16'1C001C001C001C0004031C001C001C00'
         DC    XL16'1C001C00041B1C001C0004031C001C00'
         DC    XL16'1400000001E81C00045F000000000000'
         DC    XL4'00000000'
         DC    XL16'042B1003000E04031C0004031C001C00' @00484
         DC    XL16'040300001003000E04031C0004031C00'
         DC    XL16'1C00040300001006000E04031C000403'
         DC    XL12'1C001C000403000004070000'
         DC    H'2'  0 2 @00544
         DC    H'3'  0 3 @00546
         DC    H'5'  0 5 @00548
         DC    CL2'14' @00550
         DC    CL2'13' @00552
         DC    CL2'78' @00554
         DC    CL2'83' @00556
         DC    CL2'84' @00558
         DC    CL2'85' @00560
         DC    CL2'89' @00562
         DC    CL2'12' @00564
         DC    CL2'75' @00566
         DC    CL2'22' @00568
         DC    CL2'23' @00570
         DC    CL2'32' @00572
         DC    CL2'72' @00574
         DC    CL2'74' @00576
         DC    CL2'81' @00578
         DC    CL2'82' @00580
         DC    CL2'77' @00582
         DC    CL3'770' @00584
         DC    CL2'71' @00587
         DC    CL2'43' @00589
         DC    CL5'0308T' @00591
         DC    CL5'C1840' @00596
         DC    CL5'C9732' @00601
AAI00203 XC    64(8,R12),64(R12)
         LA    R4,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R4,44(R10)
         XC    72(8,R12),72(R12)
         ST    R4,80(R12)
         XC    84(8,R12),84(R12)
         ST    R4,92(R12)
         XC    96(4,R12),96(R12)
*S23: set goto exit_label to exit_now;
         BRAS  R14,AAI00206
         J     AAI00300
AAI00206 L     R15,44(R10)
         STM   R9,R15,3020(R9)   EXIT_NOW
*S25: /*create unused areas used in passing to SetEdit when not applic
*S26:  to avoid passing a null value - should never get filled/used/ac
*S27: base->NoLine :=new struct LineItem using apc_pool;
         LR    R2,R9
         AHI   R2,4236
         MVC   60(4,R13),0(R11)   1
         MVC   64(4,R13),4(R11)   1120
         ST    R2,68(R13)
         L     R15,8(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LA    R14,384(R11)
         ST    R14,60(R13)
         ST    R2,64(R13)
         ST    R3,68(R13)
         L     R15,12(R11)   DMNINIT
         BASR  R14,R15
         ST    R3,88(R9)   NOLINE
*S28: base->NoDxp :=new struct DxStruct using apc_pool;
         LR    R4,R9
         AHI   R4,4236
         MVC   60(4,R13),0(R11)   1
         MVC   64(4,R13),16(R11)   148
         ST    R4,68(R13)
         L     R15,8(R11)   DMNNEW
         BASR  R14,R15
         L     R5,60(R13)
         XC    0(12,R5),0(R5)
         ST    R4,12(R5)
         XC    16(8,R5),16(R5)
         ST    R4,24(R5)
         XC    28(120,R5),28(R5)
         ST    R5,92(R9)   NODXP
*S29: base->NoDay :=new struct DayStruct using apc_pool;
         LR    R6,R9
         AHI   R6,4236
         MVC   60(4,R13),0(R11)   1
         MVC   64(4,R13),20(R11)   628
         ST    R6,68(R13)
         L     R15,8(R11)   DMNNEW
         BASR  R14,R15
         L     R7,60(R13)
         LA    R14,484(R11)
         ST    R14,60(R13)
         ST    R6,64(R13)
         ST    R7,68(R13)
         L     R15,12(R11)   DMNINIT
         BASR  R14,R15
         ST    R7,84(R9)   NODAY
* CHECK THAT THERE ARE LINES ON THE CLAIM
*S37: do GAPC.CheckLines();
         L     R15,24(R11)   GAPCC008
         BASR  R14,R15
* CHECK THAT THE CLAIM DATES ARE VALID AND DETERMINE VERSION
*S40: do GAPC.CheckDates();
         L     R15,28(R11)   GAPCC009
         BASR  R14,R15
* CHECK THAT HARDCODED APCS AND HCPCS ARE ACCOUNTED FOR IN THE ROT FIL
*S43: do GAPC.HardcodedApcChecks();
         L     R15,32(R11)   GAPCC037
         BASR  R14,R15
*S44: do GAPC.HardcodedHcpcsChecks();
         L     R15,36(R11)   GAPCC036
         BASR  R14,R15
*S46: /* get here - dates within the table but check for non-opps impl
* Eff 7/1/07; Set Non-OPPS flag; any value other than 2 will default t
*S51: claim->Bits->Nopps:=( claim->OPPSFlag=2 )? 1 : 0;
         L     R8,2208(R9)   OPPSFLAG
         CHI   R8,2
         JE    AAI00207
         LHI   R2,0
         J     AAI00208
AAI00207 LHI   R2,1
AAI00208 LTR   R2,R2
         JNE   AAI00209
         NI    3004(R9),254   NOPPS
         J     AAI00210
AAI00209 OI    3004(R9),1   NOPPS
*S53: /*CHECK CONDITION CODES AND SET BITS IN CLAIM OBJECT*/
*S55: do GAPC.CheckConditionCodes();
AAI00210 L     R15,40(R11)   GAPCC011
         BASR  R14,R15
* Check value codes and set claim object bits.
*S59: do GAPC.CheckValueCodes();
         L     R15,44(R11)   GAPCC010
         BASR  R14,R15
*S61: /*LOAD LINE DATA, DATE, HCPCS, MODIFIERS, ETC.*/
*S63: do GAPC.initializeLineItem();
         L     R15,48(R11)   GAPCC073
         BASR  R14,R15
*S66: do GAPC.LoadContractorBypass();
         L     R15,52(R11)   GAPCC074
         BASR  R14,R15
*S68: do GAPC.SetPrimaryComprehensive();
         L     R15,56(R11)   GAPCC079
         BASR  R14,R15
*S70: /*V17.0, ACTIVATED 2016-01-01, NEW LAB SERVICE INITIALIZATION LO
*S71: if( 61 < base->Version ) then {
         L     R3,1868(R9)   VERSION
         CHI   R3,61
         JNH   AAI00211
*S72: do GAPC.initializeLabServices();
         L     R15,60(R11)   GAPCC078
         BASR  R14,R15
*S73: }
*S75: /*SET PROVIDER/BILL TYPE AND CONTROL BITS*/
*S76: do GAPC.SetPBT();
AAI00211 L     R15,64(R11)   GAPCC080
         BASR  R14,R15
* V6.1 some other bill types may want to do edit 46 and not exit
*S79: /*Note that we have to do this here because as soon as we return
*S80: /*OceClm will stop processing for this claim */
*S81: do GAPC.E46();
         L     R15,68(R11)   GAPCC012
         BASR  R14,R15
*S83: /*TEST FOR INVALID BILL TYPE*/
*S84: if( claim->PBT=0 ) then {
         L     R2,2212(R9)   PBT
         LTR   R2,R2
         JNE   AAI00212
*S85: base->OutClm_ClaimFlag:=1;
         MVC   1884(4,R9),0(R11)   1
*S86: { return_code:=Error->RC_BadBillType ; goto exit_now; };
         MVC   3016(4,R9),72(R11)   18
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,76(R11)   V40LJMP
         BASR  R14,R15
         J     AAI00215
*S87: }
*S88: /*TEST FOR BILL TYPE NOT APPROPRIATE FOR OPPS*/
*S89: else if( claim->PBT=1 or claim->PBT=101 ) then {%v8.2 added NOPP
AAI00212 L     R2,2212(R9)   PBT
         CHI   R2,1
         JE    AAI00213
         L     R3,2212(R9)   PBT
         CHI   R3,101
         JNE   AAI00214
*S90: base->OutClm_ClaimFlag:=1;% V1.1
AAI00213 MVC   1884(4,R9),0(R11)   1
*S91: { return_code:=Error->RC_Cc41NaTOB ; goto exit_now; };
         MVC   3016(4,R9),80(R11)   22
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,76(R11)   V40LJMP
         BASR  R14,R15
*S92: }
*S94: /*CHECK THAT THE LINE DATE IS VALID AND DETERMINE VERSION*/
*S95: do GAPC.CheckLineDates();% Check line item dates
AAI00214 EQU   *
AAI00215 L     R15,84(R11)   GAPCC013
         BASR  R14,R15
*S96: if( base->OutClm_ClaimFlag>=1 ) then {
         L     R2,1884(R9)   OUTCLM_CLAIMFLAG
         CHI   R2,1
         JL    AAI00216
*S97: { return_code:=Error->RC_BadLineDate ; goto exit_now; };% V2.0
         MVC   3016(4,R9),88(R11)   16
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,76(R11)   V40LJMP
         BASR  R14,R15
*S98: }
*S100: do GAPC.MakeDayArray();% Subdivide line items into separate day
AAI00216 L     R15,92(R11)   GAPCC085
         BASR  R14,R15
*S101: do GAPC.MakeWeekArray();
         L     R15,96(R11)   GAPCC086
         BASR  R14,R15
*S103: if( base->control->DxProcEdits2 ) then {
         TM    1970(R9),8   DXPROCEDITS2
         JE    AAI00217
*S104: do GAPC.E53();
         L     R15,100(R11)   GAPCC035
         BASR  R14,R15
*S105: }
*S107: if( base->control->ApcReturnBuf ) then {
AAI00217 TM    1969(R9),64   APCRETURNBUF
         JE    AAI00218
*S108: do GAPC.FillApcBuffer();% Fill the APC return buffer (really sh
         L     R15,104(R11)   GAPCC090
         BASR  R14,R15
*S109: }
*S111: /*2. Main Editing*/
*S112: if( base->control->ProcMod
AAI00218 TM    1969(R9),1   PROCMOD
         JE    AAI00219
         TM    3004(R9),1   NOPPS
         JNE   AAI00219
*S113: and not claim->Bits->Nopps ) then {/*v8.3 added guard to preven
*S117: do GAPC.CheckInpatient();% V3.0 retro
         L     R15,108(R11)   GAPCC092
         BASR  R14,R15
*S118: }
* V21.2 Hoisted the edit 35 logic here to prent edit 27 from being pro
*S120: if (not claim->Bits->Nopps and base->control->MhEdits and base-
AAI00219 TM    3004(R9),1   NOPPS
         JNE   AAI00220
         TM    1969(R9),128   MHEDITS
         JE    AAI00220
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,550(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00220
*S121: do GAPC.Edit35Logic();
         L     R15,116(R11)   GAPCC045
         BASR  R14,R15
*S122: }
*S123: if(base->control->ApcEdits) then {
AAI00220 TM    1968(R9),32   APCEDITS
         JE    AAI00221
*S124: do GAPC.CheckIncidental();% V3.0 retro
         L     R15,120(R11)   GAPCC014
         BASR  R14,R15
*S125: }
* Here we only need to check the bill types (in opps) as there are no
* that are not covered just by the bill type.
*S130: if( base->Version >= 71
AAI00221 L     R2,1868(R9)   VERSION
         CHI   R2,71
         JL    AAI00229
         TM    3004(R9),1   NOPPS
         JE    AAI00225
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,552(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00224
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,554(R11)   78
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAI00224
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,556(R11)   83
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00224
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,558(R11)   84
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00224
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,560(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00224
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,562(R11)   89
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00224
         TM    3000(R9),32   HASCC41
         JNE   AAI00223
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,564(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00222
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,550(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAI00223
AAI00222 J     AAI00224
AAI00223 J     AAI00225
AAI00224 J     AAI00228
AAI00225 TM    3004(R9),1   NOPPS
         JNE   AAI00227
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,566(R11)   75
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,568(R11)   22
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,570(R11)   23
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,572(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,574(R11)   72
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,576(R11)   74
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,578(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00226
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,580(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00227
AAI00226 J     AAI00228
AAI00227 J     AAI00229
*S131: and (
*S132: ( claim->Bits->Nopps
*S133: and (
*S134: base->BillType = "13"
*S135: or base->BillType = "78"
*S136: or base->BillType = "83"
*S137: or base->BillType = "84"
*S138: or base->BillType = "85"
*S139: or base->BillType = "89"
*S140: or ( not claim->Bits->HasCc41
*S141: and ( base->BillType = "12" or base->BillType = "14" )
*S142: )
*S143: )
*S144: )
*S145: or ( not claim->Bits->Nopps
*S146: and (
*S147: base->BillType = "75"
*S148: or base->BillType = "22"
*S149: or base->BillType = "23"
*S150: or base->BillType = "32"
*S151: or base->BillType = "72"
*S152: or base->BillType = "74"
*S153: or base->BillType = "81"
*S154: or base->BillType = "82"
*S155: )
*S156: )
*S157: ) ) then {
*S158: do GAPC.AddonCodePairingEdits();
AAI00228 L     R15,124(R11)   GAPCC041
         BASR  R14,R15
*S159: do GAPC.DrugAddonCodePairingEdits();
         L     R15,128(R11)   GAPCC042
         BASR  R14,R15
*S160: }
* DON'T APPLY EDITS OR PERFORM SPECIAL GROUPING IF THE ENTIRE CLAIM HA
*S167: if( not claim->Bits->IgnoreClaim ) then {% V3.0 retro
AAI00229 TM    3004(R9),64   IGNORECLAIM
         JNE   AAI00293
*S169: if( not claim->Bits->Nopps
         TM    3004(R9),1   NOPPS
         JNE   AAI00231
         TM    1969(R9),64   APCRETURNBUF
         JE    AAI00231
*S170: and base->control->ApcReturnBuf ) then {
*S171: do GAPC.TherapyAssignment();%v7.0, eff. 1/1/06 de-assign paymen
         L     R15,132(R11)   GAPCC059
         BASR  R14,R15
* V17.0 ACP LOGIC
* V18.0 ACP LOGIC NOW SPANS CLAIM
* V18.1, CHANGED BACK TO DAY SCOPE
*S176: if( 61 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAI00230
*S177: do GAPC.AdvancedCarePlanning();
         L     R15,136(R11)   GAPCC060
         BASR  R14,R15
*S178: }
*S180: }
*S183: if (base->BillType="77") then {
AAI00230 EQU   *
AAI00231 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,582(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00234
*V20.2 Bill type 770 is now applicable to edit 6. We want to check thi
* edit 6 processing also includes other editing that is not applicable
*S186: if (base->FullBillType = "770") then {
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,584(R11)   770
         ST    R14,64(R13)
         MVC   70(2,R13),546(R11)   3
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAI00232
*S187: do GAPC.CheckFQHC770Edit006();
         L     R15,140(R11)   GAPCC004
         BASR  R14,R15
*S188: }
* V15.3.0, EFFECTIVE 2014-10-01, FQHC LOGIC
*S190: if( 56 < base->Version and not claim->Bits->HasCc65) then {
AAI00232 L     R2,1868(R9)   VERSION
         CHI   R2,56
         JNH   AAI00233
         TM    3000(R9),1   HASCC65
         JNE   AAI00233
*S191: do GAPC.CheckFQHC();
         L     R15,144(R11)   GAPCC005
         BASR  R14,R15
*S192: }
*S193: }
* V17.1.0, EFFECTIVE 2016-04-01, RHC E6 and E91 LOGIC (BORROWED FROM F
*S196: if( 62 < base->Version
AAI00233 EQU   *
AAI00234 L     R2,1868(R9)   VERSION
         CHI   R2,62
         JNH   AAI00235
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,587(R11)   71
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAI00235
*S197: and base->BillType="71" ) then {
*S198: do GAPC.E91();
         L     R15,148(R11)   GAPCC002
         BASR  R14,R15
*S199: do GAPC.RHCModifierEdits();%V19.1
         L     R15,152(R11)   GAPCC006
         BASR  R14,R15
*S200: }
*S203: if( base->control->AgeSexEdits ) then {
AAI00235 TM    1968(R9),16   AGESEXEDITS
         JE    AAI00236
*S204: do GAPC.CheckAgeSex();% Check Age and Sex on Claim
         L     R15,156(R11)   GAPCC016
         BASR  R14,R15
*S205: }
*S207: if( base->control->DxProcEdits ) then {
AAI00236 TM    1968(R9),128   DXPROCEDITS
         JE    AAI00237
*S208: do GAPC.CheckDiagnoses();% Check Diagnosis and look for Maligna
         L     R15,160(R11)   GAPCC017
         BASR  R14,R15
*S209: }
*S211: if( base->control->RevEdits ) then {/*v7.3 new rev edits2 colum
AAI00237 TM    1969(R9),32   REVEDITS
         JE    AAI00238
*S212: do GAPC.RevenueEdits();% Mark lines with bad revenue codes
         L     R15,164(R11)   GAPCC018
         BASR  R14,R15
*S213: }
*S215: if( 61 < base->Version
AAI00238 L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAI00239
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,589(R11)   43
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00239
*S216: and base->BillType<>"43" ) then {
*S217: do GAPC.CheckBiosimilars();
         L     R15,168(R11)   GAPCC019
         BASR  R14,R15
*S218: }
*S220: /*v7.3 new dxproc2 flag for subset of edits-proc based as drive
*S221: if( base->control->DxProcEdits2
AAI00239 TM    1970(R9),8   DXPROCEDITS2
         JNE   AAI00240
         TM    1969(R9),4   HCPC
         JNE   AAI00240
         TM    1969(R9),2   NONMCARE
         JNE   AAI00240
         TM    1969(R9),1   PROCMOD
         JE    AAI00247
*S222: or base->control->Hcpc
*S223: or base->control->NonMcare
*S224: or base->control->ProcMod ) then {% V2.2
*S226: do GAPC.CheckProcedures();% Check Procedures
AAI00240 L     R15,172(R11)   GAPCC020
         BASR  R14,R15
*S228: if( 61 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAI00242
*S229: do GAPC.CorneaTransplant();% V17.0
         L     R15,176(R11)   GAPCC021
         BASR  R14,R15
*S231: if( 65 < base->Version ) then {
         L     R3,1868(R9)   VERSION
         CHI   R3,65
         JNH   AAI00241
*S232: do GAPC.AllogeneicTransplant();% V18.0
         L     R15,180(R11)   GAPCC022
         BASR  R14,R15
*S233: }
*S241: }
*S243: if( base->control->ProcMod
AAI00241 EQU   *
AAI00242 TM    1969(R9),1   PROCMOD
         JE    AAI00243
         TM    3004(R9),1   NOPPS
         JNE   AAI00243
*S244: and not claim->Bits->Nopps ) then {% V2.2
*S245: do GAPC.DoBloodLogic();% v6.2; v8.2 exclude from non-opps
         L     R15,184(R11)   GAPCC093
         BASR  R14,R15
*S246: }
*S248: /*V13.0.0, EFFECTIVE 2012-01-01, GENERIC FUNCTION TO TEST FOR S
*S249: /*V15.0.0 EFFECTIVE 2014-01-01, DEACTIVATED */
*S251: if( 45 < base->Version
AAI00243 L     R2,1868(R9)   VERSION
         CHI   R2,45
         JNH   AAI00246
         L     R3,1868(R9)   VERSION
         CHI   R3,54
         JNL   AAI00246
*S252: and base->Version < 54 ) then {
*S253: if( 47 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,47
         JNH   AAI00244
*S254: do GAPC.CheckCodeDependency( "0308T", "C1840", Edit->DependentC
         LA    R14,72(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,591(R11)   0308T
         ST    R14,64(R13)
         MVC   70(2,R13),548(R11)   5
         L     R15,188(R11)   DMNSCPY
         BASR  R14,R15
         LA    R14,72(R12)
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,596(R11)   C1840
         ST    R14,64(R13)
         MVC   70(2,R13),548(R11)   5
         L     R15,188(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,84(R12)
         ST    R14,68(R13)
         MVC   96(4,R12),192(R11)   85
         LA    R14,96(R12)
         ST    R14,72(R13)
         L     R15,196(R11)   GAPCC025
         BASR  R14,R15
         J     AAI00245
*S255: }
*S256: else do GAPC.CheckCodeDependency( "C9732", "C1840", Edit->Depen
AAI00244 LA    R14,72(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,601(R11)   C9732
         ST    R14,64(R13)
         MVC   70(2,R13),548(R11)   5
         L     R15,188(R11)   DMNSCPY
         BASR  R14,R15
         LA    R14,72(R12)
         ST    R14,64(R13)
         AHI   R13,72
         LA    R14,84(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,596(R11)   C1840
         ST    R14,64(R13)
         MVC   70(2,R13),548(R11)   5
         L     R15,188(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-72
         LA    R14,84(R12)
         ST    R14,68(R13)
         MVC   96(4,R12),192(R11)   85
         LA    R14,96(R12)
         ST    R14,72(R13)
         L     R15,196(R11)   GAPCC025
         BASR  R14,R15
*S257: }
*S259: }
*S261: if( base->control->ModifierEdits ) then {
AAI00245 EQU   *
AAI00246 EQU   *
AAI00247 TM    1968(R9),4   MODIFIEREDITS
         JE    AAI00248
*S262: do GAPC.CheckModifiers();% Check modifiers
         L     R15,200(R11)   GAPCC028
         BASR  R14,R15
*S263: }
* Note: We need to exclude certain bill types here as the modifier edi
* is required for edit 22 however we do not want processing for termin
* procedure on these particular bill types.
*S268: if (base->control->ModifierEdits and claim->Bits->IsAuxModEditA
AAI00248 TM    1968(R9),4   MODIFIEREDITS
         JE    AAI00250
         TM    3006(R9),16   ISAUXMODEDITAPP
         JE    AAI00250
* v11.0, eff 1/1/10 NOpps BT 85x has special logic applying E74
*S270: /*other bill types remain as logic defined inside CheckTerminat
*S271: /*v11.2, make eff 1/1/08*/
*S272: if( claim->Bits->Nopps
         TM    3004(R9),1   NOPPS
         JE    AAI00249
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,560(R11)   85
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00249
*S273: and base->BillType="85" ) then {
*S274: do GAPC.E74RollUp();
         L     R15,204(R11)   GAPCC070
         BASR  R14,R15
*S275: }
*S276: do GAPC.CheckTerminated();% Terminated procedure edits and E74
AAI00249 L     R15,208(R11)   GAPCC030
         BASR  R14,R15
*S277: }
* The CC 41 Pbt Bit flag has higher priority over NCCI edits so we nee
* explicitly check bill 131 with CC 41 here.
*S281: if( claim->Bits->HadComprehensive
AAI00250 TM    3002(R9),16   HADCOMPREHENSIVE
         JE    AAI00256
         TM    3002(R9),8   HADCOMPONENT
         JE    AAI00256
         TM    1968(R9),2   NCCIEDITS
         JNE   AAI00255
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,552(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00251
         TM    3000(R9),32   HASCC41
         JNE   AAI00255
AAI00251 TM    3004(R9),1   NOPPS
         JNE   AAI00254
         TM    3000(R9),128   HASCC07
         JE    AAI00254
         TM    3003(R9),16   HASANTIGEN
         JNE   AAI00252
         TM    3003(R9),4   HASCAST
         JNE   AAI00252
         TM    3003(R9),8   HASSPLINT
         JE    AAI00254
AAI00252 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,568(R11)   22
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,570(R11)   23
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,572(R11)   32
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,574(R11)   72
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,576(R11)   74
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,566(R11)   75
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,578(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00253
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,580(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00254
AAI00253 J     AAI00255
AAI00254 J     AAI00256
*S282: and claim->Bits->HadComponent
*S283: and ( base->control->NcciEdits
*S284: or ( base->BillType = "13" and claim->Bits->HasCc41 )
*S285: or ( not claim->Bits->Nopps
*S286: and (
*(
*S288: claim->Bits->HasCc07
*S289: and ( claim->Bits->HasAntigen or claim->Bits->HasCast or claim-
*)
*S291: and (
*S292: base->BillType = "22"
*S293: or base->BillType = "23"
*S294: or base->BillType = "32"
*S295: or base->BillType = "72"
*S296: or base->BillType = "74"
*S297: or base->BillType = "75"
*S298: or base->BillType = "81"
*S299: or base->BillType = "82"
*S300: )
*S301: )
*S302: )
*S303: ) ) then {
*S304: do GAPC.CheckCompComp();% Comprehensive-Component
AAI00255 L     R15,212(R11)   GAPCC031
         BASR  R14,R15
*S305: }
*S307: /*v7.0 moved all editing above Observation; moved up again 8.2
*S308: if( base->control->Observation ) then {
AAI00256 TM    1970(R9),64   OBSERVATION
         JE    AAI00257
*S309: do GAPC.DoOthObsPbtEdits();% V5.2
         L     R15,216(R11)   GAPCC034
         BASR  R14,R15
*S310: }
*S312: if( base->control->OppsProc ) then {
AAI00257 TM    1970(R9),32   OPPSPROC
         JE    AAI00258
*S313: do GAPC.OppsProc();% V3.1
         L     R15,220(R11)   GAPCC094
         BASR  R14,R15
*S314: }
*S316: /*DME service can only billed to DMERC Edit - */
*S317: /*v6.1 ...and related edits from App. F*/
* V18.0.0, EFFECTIVE 2017-01-01, HAD TO MOVE BELOW SECOND PRIMARY COMP
* FROM OCCURRING WHERE A Q1, Q2, OR Q3 RESOLVES TO A J1 COMPREHENSIVE
* V16.0.0, EFFECTIVE 2015-01-01, EXCLUDING BILL TYPES 81 AND 82 RETROA
*S321: if( base->Version < 66
AAI00258 L     R2,1868(R9)   VERSION
         CHI   R2,66
         JNL   AAI00261
         TM    1970(R9),16   DME
         JE    AAI00261
         L     R2,1868(R9)   VERSION
         CHI   R2,53
         JNH   AAI00260
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,578(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00259
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,580(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAI00260
AAI00259 J     AAI00261
*S322: and base->control->Dme
*S323: and not ( 53 < base->Version and ( base->BillType="81" or base-
*S324: do GAPC.DMEProc();
AAI00260 L     R15,224(R11)   GAPCC095
         BASR  R14,R15
*S325: }
*S326: /*v7.0 moved all editing above Observation*/
*S328: /*3. Special Grouping/Editing*/
* v8.2 NOPPS exclude OPPS specific Grouping/Editing
*S330: if( not claim->Bits->Nopps ) then {
AAI00261 TM    3004(R9),1   NOPPS
         JNE   AAI00271
* DON'T DO PH OR MH IF ANY DAY WAS DENIED WITH E18
*S333: /*v7.1T differentiated day denial for this test*/
*S334: if( not claim->Bits->HasDayDeniedE1849 ) then {
         TM    3004(R9),16   HASDAYDENIEDE1849
         JNE   AAI00265
* Partial Hospitalization and Mental Health
*S336: if( base->control->PhEdits ) then {
         TM    1968(R9),1   PHEDITS
         JE    AAI00263
*S337: /*No need to go back for any standard assignments like in other
*S338:      PHP is all self contained to always set the single PHP APC
*S339: do GAPC.PartialHospitalization();
         L     R15,228(R11)   GAPCC044
         BASR  R14,R15
*S341: if(base->Version >= 69) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,69
         JL    AAI00262
*S342: do GAPC.PhpServiceHourEdits();
         L     R15,232(R11)   GAPCC043
         BASR  R14,R15
*S343: }
*S345: }
* V10.1 eff 4/1/2006 do not run MH logic on 14x
*S348: if( base->control->MhEdits
AAI00262 EQU   *
AAI00263 TM    1969(R9),128   MHEDITS
         JE    AAI00264
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,550(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00264
*S349: and base->BillType<>"14" ) then {
*S350: do GAPC.MentalHealthLogic();
         L     R15,236(R11)   GAPCC046
         BASR  R14,R15
*S351: /*eff 1/1/08, v9.0 go back and set SIs for the associated MH Q
*S352:      that should get standard assignments - due to late logic r
*S353: do GAPC.SetQ_SI( 1 );
         MVC   96(4,R12),0(R11)   1
         LA    R14,96(R12)
         ST    R14,64(R13)
         L     R15,240(R11)   GAPCC068
         BASR  R14,R15
*S354: }
*S356: }
*v8.0 eff 1/1/07 run conditional apc logic
*moved up in processing order v10.0, eff 1/1/09
*S360: if( base->control->ApcReturnBuf ) then {
AAI00264 EQU   *
AAI00265 TM    1969(R9),64   APCRETURNBUF
         JE    AAI00268
*S362: if( 65 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAI00266
*S363: do GAPC.ConditionalPackaging();
         L     R15,244(R11)   GAPCC061
         BASR  R14,R15
*S364: do GAPC.CriticalCarePackaging2();
         L     R15,248(R11)   GAPCC063
         BASR  R14,R15
         J     AAI00267
*S365: }
*S366: else {
*S367: do GAPC.ConditionalAPCs();
AAI00266 L     R15,252(R11)   GAPCC062
         BASR  R14,R15
* V12.0, EFFECTIVE 2011-01-01
* V17.0 EFFECTIVE 2016-01-01 MOVED HERE. CRITICAL CARE IS AN EXTENSION
*S370: do GAPC.CriticalCarePackaging();
         L     R15,256(R11)   GAPCC064
         BASR  R14,R15
*S371: }
*S373: }
*S375: /*do lookup on composites to set conditions - do this here to c
*S376: do GAPC.lookupComposites();
AAI00267 EQU   *
AAI00268 L     R15,260(R11)   GAPCC065
         BASR  R14,R15
*S378: if( base->control->ApcReturnBuf ) then {
         TM    1969(R9),64   APCRETURNBUF
         JE    AAI00269
*v9.0 eff 1/1/08 run Composite1 LDR logic
*S380: do GAPC.Composite1APC();
         L     R15,264(R11)   GAPCC066
         BASR  R14,R15
*S381: /*eff 1/1/08, v9.0 go back and set SIs for the associated Simpl
*S382:     that should get standard assignments - due to late logic re
*S383: do GAPC.SetQ_SI( 2 );
         MVC   96(4,R12),268(R11)   2
         LA    R14,96(R12)
         ST    R14,64(R13)
         L     R15,240(R11)   GAPCC068
         BASR  R14,R15
*v10.0 eff 1/1/09 run Composite3 Imaging logic
*S385: do GAPC.Composite3APC();
         L     R15,272(R11)   GAPCC067
         BASR  R14,R15
*S386: /*go back and set SIs for the associated Composite Q lines */
*S387: do GAPC.SetQ_SI( 4 );
         MVC   96(4,R12),276(R11)   4
         LA    R14,96(R12)
         ST    R14,64(R13)
         L     R15,240(R11)   GAPCC068
         BASR  R14,R15
*S388: }
* V18.0 SOME CONDITIONAL AND COMPOSITE APCS BECOME CAPCS... Q1/Q3 -> J
* THIS HAS THE SIDE EFFECT THAT SOME EDITING FOR THESE COMPREHENSIVE C
*S392: if( base->control->ApcReturnBuf ) then {
AAI00269 TM    1969(R9),64   APCRETURNBUF
         JE    AAI00270
*S393: do GAPC.SetPrimaryComprehensive();
         L     R15,56(R11)   GAPCC079
         BASR  R14,R15
*S394: }
*S396: }
* V18.0.0, EFFECTIVE 2017-01-01, HAD TO MOVE BELOW SECOND PRIMARY COMP
* FROM OCCURRING WHERE A Q1, Q2, OR Q3 RESOLVES TO A J1 COMPREHENSIVE
* V16.0.0, EFFECTIVE 2015-01-01, EXCLUDING BILL TYPES 81 AND 82 RETROA
*S401: if( 65 < base->Version
AAI00270 EQU   *
AAI00271 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAI00274
         TM    1970(R9),16   DME
         JE    AAI00274
         L     R2,1868(R9)   VERSION
         CHI   R2,53
         JNH   AAI00273
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,578(R11)   81
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00272
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,580(R11)   82
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAI00273
AAI00272 J     AAI00274
*S402: and base->control->Dme
*S403: and not ( 53 < base->Version and ( base->BillType="81" or base-
*S404: do GAPC.DMEProc();
AAI00273 L     R15,224(R11)   GAPCC095
         BASR  R14,R15
*S405: }
*S407: if( not claim->Bits->Nopps ) then {
AAI00274 TM    3004(R9),1   NOPPS
         JNE   AAI00282
*S409: if( base->control->Observation ) then {
         TM    1970(R9),64   OBSERVATION
         JE    AAI00280
*S410: if( 61 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAI00278
*S411: if( base->BillType="13"
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,552(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAI00276
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,564(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAI00275
         TM    3001(R9),16   HASCCW2
         JNE   AAI00276
AAI00275 J     AAI00277
*S412: or ( base->BillType="12" and claim->Bits->HasCcW2 ) ) then {
* V17.1 MOVED HERE, MUST COME AFTER COMPOSITE LOGIC (WHERE SI=T MIGHT
* AND BEFORE SI=V LOGIC. ONE CAVEAT: CRITICAL CARE J2 CODE GETS SI=S,
*S415: do GAPC.ComprehensiveObservation();
AAI00276 L     R15,280(R11)   GAPCC056
         BASR  R14,R15
*S416: }
*S417: do GAPC.ObservationVisit4();
AAI00277 L     R15,284(R11)   GAPCC058
         BASR  R14,R15
         J     AAI00279
*S418: }
*S419: else{
*S420: do GAPC.ObservationVisit3();%V9.0
AAI00278 L     R15,288(R11)   GAPCC057
         BASR  R14,R15
*S421: /*eff 1/1/08, v9.0 go back and set SIs for the associated EAM C
*S422:      that should get standard assignments - due to late logic r
*S423: do GAPC.SetQ_SI( 3 );
         MVC   96(4,R12),292(R11)   3
         LA    R14,96(R12)
         ST    R14,64(R13)
         L     R15,240(R11)   GAPCC068
         BASR  R14,R15
*S424: }
*S425: }
* V13.1.0, EFFECTIVE 2012-04-01
* V15.1.0, EFFECTIVE 2014-01-01, DEACTIVATED, REPLACED BY SkinSubstitu
*S429: if( 46 < base->Version
AAI00279 EQU   *
AAI00280 L     R2,1868(R9)   VERSION
         CHI   R2,46
         JNH   AAI00281
         L     R3,1868(R9)   VERSION
         CHI   R3,54
         JNL   AAI00281
*S430: and base->Version < 54 ) then {
*S431: do GAPC.SkinSubstituteLogic();
         L     R15,296(R11)   GAPCC026
         BASR  R14,R15
*S432: }
*S434: }/*not non-opps (opps only special grouping logic)*/
*S436: /*3b. SI related Editing goes here, after special grouping and
*S437: /*moved SI related edit calls below eff 1/1/08, v9.0*/
*S438: if( base->control->ProcMod ) then {
AAI00281 EQU   *
AAI00282 TM    1969(R9),1   PROCMOD
         JE    AAI00284
*S439: do GAPC.ImplantationEdits();
         L     R15,300(R11)   GAPCC023
         BASR  R14,R15
*S440: do GAPC.CheckSPNP();
         L     R15,304(R11)   GAPCC024
         BASR  R14,R15
*S441: /*V15.1.0, EFFECTIVE 2014-01-01, 2-TIER PRICING SYSTEM FOR SKIN
*S442: if( 53 < base->Version ) then {
         L     R2,1868(R9)   VERSION
         CHI   R2,53
         JNH   AAI00283
*S443: do GAPC.SkinSubstituteLogic2();
         L     R15,308(R11)   GAPCC027
         BASR  R14,R15
*S444: }
*S445: }
* Note: We need to exclude certain bill types here as the modifier edi
* is required for edit 22 however we do not want bilateral processing
* these particular bill types.
*S450: if (base->control->ModifierEdits and claim->Bits->IsAuxModEditA
AAI00283 EQU   *
AAI00284 TM    1968(R9),4   MODIFIEREDITS
         JE    AAI00285
         TM    3006(R9),16   ISAUXMODEDITAPP
         JE    AAI00285
*S451: do GAPC.CheckBilaterals();% Bilateral procedure edits
         L     R15,312(R11)   GAPCC029
         BASR  R14,R15
*S452: }
* V17.1 MOVED ABOVE SI=V EDITING LOGIC TO PREVENT SI=V EDITTING ON COM
*S455: if( 57 < base->Version
AAI00285 L     R2,1868(R9)   VERSION
         CHI   R2,57
         JNH   AAI00288
         TM    3004(R9),1   NOPPS
         JNE   AAI00288
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,552(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAI00287
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,564(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAI00286
         TM    3001(R9),16   HASCCW2
         JNE   AAI00287
AAI00286 J     AAI00288
*S456: and not claim->Bits->Nopps
*S457: and ( base->BillType="13"
*S458: or ( base->BillType="12" and claim->Bits->HasCcW2 )
*S459: ) ) then {
*S460: do GAPC.CheckComprehensiveApc();
AAI00287 L     R15,316(R11)   GAPCC015
         BASR  R14,R15
*S461: }
*S463: if( base->control->ApcEdits ) then {
AAI00288 TM    1968(R9),32   APCEDITS
         JE    AAI00290
*S464: do GAPC.CheckMedSurgSameDay();% Same day E&M and surgery SI=V L
         L     R15,320(R11)   GAPCC032
         BASR  R14,R15
*S465: if( not claim->Bits->HasCcG0 ) then {
         TM    3001(R9),128   HASCCG0
         JNE   AAI00289
*S466: do GAPC.CheckMultMedSameDay();% Same day medical services - has
         L     R15,324(R11)   GAPCC033
         BASR  R14,R15
*S467: }
*S468: }
* V17.0 EFFECTIVE 2016-01-01, DEVICE OFFSET CALCULATION
* V17.1 RETROACTIVE 2016-01-01, TERMINATION, RADIOPHARM, AND PT DRUG O
* V17.2 ADDED EDITS AND MOVED OFFSET CALCULATIONS HERE
* V18.0 TERMINATED REIMPLEMENTED, LOOKUP PERFORMED BY HCPCS, PREVIOUSL
*S474: if( not claim->Bits->Nopps
AAI00289 EQU   *
AAI00290 TM    3004(R9),1   NOPPS
         JNE   AAI00291
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAI00291
*S475: and 61 < base->Version ) then {
*S476: do GAPC.DeviceOffset();% SLOT QN, QO
         L     R15,328(R11)   GAPCC104
         BASR  R14,R15
*S477: do GAPC.Terminated();% SLOT QQ, QU
         L     R15,332(R11)   GAPCC105
         BASR  R14,R15
*S478: do GAPC.RadioPharmaceuticalOffset();% SLOT QR RADIOPHARM MUST C
         L     R15,336(R11)   GAPCC107
         BASR  R14,R15
*S479: do GAPC.DrugOffset();% SLOT QR, QS, QT
         L     R15,340(R11)   GAPCC108
         BASR  R14,R15
*S480: }
*S482: /*V13.0.0, EFFECTIVE 2012-01-01. NOTE: MUST COME BEFORE EDIT 47
*S483:    * EDIT 47 INCLUDES VALID LINES THAT GET EXCLUDED BY EDIT 903
*S485: /*v8.0 moved Edit 47 after all edits and APC/SI assignments*/
*S489: if( base->control->ProcMod ) then {
AAI00291 TM    1969(R9),1   PROCMOD
         JE    AAI00292
*S490: do GAPC.CheckServPayable();%v2.2 Edit 47
         L     R15,344(R11)   GAPCC047
         BASR  R14,R15
*S491: }
*S493: }
*S495: /*4. Payment buffer logic*/
* v8.2 NOPPS exclude OPPS specific logic
*S497: if( not claim->Bits->Nopps ) then {
AAI00292 EQU   *
AAI00293 TM    3004(R9),1   NOPPS
         JNE   AAI00297
*S499: /*v8.0 swapped discounting and PAF setting for compatible PAF7
*v7.3 - we always want tricare to set the inactive APC flags - reset t
*S502: if( base->control->ApcReturnBuf ) then
         TM    1969(R9),64   APCRETURNBUF
         JE    AAI00294
*S504: do GAPC.SetApcFlags();% Set Payment Adjustment Flag
         L     R15,348(R11)   GAPCC082
         BASR  R14,R15
*S506: if( base->control->ApcReturnBuf ) then {
AAI00294 TM    1969(R9),64   APCRETURNBUF
         JE    AAI00296
*S507: if( claim->Bits->QualifiesForDiscount ) then {
         TM    3003(R9),32   QUALIFIESFORDISCOUNT
         JE    AAI00295
*S508: do GAPC.SetDiscounting();% Set discounting factors
         L     R15,352(R11)   GAPCC083
         BASR  R14,R15
*S509: }
*S510: do GAPC.PackageTokenCharges();% v5.2
AAI00295 L     R15,356(R11)   GAPCC084
         BASR  R14,R15
*S511: }
*S513: }
* Set Payment Method Flag (in medicare.f|tricare.f)
*S516: do GAPC.SetPaymentMethodFlags();
AAI00296 EQU   *
AAI00297 L     R15,360(R11)   GAPCC098
         BASR  R14,R15
* V21.2 For FQHC claims some PMF flags are overridden. Effective Janua
*S520: if (base->BillType = "77"
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,582(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAI00298
         TM    3000(R9),1   HASCC65
         JNE   AAI00298
*S521: and not claim->Bits->HasCc65) then {
*S522: do GAPC.FQHCPaymentMethodFlagOverride();
         L     R15,364(R11)   GAPCC007
         BASR  R14,R15
*S523: }
* V21.2 RO Model
*S526: if(base->Version >= 80
AAI00298 L     R2,1868(R9)   VERSION
         CHI   R2,80
         JL    AAI00299
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,552(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),544(R11)   2
         L     R15,112(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAI00299
         TM    3000(R9),32   HASCC41
         JNE   AAI00299
*S527: and base->BillType = "13"
*S528: and not claim->Bits->HasCc41) then {
*S529: do GAPC.ROModelPaymentMethodFlagOverride();
         L     R15,368(R11)   GAPCC099
         BASR  R14,R15
*S530: }
* EDIT CHECKING COMPLETE, SET FINAL DISPOSITIONS
* V18.0, MOVED HERE BECAUSE E101 IS SET DURING THE PAYMENT METHOD EVAL
*S536: do GAPC.SetClaimDisposition();
AAI00299 L     R15,372(R11)   GAPCC081
         BASR  R14,R15
* Set the line level overrides that need to come last due to processin
*S540: do GAPC.SetLineItemContractorOverrides();
         L     R15,376(R11)   GAPCC048
         BASR  R14,R15
*S543: return 0;
         L     R2,60(R12)
         XC    0(4,R2),0(R2)
         J     AAI00301
*S545: /* exit comes here to clean up before quitting */
*S546: exit_label:
* ABORTING, SET FINAL DISPOSITIONS
*S548: do GAPC.SetClaimDisposition();
AAI00300 L     R15,372(R11)   GAPCC081
         BASR  R14,R15
*S558: return return_code;
         L     R2,60(R12)
         L     R3,3016(R9)   RETURN_CODE
         ST    R3,0(R2)
AAI00301 LA    R5,64(R12)
         ST    R5,60(R13)
         L     R15,380(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAJ
**************************
*    GAPCC102
**************************
GAPCC102 CSECT
GAPCC102 AMODE ANY
GAPCC102 RMODE ANY
*XREF - GAPCC102 GAPC.ClearOffsetFlags
*  R11 + 0000 Literals        (0 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         XC    64(8,R12),64(R12)
*S10: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAJ00106 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAJ00115
*S11: if( day->offsetTotal ) then {
         L     R2,64(R12)   DAY
         L     R15,40(R2)   OFFSETTOTAL
         LTR   R15,R15
         JE    AAJ00107
*S12: reset day->offsetTotal;
         L     R3,64(R12)   DAY
         XC    40(4,R3),40(R3)
*S13: }
*S14: if( day->Bits->HasOffset ) then {
AAJ00107 L     R2,64(R12)   DAY
         TM    627(R2),128   HASOFFSET
         JE    AAJ00108
*S15: day->Bits->HasOffset:=0;
         L     R3,64(R12)   DAY
         NI    627(R3),127   HASOFFSET
*S16: }
*S17: loop( line:=day->firstDaysItems; line; line:=line->nextSameDay )
AAJ00108 L     R2,64(R12)   DAY
         MVC   68(4,R12),8(R2)   FIRSTDAYSITEMS
AAJ00109 L     R15,68(R12)   LINE
         LTR   R15,R15
         JE    AAJ00113
*S18: if( line->Bits->PassThroughConsumed ) then {
         L     R2,68(R12)   LINE
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JE    AAJ00110
*S19: line->Bits->PassThroughConsumed:=0;
         L     R3,68(R12)   LINE
         NI    1085(R3),239   PASSTHROUGHCONSUMED
*S20: }
*S21: if( line->Bits->ProcedureConsumed ) then {
AAJ00110 L     R2,68(R12)   LINE
         TM    1085(R2),8   PROCEDURECONSUMED
         JE    AAJ00111
*S22: line->Bits->ProcedureConsumed:=0;
         L     R3,68(R12)   LINE
         NI    1085(R3),247   PROCEDURECONSUMED
AAJ00111 EQU   *
AAJ00112 L     R2,68(R12)   LINE
         MVC   68(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00109
AAJ00113 EQU   *
AAJ00114 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAJ00106
AAJ00115 EQU   *
AAJ00116 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC103
**************************
GAPCC103 CSECT
GAPCC103 AMODE ANY
GAPCC103 RMODE ANY
*XREF - GAPCC103 GAPC.GetLookupApc
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> String len 12 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R12 + 0068 Local pool      (8 bytes)
*  R12 + 0076 Locals & temps  (12 bytes)
*        0076(R12)-> String (apc)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAJ00203
         DC    A(DMNSLOG) @00000
         DC    A(DMNSCMP) @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNFREE) @00012
         DC    H'5'  0 5 @00016
         DC    CL5'00000' @00018
AAJ00203 XC    68(8,R12),68(R12)
         LA    R3,68(R12)
         MVC   72(4,R12),44(R10)
         ST    R3,44(R10)
         XC    76(8,R12),76(R12)
         ST    R3,84(R12)
* IF PAYMENT APC IS ZERO (ASSUMING CODE IS PACKAGED), USE ORIGINAL APC
* IF ORIGINAL APC IS ZERO, LOOKUP WILL NOT BE PERFORMED
*S34: if( line->PaymentApc and line->PaymentApc<>"00000" ) then {
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,512(R3)   PAYMENTAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAJ00206
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JE    AAJ00206
*S35: apc:=line->PaymentApc;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,76(R12)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,512(R3)   PAYMENTAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAJ00208
*S36: }
*S37: else if( line->OriginalAPC and line->OriginalAPC<>"00000" ) then
AAJ00206 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,472(R3)   ORIGINALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAJ00207
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,472(R6)   ORIGINALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JE    AAJ00207
*S38: apc:=line->OriginalAPC;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,76(R12)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,472(R3)   ORIGINALAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S39: }
*S40: return apc;
AAJ00207 EQU   *
AAJ00208 L     R2,60(R12)
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,76(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
AAJ00209 LA    R4,68(R12)
         ST    R4,60(R13)
         L     R15,12(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC104
**************************
GAPCC104 CSECT
GAPCC104 AMODE ANY
GAPCC104 RMODE ANY
*XREF - GAPCC104 GAPC.DeviceOffset
*  R11 + 0000 Literals        (104 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (120 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line1)
*        0080(R12)-> reference to Struct len 1120 (line2)
*        0084(R12)-> reference to Reference len 4 (devices)
*        0088(R12)-> reference to Struct len 32 (device)
*        0092(R12)-> reference to Struct len 24 (procedure)
*        0096(R12)-> reference to Struct len 32 (highestPayingDevice)
*        0100(R12)-> reference to Struct len 24 (highestPayingProcedur
*        0104(R12)-> reference to Struct len 16 (valueCode)
*        0108(R12)-> array [2] of
*                    String (ValueCodes)
*        0132(R12)-> Integer len 4 (i)
*        0136(R12)-> Integer len 4 (j)
*        0140(R12)-> Integer len 4 (rc)
*        0144(R12)-> Integer len 4 (deviceCount)
*        0148(R12)-> Integer len 4 (procedureCount)
*        0152(R12)-> Integer len 4 (valueCodeIndex)
*        0156(R12)-> String (deviceKey)
*        0168(R12)-> String (procedureKey)
*        0180(R12)-> Unknown ()
*        0180(R12)-> Integer len 4 ()
*        0184(R12)-> Integer len 4 ()
*        0188(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 192)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,192  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAJ00303
         DC    AL1(2) @00000
         DC    CL2'QN'
         DC    AL1(2)
         DC    CL2'QO'
         DC    X'0000'
         DC    A(DMNIASS) @00008
         DC    A(GAPCC102) @00012
         DC    A(DMNSCMP) @00016
         DC    F'32' @00020
         DC    A(DMNNEW) @00024
         DC    F'1' @00028
         DC    A(DMNSCPY) @00032
         DC    A(DMNSEL) @00036
         DC    F'5' @00040
         DC    A(DMNSCPYX) @00044
         DC    F'24' @00048
         DC    A(GAPCC113) @00052
         DC    F'105' @00056
         DC    A(GAPCC091) @00060
         DC    F'98' @00064
         DC    A(DMNSLOG) @00068
         DC    F'12' @00072
         DC    F'13' @00076
         DC    A(DMNFREE) @00080
         DC    XL10'200200060C0000000000' @00084
         DC    H'4'  0 4 @00094
         DC    H'1'  0 1 @00096
         DC    H'5'  0 5 @00098
         DC    H'7'  0 7 @00100
AAJ00303 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(44,R12),72(R12)
         ST    R2,116(R12)
         XC    120(8,R12),120(R12)
         ST    R2,128(R12)
         XC    132(32,R12),132(R12)
         ST    R2,164(R12)
         XC    168(8,R12),168(R12)
         ST    R2,176(R12)
         XC    180(12,R12),180(R12)
*S64: ValueCodes:={"QN","QO"};
         LA    R14,84(R11)
         ST    R14,60(R13)
         LA    R14,108(R12)
         ST    R14,64(R13)
         LA    R14,0(R11)
         ST    R14,68(R13)
         L     R15,8(R11)   DMNIASS
         BASR  R14,R15
*message "--------DEVICE OFFSET------------";
*S67: do GAPC.ClearOffsetFlags();
         L     R15,12(R11)   GAPCC102
         BASR  R14,R15
*S68: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAJ00306 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAJ00369
*message "--------NEW DAY------------";
*S71: reset deviceCount;
         XC    144(4,R12),144(R12)
* COUNT UP DISTINCT PASS-THROUGH DEVICES FOR THE DAY OF SERVICE, ACCOU
* LISTING THE SAME PASS-THROUGH DEVICE
*S75: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSameD
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAJ00307 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00314
*S76: if( line1->flags->PassthroughDevice
         L     R2,76(R12)   LINE1
         TM    1097(R2),4   PASSTHROUGHDEVICE
         JE    AAJ00312
         L     R3,76(R12)   LINE1
         TM    1085(R3),16   PASSTHROUGHCONSUMED
         JNE   AAJ00312
         L     R4,76(R12)   LINE1
         TM    1081(R4),64   IGNORELINE
         JNE   AAJ00312
*S77: and not ( line1->Bits->PassThroughConsumed or line1->Bits->Ignor
*S78: line1->Bits->PassThroughConsumed:=1;
         L     R2,76(R12)   LINE1
         OI    1085(R2),16   PASSTHROUGHCONSUMED
*S79: loop( line2:=line1->nextSameDay; line2; line2:=line2->nextSameDa
         L     R3,76(R12)   LINE1
         MVC   80(4,R12),0(R3)   NEXTSAMEDAY
AAJ00308 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAJ00311
*S80: if( line2->Hcpcs = line1->Hcpcs ) then {
         L     R2,80(R12)   LINE2
         L     R3,76(R12)   LINE1
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00309
*S81: line2->Bits->PassThroughConsumed:=1;
         L     R5,80(R12)   LINE2
         OI    1085(R5),16   PASSTHROUGHCONSUMED
AAJ00309 EQU   *
AAJ00310 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00308
*S82: }
*S83: }
*S84: deviceCount+=1;
AAJ00311 LHI   R2,1
         A     R2,144(R12)   DEVICECOUNT
         ST    R2,144(R12)   DEVICECOUNT
AAJ00312 EQU   *
AAJ00313 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00307
*S85: }
*S86: }
* CONTINUE IF THERE IS AT LEAST ONE PASS-THROUGH DEVICE
*S89: if( deviceCount ) then {
AAJ00314 L     R15,144(R12)   DEVICECOUNT
         LTR   R15,R15
         JE    AAJ00367
* INSTANTIATE PASS-THROUGH DEVICE ARRAY AND LENGTH FOR DAY
*S92: day->deviceCount :=deviceCount;
         L     R2,72(R12)   DAY
         L     R3,144(R12)   DEVICECOUNT
         ST    R3,36(R2)   DEVICECOUNT
*S93: day->Devices :=new reference to struct OffsetStruct[deviceCount]
         L     R4,72(R12)   DAY
         LA    R5,64(R12)
         MVC   60(4,R13),144(R12)   DEVICECOUNT
         MVC   64(4,R13),20(R11)   32
         ST    R5,68(R13)
         L     R15,24(R11)   DMNNEW
         BASR  R14,R15
         L     R6,60(R13)
         LR    R7,R6
         L     R8,144(R12)   DEVICECOUNT
AAJ00315 XC    0(28,R7),0(R7)
         ST    R5,28(R7)
         LA    R7,32(R7)
         BRCT  R8,AAJ00315
         ST    R6,32(R4)   DEVICES
* ADD PASS-THROUGH DEVICE, UNITS, AND REFERENCE TO DAY (USED TO CALCUL
*S96: reset deviceCount;
         XC    144(4,R12),144(R12)
*S97: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSameD
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAJ00316 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00323
*S99: if( line1->flags->PassthroughDevice
         L     R2,76(R12)   LINE1
         TM    1097(R2),4   PASSTHROUGHDEVICE
         JE    AAJ00321
         L     R3,76(R12)   LINE1
         TM    1085(R3),16   PASSTHROUGHCONSUMED
         JE    AAJ00321
         L     R2,76(R12)   LINE1
         TM    1081(R2),64   IGNORELINE
         JNE   AAJ00321
*S100: and line1->Bits->PassThroughConsumed
*S101: and not line1->Bits->IgnoreLine ) then {
*S102: day->Devices[deviceCount] :=new struct OffsetStruct;
         L     R2,72(R12)   DAY
         L     R3,32(R2)   DEVICES
         L     R4,144(R12)   DEVICECOUNT
         MHI   R4,4
         AR    R3,R4
         LA    R5,64(R12)
         MVC   60(4,R13),28(R11)   1
         MVC   64(4,R13),20(R11)   32
         ST    R5,68(R13)
         L     R15,24(R11)   DMNNEW
         BASR  R14,R15
         L     R6,60(R13)
         XC    0(28,R6),0(R6)
         ST    R5,28(R6)
         ST    R6,0(R3)   DEVICES
*S103: device :=day->Devices[deviceCount];
         ST    R6,88(R12)   DEVICE
*S104: device->line :=line1;
         L     R7,88(R12)   DEVICE
         MVC   0(4,R7),76(R12)   LINE1
*S105: device->units +=line1->ServiceUnitsPay;
         L     R8,88(R12)   DEVICE
         L     R2,88(R12)   DEVICE
         L     R3,76(R12)   LINE1
         L     R4,16(R2)   UNITS
         A     R4,568(R3)   SERVICEUNITSPAY
         ST    R4,16(R8)   UNITS
*S106: line1->Bits->PassThroughConsumed :=0;
         L     R5,76(R12)   LINE1
         NI    1085(R5),239   PASSTHROUGHCONSUMED
*S107: loop( line2:=line1->nextSameDay; line2; line2:=line2->nextSameD
         L     R6,76(R12)   LINE1
         MVC   80(4,R12),0(R6)   NEXTSAMEDAY
AAJ00317 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAJ00320
*S108: if( line2->Hcpcs = line1->Hcpcs ) then {
         L     R2,80(R12)   LINE2
         L     R3,76(R12)   LINE1
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00318
*S109: device->units +=line2->ServiceUnitsPay;
         L     R5,88(R12)   DEVICE
         L     R6,88(R12)   DEVICE
         L     R7,80(R12)   LINE2
         L     R8,16(R6)   UNITS
         A     R8,568(R7)   SERVICEUNITSPAY
         ST    R8,16(R5)   UNITS
*S110: line2->Bits->PassThroughConsumed :=0;
         L     R2,80(R12)   LINE2
         NI    1085(R2),239   PASSTHROUGHCONSUMED
AAJ00318 EQU   *
AAJ00319 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00317
*S111: }
*S112: }
*S113: deviceCount+=1;
AAJ00320 LHI   R2,1
         A     R2,144(R12)   DEVICECOUNT
         ST    R2,144(R12)   DEVICECOUNT
AAJ00321 EQU   *
AAJ00322 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00316
*S114: }
*S116: }
* ATTEMPT TO PAIR EACH PASS-THROUGH DEVICE WITH A PROCEDURE FROM THE D
*S119: loop( i:=0; i<day->deviceCount; i+=1 ){
AAJ00323 XC    132(4,R12),132(R12)   I
AAJ00324 L     R2,72(R12)   DAY
         L     R3,132(R12)   I
         C     R3,36(R2)   DEVICECOUNT
         JNL   AAJ00366
*S120: device :=day->Devices[i];
         L     R4,72(R12)   DAY
         L     R5,32(R4)   DEVICES
         L     R6,132(R12)   I
         MHI   R6,4
         AR    R5,R6
         MVC   88(4,R12),0(R5)   DEVICES
*S121: device->day :=day;
         L     R7,88(R12)   DEVICE
         MVC   8(4,R7),72(R12)   DAY
*S122: deviceKey :=device->line->Hcpcs;
         L     R8,88(R12)   DEVICE
         L     R2,0(R8)   LINE
         LA    R14,156(R12)   DEVICEKEY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
* COUNT ALL DISTINCT PROCEDURES THAT PAIR WITH THE CURRENT PASS-THROUG
* ACCOUNT FOR SEPARATE LINES LISTING THE SAME PAIRED PROCEDURE.
*S126: reset procedureCount;
         XC    148(4,R12),148(R12)
*S127: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAJ00325 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00342
*S129: if( not (
*S130: line1->flags->PassthroughDevice
         L     R2,76(R12)   LINE1
         TM    1097(R2),4   PASSTHROUGHDEVICE
         JNE   AAJ00340
         L     R3,76(R12)   LINE1
         TM    1085(R3),8   PROCEDURECONSUMED
         JNE   AAJ00340
         L     R2,76(R12)   LINE1
         TM    1081(R2),64   IGNORELINE
         JNE   AAJ00340
*S131: or line1->Bits->ProcedureConsumed
*S132: or line1->Bits->IgnoreLine
*S133: ) ) then {
*S135: procedureKey:=line1->Hcpcs;
         L     R2,76(R12)   LINE1
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
*S136: loop( rc:=select OffsetCodePairTbl using byListId( OffsetCodepa
         MVC   60(2,R13),94(R11)   4
         MVC   62(2,R13),96(R11)   1
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,64(R13)
         LA    R3,68(R13)
         MVI   0(R3),1
         LA    R4,69(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,156(R12)   DEVICEKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R5,74(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,36(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00326
         L     R7,64(R13)
         MVC   3900(1,R9),0(R7)
         AHI   R13,88
         LA    R14,3904(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,1(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3916(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,6(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3928(2,R9),11(R7)
         MVC   3932(8,R9),13(R7)
AAJ00326 ST    R6,140(R12)   RC
AAJ00327 L     R2,140(R12)   RC
         CHI   R2,1
         JNL   AAJ00339
*S138: if( OffsetCodePairTbl->Code1=deviceKey
         LA    R14,3904(R9)   CODE1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,156(R12)   DEVICEKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00336
         LA    R14,3916(R9)   CODE2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00336
*S139: and OffsetCodePairTbl->Code2=procedureKey ) then {
*S141: if( base->Version < OffsetCodePairTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3928(R9),128   LOVERSION
         JE    AAJ00328
         LHI   R14,-1
AAJ00328 IC    R14,3928(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00330
         XR    R3,R3
         TM    3929(R9),128   HIVERSION
         JE    AAJ00329
         LHI   R3,-1
AAJ00329 IC    R3,3929(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00331
*S142: or OffsetCodePairTbl->HiVersion < base->Version ) then continue
AAJ00330 J     AAJ00337
* PROCEDURE FOUND, COUNT IT AND BREAK
*S145: line1->Bits->ProcedureConsumed:=1;
AAJ00331 L     R2,76(R12)   LINE1
         OI    1085(R2),8   PROCEDURECONSUMED
*S146: loop( line2:=line1->nextSameDay; line2; line2:=line2->nextSameD
         L     R3,76(R12)   LINE1
         MVC   80(4,R12),0(R3)   NEXTSAMEDAY
AAJ00332 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAJ00335
*S147: if( line2->Hcpcs = line1->Hcpcs ) then {
         L     R2,80(R12)   LINE2
         L     R3,76(R12)   LINE1
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00333
*S148: line2->Bits->ProcedureConsumed:=1;
         L     R5,80(R12)   LINE2
         OI    1085(R5),8   PROCEDURECONSUMED
AAJ00333 EQU   *
AAJ00334 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00332
*S149: }
*S150: }
*S151: procedureCount+=1;
AAJ00335 LHI   R2,1
         A     R2,148(R12)   PROCEDURECOUNT
         ST    R2,148(R12)   PROCEDURECOUNT
*S152: }
*S153: break;
AAJ00336 J     AAJ00339
AAJ00337 MVC   60(2,R13),100(R11)   7
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,36(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00338
         L     R3,64(R13)
         MVC   3900(1,R9),0(R3)
         AHI   R13,72
         LA    R14,3904(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,1(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3916(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,6(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3928(2,R9),11(R3)
         MVC   3932(8,R9),13(R3)
AAJ00338 ST    R2,140(R12)   RC
         J     AAJ00327
AAJ00339 EQU   *
AAJ00340 EQU   *
AAJ00341 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00325
*S155: }
*S156: }
*S158: }
* AT LEAST ONE PROCEDURE MUST EXIST
*S161: if( procedureCount ) then {
AAJ00342 L     R15,148(R12)   PROCEDURECOUNT
         LTR   R15,R15
         JE    AAJ00363
* STORE ALL PASS-THROUGH DEVICE/PROCEDURE PAIRS
*S164: device->procedureCount :=procedureCount;
         L     R2,88(R12)   DEVICE
         L     R3,148(R12)   PROCEDURECOUNT
         ST    R3,12(R2)   PROCEDURECOUNT
*S165: device->procedures :=new reference to struct ProcedureStruct[pr
         L     R4,88(R12)   DEVICE
         LA    R5,64(R12)
         MVC   60(4,R13),148(R12)   PROCEDURECOUNT
         MVC   64(4,R13),48(R11)   24
         ST    R5,68(R13)
         L     R15,24(R11)   DMNNEW
         BASR  R14,R15
         L     R6,60(R13)
         LR    R7,R6
         L     R8,148(R12)   PROCEDURECOUNT
AAJ00343 XC    0(20,R7),0(R7)
         ST    R5,20(R7)
         LA    R7,24(R7)
         BRCT  R8,AAJ00343
         ST    R6,4(R4)   PROCEDURES
*S166: reset procedureCount;
         XC    148(4,R12),148(R12)
*S168: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R3,72(R12)   DAY
         MVC   76(4,R12),8(R3)   FIRSTDAYSITEMS
AAJ00344 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00362
*S169: if( line1->Bits->ProcedureConsumed
         L     R2,76(R12)   LINE1
         TM    1085(R2),8   PROCEDURECONSUMED
         JE    AAJ00360
         L     R3,76(R12)   LINE1
         TM    1081(R3),64   IGNORELINE
         JNE   AAJ00360
*S170: and not line1->Bits->IgnoreLine ) then {
*S172: procedureKey:=line1->Hcpcs;
         L     R2,76(R12)   LINE1
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R2)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
*S173: loop( rc:=select OffsetCodePairTbl using byListId( OffsetCodepa
         MVC   60(2,R13),94(R11)   4
         MVC   62(2,R13),96(R11)   1
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,64(R13)
         LA    R3,68(R13)
         MVI   0(R3),1
         LA    R4,69(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,156(R12)   DEVICEKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         LA    R5,74(R13)
         AHI   R13,88
         ST    R5,60(R13)
         MVC   68(2,R13),98(R11)   5
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-88
         L     R15,36(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00345
         L     R7,64(R13)
         MVC   3900(1,R9),0(R7)
         AHI   R13,88
         LA    R14,3904(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,1(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         AHI   R13,88
         LA    R14,3916(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,6(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-88
         MVC   3928(2,R9),11(R7)
         MVC   3932(8,R9),13(R7)
AAJ00345 ST    R6,140(R12)   RC
AAJ00346 L     R2,140(R12)   RC
         CHI   R2,1
         JNL   AAJ00359
*S175: if( OffsetCodePairTbl->Code1=deviceKey
         LA    R14,3904(R9)   CODE1
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,156(R12)   DEVICEKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00356
         LA    R14,3916(R9)   CODE2
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,168(R12)   PROCEDUREKEY
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00356
*S176: and OffsetCodePairTbl->Code2=procedureKey ) then {
*S178: if( base->Version < OffsetCodePairTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3928(R9),128   LOVERSION
         JE    AAJ00347
         LHI   R14,-1
AAJ00347 IC    R14,3928(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00349
         XR    R3,R3
         TM    3929(R9),128   HIVERSION
         JE    AAJ00348
         LHI   R3,-1
AAJ00348 IC    R3,3929(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00350
*S179: or OffsetCodePairTbl->HiVersion < base->Version ) then continue
AAJ00349 J     AAJ00357
* LOAD ALL RELEVANT DATA FOR THIS PAIRED PROCEDURE
*S182: device->procedures[procedureCount] :=new struct ProcedureStruct
AAJ00350 L     R2,88(R12)   DEVICE
         L     R3,4(R2)   PROCEDURES
         L     R4,148(R12)   PROCEDURECOUNT
         MHI   R4,4
         AR    R3,R4
         LA    R5,64(R12)
         MVC   60(4,R13),28(R11)   1
         MVC   64(4,R13),48(R11)   24
         ST    R5,68(R13)
         L     R15,24(R11)   DMNNEW
         BASR  R14,R15
         L     R6,60(R13)
         XC    0(20,R6),0(R6)
         ST    R5,20(R6)
         ST    R6,0(R3)   PROCEDURES
*S183: procedure :=device->procedures[procedureCount];
         ST    R6,92(R12)   PROCEDURE
*S184: procedure->line :=line1;
         L     R7,92(R12)   PROCEDURE
         MVC   0(4,R7),76(R12)   LINE1
*S185: procedure->units +=line1->ServiceUnitsPay;
         L     R8,92(R12)   PROCEDURE
         L     R2,92(R12)   PROCEDURE
         L     R3,76(R12)   LINE1
         L     R4,4(R2)   UNITS
         A     R4,568(R3)   SERVICEUNITSPAY
         ST    R4,4(R8)   UNITS
*S186: procedure->amount :=OffsetCodePairTbl->Amount;
         L     R5,92(R12)   PROCEDURE
         L     R6,3932(R9)   AMOUNT
         ST    R6,8(R5)   AMOUNT
*S187: line1->Bits->ProcedureConsumed :=0;
         L     R7,76(R12)   LINE1
         NI    1085(R7),247   PROCEDURECONSUMED
* ADD UP UNITS FOR THE SAME PROCEDURE REPORTED ON MULTIPLE LINES
*S190: loop( line2:=line1->nextSameDay; line2; line2:=line2->nextSameD
         L     R8,76(R12)   LINE1
         MVC   80(4,R12),0(R8)   NEXTSAMEDAY
AAJ00351 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAJ00354
*S191: if( line2->Hcpcs = line1->Hcpcs ) then {
         L     R2,80(R12)   LINE2
         L     R3,76(R12)   LINE1
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00352
*S192: procedure->units +=line2->ServiceUnitsPay;
         L     R5,92(R12)   PROCEDURE
         L     R6,92(R12)   PROCEDURE
         L     R7,80(R12)   LINE2
         L     R8,4(R6)   UNITS
         A     R8,568(R7)   SERVICEUNITSPAY
         ST    R8,4(R5)   UNITS
*S193: line2->Bits->ProcedureConsumed :=0;
         L     R2,80(R12)   LINE2
         NI    1085(R2),247   PROCEDURECONSUMED
AAJ00352 EQU   *
AAJ00353 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00351
*S194: }
*S195: }
*S196: procedureCount+=1;
AAJ00354 LHI   R2,1
         A     R2,148(R12)   PROCEDURECOUNT
         ST    R2,148(R12)   PROCEDURECOUNT
* If we have a valid pair, but it's before the activation date and the
* complete, set edit 105 on the device only. Note: We don't need to ch
* procedure line date as its by pair.
*S200: if (base->Version >= 68
         L     R3,1868(R9)   VERSION
         CHI   R3,68
         JL    AAJ00355
         LA    R14,180(R12)
         ST    R14,60(R13)
         L     R15,52(R11)   GAPCC113
         BASR  R14,R15
         L     R15,180(R12)
         LTR   R15,R15
         JE    AAJ00355
         L     R15,3936(R9)   DATEACTIVATED
         LTR   R15,R15
         JE    AAJ00355
         L     R2,88(R12)   DEVICE
         L     R3,0(R2)   LINE
         L     R4,60(R3)   SERVICEDATE
         CL    R4,3936(R9)   DATEACTIVATED
         JNL   AAJ00355
*S201: and do GAPC.BillTypeCompletesBuffer()
*S202: and OffsetCodePairTbl->DateActivated
*S203: and device->line->ServiceDate < OffsetCodePairTbl->DateActivate
*S204: do GAPC.SetEdit( Edit->MidquarterDevicePair, device->line, base
         MVC   180(4,R12),56(R11)   105
         LA    R14,180(R12)
         ST    R14,64(R13)
         L     R2,88(R12)   DEVICE
         ST    R2,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    184(4,R12),184(R12)
         LA    R14,184(R12)
         ST    R14,80(R13)
         XC    188(4,R12),188(R12)
         LA    R14,188(R12)
         ST    R14,84(R13)
         L     R15,60(R11)   GAPCC091
         BASR  R14,R15
*S205: }
*S206: }
*S207: break;
AAJ00355 EQU   *
AAJ00356 J     AAJ00359
AAJ00357 MVC   60(2,R13),100(R11)   7
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,36(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00358
         L     R3,64(R13)
         MVC   3900(1,R9),0(R3)
         AHI   R13,72
         LA    R14,3904(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,1(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3916(R9)   OFFSETCODEPAIRTBL
         ST    R14,60(R13)
         LA    R14,6(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),40(R11)   5
         L     R15,44(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3928(2,R9),11(R3)
         MVC   3932(8,R9),13(R3)
AAJ00358 ST    R2,140(R12)   RC
         J     AAJ00346
AAJ00359 EQU   *
AAJ00360 EQU   *
AAJ00361 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00344
AAJ00362 J     AAJ00364
*S208: }
*S209: }
*S210: }
*S211: }% AT LEAST ONE PROCEDURE EXISTS...
*NO COMPANION APPLY E98
*S213: else {
*S214: do GAPC.SetEdit( Edit->PassThroughMissingCompanion, device->lin
AAJ00363 MVC   180(4,R12),64(R11)   98
         LA    R14,180(R12)
         ST    R14,64(R13)
         L     R2,88(R12)   DEVICE
         ST    R2,68(R13)
         LA    R14,92(R9)   NODXP
         ST    R14,72(R13)
         LA    R14,84(R9)   NODAY
         ST    R14,76(R13)
         XC    184(4,R12),184(R12)
         LA    R14,184(R12)
         ST    R14,80(R13)
         XC    188(4,R12),188(R12)
         LA    R14,188(R12)
         ST    R14,84(R13)
         L     R15,60(R11)   GAPCC091
         BASR  R14,R15
AAJ00364 EQU   *
AAJ00365 LHI   R2,1
         A     R2,132(R12)   I
         ST    R2,132(R12)   I
         J     AAJ00324
AAJ00366 EQU   *
AAJ00367 EQU   *
AAJ00368 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAJ00306
*S215: }
*S216: }% END: PAIR EACH DEVICE WITH ALL DEVICE OFFSET PROCEDURES
*S217: }% AT LEAST ONE DEVICE EXISTS ON DAY
*S218: }
* COUNT UP ALL PASS-THROUGH DEVICES THAT PAIRED WITH A PROCEDURE ACROS
*S221: reset deviceCount;
AAJ00369 XC    144(4,R12),144(R12)
*S222: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAJ00370 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAJ00377
*S223: if( day->Devices ) then {
         L     R2,72(R12)   DAY
         L     R15,32(R2)   DEVICES
         LTR   R15,R15
         JE    AAJ00375
*S224: loop( i:=0; i<day->deviceCount; i+=1 ){
         XC    132(4,R12),132(R12)   I
AAJ00371 L     R2,72(R12)   DAY
         L     R3,132(R12)   I
         C     R3,36(R2)   DEVICECOUNT
         JNL   AAJ00374
*S225: if( day->Devices[i]->procedureCount ) then {
         L     R4,72(R12)   DAY
         L     R5,32(R4)   DEVICES
         L     R6,132(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,0(R5)   DEVICES
         L     R15,12(R7)   PROCEDURECOUNT
         LTR   R15,R15
         JE    AAJ00372
*S226: deviceCount+=1;
         LHI   R8,1
         A     R8,144(R12)   DEVICECOUNT
         ST    R8,144(R12)   DEVICECOUNT
AAJ00372 EQU   *
AAJ00373 LHI   R2,1
         A     R2,132(R12)   I
         ST    R2,132(R12)   I
         J     AAJ00371
AAJ00374 EQU   *
AAJ00375 EQU   *
AAJ00376 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAJ00370
*S227: }
*S228: }
*S229: }
*S230: }
* AT LEAST ONE PASS-THROUGH DEVICE/PROCEDURE PAIR MUST EXIST ON CLAIM
*S233: if( deviceCount ) then {
AAJ00377 L     R15,144(R12)   DEVICECOUNT
         LTR   R15,R15
         JE    AAJ00418
* ADD ALL PASS-THROUGH DEVICES THAT PAIRED WITH A PROCEDURE ON CLAIM T
*S236: devices:=new reference to struct OffsetStruct[deviceCount];
         LA    R2,64(R12)
         MVC   60(4,R13),144(R12)   DEVICECOUNT
         MVC   64(4,R13),20(R11)   32
         ST    R2,68(R13)
         L     R15,24(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LR    R4,R3
         L     R5,144(R12)   DEVICECOUNT
AAJ00378 XC    0(28,R4),0(R4)
         ST    R2,28(R4)
         LA    R4,32(R4)
         BRCT  R5,AAJ00378
         ST    R3,84(R12)   DEVICES
*S237: reset deviceCount;
         XC    144(4,R12),144(R12)
*S238: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAJ00379 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAJ00386
*S239: if( day->Devices ) then {
         L     R2,72(R12)   DAY
         L     R15,32(R2)   DEVICES
         LTR   R15,R15
         JE    AAJ00384
*S240: loop( i:=0; i < day->deviceCount; i+=1 ){
         XC    132(4,R12),132(R12)   I
AAJ00380 L     R2,72(R12)   DAY
         L     R3,132(R12)   I
         C     R3,36(R2)   DEVICECOUNT
         JNL   AAJ00383
*S241: if( day->Devices[i]->procedureCount ) then {
         L     R4,72(R12)   DAY
         L     R5,32(R4)   DEVICES
         L     R6,132(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,0(R5)   DEVICES
         L     R15,12(R7)   PROCEDURECOUNT
         LTR   R15,R15
         JE    AAJ00381
*S242: devices[deviceCount] :=day->Devices[i];
         L     R8,84(R12)   DEVICES
         L     R2,144(R12)   DEVICECOUNT
         MHI   R2,4
         AR    R8,R2
         L     R3,72(R12)   DAY
         L     R4,32(R3)   DEVICES
         L     R5,132(R12)   I
         MHI   R5,4
         AR    R4,R5
         MVC   0(4,R8),0(R4)   DEVICES
*S243: deviceCount +=1;
         LHI   R6,1
         A     R6,144(R12)   DEVICECOUNT
         ST    R6,144(R12)   DEVICECOUNT
AAJ00381 EQU   *
AAJ00382 LHI   R2,1
         A     R2,132(R12)   I
         ST    R2,132(R12)   I
         J     AAJ00380
AAJ00383 EQU   *
AAJ00384 EQU   *
AAJ00385 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAJ00379
*S244: }
*S245: }
*S246: }
*S247: }
* ITERATE OVER VALUE CODE SLOTS QN AND QO FOR PASS-THROUGH DEVICE OFFS
*S250: loop( valueCodeIndex:=0; valueCodeIndex<#ValueCodes; valueCodeI
AAJ00386 XC    152(4,R12),152(R12)   VALUECODEINDEX
AAJ00387 L     R2,152(R12)   VALUECODEINDEX
         CHI   R2,2
         JNL   AAJ00417
*S252: reset highestPayingDevice;
         XC    96(4,R12),96(R12)
*S253: reset highestPayingProcedure;
         XC    100(4,R12),100(R12)
* IF WE HAVE A COMPREHENSIVE APC, FIND THE HIGHEST PAYING PASS-THROUGH
* THAT WILL PAIR WITH THE COMPREHENSIVE PROCEDURE (IF ANY), IGNORING A
* OTHERWISE, FIND THE HIGHEST PAYING PASS-THROUGH DEVICE/PROCEDURE PAI
*S258: loop( i:=0; i<deviceCount; i+=1 ){
         XC    132(4,R12),132(R12)   I
AAJ00388 L     R2,132(R12)   I
         C     R2,144(R12)   DEVICECOUNT
         JNL   AAJ00399
*S259: device:=devices[i];
         L     R3,84(R12)   DEVICES
         L     R4,132(R12)   I
         MHI   R4,4
         AR    R3,R4
         MVC   88(4,R12),0(R3)   DEVICES
* THE device->value FIELD INDICATES THAT THE LINE HAS ALREADY BEEN USE
*S261: if( not device->value ) then {
         L     R5,88(R12)   DEVICE
         LA    R14,20(R5)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNSLOG
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAJ00397
*S262: loop( j:=0; j<device->procedureCount; j+=1 ){
         XC    136(4,R12),136(R12)   J
AAJ00389 L     R2,88(R12)   DEVICE
         L     R3,136(R12)   J
         C     R3,12(R2)   PROCEDURECOUNT
         JNL   AAJ00396
*S263: procedure:=device->procedures[j];
         L     R4,88(R12)   DEVICE
         L     R5,4(R4)   PROCEDURES
         L     R6,136(R12)   J
         MHI   R6,4
         AR    R5,R6
         MVC   92(4,R12),0(R5)   PROCEDURES
* THE procedure->value FIELD INDICATES THAT THE LINE HAS ALREADY BEEN
* V17.1, RETROACTIVE 2016-01-01, ALLOW ALL DEVICE OFFSETS FOR COMPREHE
*S266: if( not procedure->value
         L     R7,92(R12)   PROCEDURE
         LA    R14,12(R7)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,68(R11)   DMNSLOG
         BASR  R14,R15
         L     R8,60(R13)
         LTR   R8,R8
         JNE   AAJ00394
         L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAJ00391
         L     R2,92(R12)   PROCEDURE
         L     R3,1972(R9)   PRIMARYCOMPREHENSIVE
         C     R3,0(R2)   LINE
         JE    AAJ00391
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAJ00390
         TM    3005(R9),1   INPAPCSET
         JNE   AAJ00391
AAJ00390 J     AAJ00394
AAJ00391 L     R15,100(R12)   HIGHESTPAYINGPROCEDURE
         LTR   R15,R15
         JE    AAJ00393
         L     R2,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R3,92(R12)   PROCEDURE
         L     R4,8(R2)   AMOUNT
         C     R4,8(R3)   AMOUNT
         JL    AAJ00393
         L     R2,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R3,92(R12)   PROCEDURE
         L     R4,8(R2)   AMOUNT
         C     R4,8(R3)   AMOUNT
         JNE   AAJ00392
         L     R5,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R6,92(R12)   PROCEDURE
         L     R7,4(R5)   UNITS
         C     R7,4(R6)   UNITS
         JL    AAJ00393
AAJ00392 J     AAJ00394
*S267: and ( not claim->PrimaryComprehensive
*S268: or claim->PrimaryComprehensive=procedure->line
*S269: or ( 61 < base->Version and claim->Bits->InpApcSet )
*S270: )
*S271: and ( not highestPayingProcedure
*S272: or highestPayingProcedure->amount < procedure->amount
*S273: or ( highestPayingProcedure->amount = procedure->amount and hig
*S274: ) ) then {
*S275: highestPayingDevice :=device;
AAJ00393 MVC   96(4,R12),88(R12)   DEVICE
*S276: highestPayingProcedure :=procedure;
         MVC   100(4,R12),92(R12)   PROCEDURE
AAJ00394 EQU   *
AAJ00395 LHI   R2,1
         A     R2,136(R12)   J
         ST    R2,136(R12)   J
         J     AAJ00389
AAJ00396 EQU   *
AAJ00397 EQU   *
AAJ00398 LHI   R2,1
         A     R2,132(R12)   I
         ST    R2,132(R12)   I
         J     AAJ00388
*S277: }
*S278: }
*S279: }
*S280: }
* IF EXISTS, SET VALUE CODE INFORMATION
*S283: if( highestPayingDevice
AAJ00399 L     R15,96(R12)   HIGHESTPAYINGDEVICE
         LTR   R15,R15
         JE    AAJ00413
         L     R15,100(R12)   HIGHESTPAYINGPROCEDURE
         LTR   R15,R15
         JE    AAJ00413
*S284: and highestPayingProcedure ) then {
*S286: valueCode :=&claim->ValueCodeSet[valueCodeIndex];
         LA    R2,1976(R9)   VALUECODESET
         L     R3,152(R12)   VALUECODEINDEX
         MHI   R3,16
         AR    R2,R3
         ST    R2,104(R12)   VALUECODE
*S287: valueCode->value :=ValueCodes[valueCodeIndex];
         L     R4,104(R12)   VALUECODE
         LA    R5,108(R12)   VALUECODES
         L     R6,152(R12)   VALUECODEINDEX
         MHI   R6,12
         AR    R5,R6
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         ST    R5,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
*S288: valueCode->amount :=highestPayingProcedure->amount;
         L     R7,104(R12)   VALUECODE
         L     R8,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R2,8(R8)   AMOUNT
         ST    R2,12(R7)   AMOUNT
* SET THE procedure->value AND device->value FIELDS TO IDENTIFY LINES
*S290: highestPayingDevice->value :=valueCode->value;
         L     R3,96(R12)   HIGHESTPAYINGDEVICE
         L     R4,104(R12)   VALUECODE
         LA    R14,20(R3)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R4,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
*S291: highestPayingProcedure->value :=valueCode->value;
         L     R5,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R6,104(R12)   VALUECODE
         LA    R14,12(R5)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R6,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCPY
         BASR  R14,R15
* ITERATE OVER DAY AND ASSIGN THE PAF BASED ON THE VALUE CODE TO THE P
* THIS MUST BE DONE BECAUSE THE PASS-THROUGH DEVICE MAY APPEAR ON MULT
*S295: loop( line1:=highestPayingDevice->day->firstDaysItems; line1; l
         L     R7,96(R12)   HIGHESTPAYINGDEVICE
         L     R8,8(R7)   DAY
         MVC   76(4,R12),8(R8)   FIRSTDAYSITEMS
AAJ00400 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00406
*S296: if( line1->Hcpcs = highestPayingDevice->line->Hcpcs ) then {
         L     R2,76(R12)   LINE1
         L     R3,96(R12)   HIGHESTPAYINGDEVICE
         L     R4,0(R3)   LINE
         LA    R14,144(R2)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R4)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAJ00404
*S297: if( valueCodeIndex=0 ) then {
         L     R6,152(R12)   VALUECODEINDEX
         LTR   R6,R6
         JNE   AAJ00401
*S298: line1->PayAdjFlag:=PaymentAdjustments->DEVICE_OFFSET_1ST;
         L     R7,76(R12)   LINE1
         MVC   544(4,R7),72(R11)   12
         J     AAJ00403
*S299: }
*S300: else if( valueCodeIndex=1 ) then {
AAJ00401 L     R2,152(R12)   VALUECODEINDEX
         CHI   R2,1
         JNE   AAJ00402
*S301: line1->PayAdjFlag:=PaymentAdjustments->DEVICE_OFFSET_2ND;
         L     R3,76(R12)   LINE1
         MVC   544(4,R3),76(R11)   13
AAJ00402 EQU   *
AAJ00403 EQU   *
AAJ00404 EQU   *
AAJ00405 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00400
*S302: }
*else if( valueCodeIndex=2 ) then {
* line1->PayAdjFlag:=PaymentAdjustments->DEVICE_OFFSET_3RD;
*}
*S306: }
*S307: }
* CALCULATE THE OFFSET AMOUNT: OFFSET * MULTIPIER
* CHOOSE THE LOWER NUMBER OF UNITS, PASS-THROUGH DEVICE UNITS VS PROCE
* NOTE: COMPREHENSIVE SERVICES WILL ONLY EVER PAY 1 UNIT OF A SINGLE O
*S312: if( not claim->PrimaryComprehensive
AAJ00406 L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAJ00408
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAJ00407
         TM    3005(R9),1   INPAPCSET
         JNE   AAJ00408
AAJ00407 J     AAJ00412
*S313: or ( 61 < base->Version and claim->Bits->InpApcSet ) ) then {
*S314: if( highestPayingDevice->units <= highestPayingProcedure->units
AAJ00408 L     R2,96(R12)   HIGHESTPAYINGDEVICE
         L     R3,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R4,16(R2)   UNITS
         C     R4,4(R3)   UNITS
         JH    AAJ00409
         L     R5,96(R12)   HIGHESTPAYINGDEVICE
         L     R6,16(R5)   UNITS
         CHI   R6,1
         JNH   AAJ00409
*S315: and 1 < highestPayingDevice->units ) then {
*S316: valueCode->amount *= highestPayingDevice->units;
         L     R2,104(R12)   VALUECODE
         L     R3,104(R12)   VALUECODE
         L     R4,96(R12)   HIGHESTPAYINGDEVICE
         XR    R14,R14
         L     R15,12(R3)   AMOUNT
         M     R14,16(R4)   UNITS
         LR    R5,R15
         ST    R5,12(R2)   AMOUNT
         J     AAJ00411
*S317: }
*S318: else if( highestPayingProcedure->units < highestPayingDevice->u
AAJ00409 L     R2,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R3,96(R12)   HIGHESTPAYINGDEVICE
         L     R4,4(R2)   UNITS
         C     R4,16(R3)   UNITS
         JNL   AAJ00410
         L     R5,100(R12)   HIGHESTPAYINGPROCEDURE
         L     R6,4(R5)   UNITS
         CHI   R6,1
         JNH   AAJ00410
*S319: and 1 < highestPayingProcedure->units ) then {
*S320: valueCode->amount *= highestPayingProcedure->units;
         L     R2,104(R12)   VALUECODE
         L     R3,104(R12)   VALUECODE
         L     R4,100(R12)   HIGHESTPAYINGPROCEDURE
         XR    R14,R14
         L     R15,12(R3)   AMOUNT
         M     R14,4(R4)   UNITS
         LR    R5,R15
         ST    R5,12(R2)   AMOUNT
*S321: }
*S322: }
*S324: }
* IF THE CLAIM IS COMPREHENSIVE, ONLY ONE OFFSET AMOUNT IS ALLOWED ON
* V17.1, RETROACTIVE 2016-01-01, ALLOW ALL DEVICE OFFSETS FOR COMPREHE
*S328: if( claim->PrimaryComprehensive
AAJ00410 EQU   *
AAJ00411 EQU   *
AAJ00412 EQU   *
AAJ00413 L     R15,1972(R9)   PRIMARYCOMPREHENSIVE
         LTR   R15,R15
         JE    AAJ00415
         L     R2,1868(R9)   VERSION
         CHI   R2,61
         JNH   AAJ00414
         TM    3005(R9),1   INPAPCSET
         JNE   AAJ00415
*S329: and not ( 61 < base->Version and claim->Bits->InpApcSet ) ) the
AAJ00414 J     AAJ00417
AAJ00415 EQU   *
AAJ00416 LHI   R2,1
         A     R2,152(R12)   VALUECODEINDEX
         ST    R2,152(R12)   VALUECODEINDEX
         J     AAJ00387
AAJ00417 EQU   *
AAJ00418 EQU   *
AAJ00419 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,80(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC105
**************************
GAPCC105 CSECT
GAPCC105 AMODE ANY
GAPCC105 RMODE ANY
*XREF - GAPCC105 GAPC.Terminated
*  R11 + 0000 Literals        (64 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (32 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> Integer len 4 (rc)
*        0080(R12)-> Integer len 4 (foundOffset)
*        0084(R12)-> Integer len 4 (credit)
*        0088(R12)-> Integer len 4 (foundCredit)
*        0092(R12)-> String (apc)
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAJ00503
         DC    F'1' @00000
         DC    A(DMNATFD) @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNSEL) @00012
         DC    F'5' @00016
         DC    A(DMNSCPYX) @00020
         DC    A(DMNSCMP) @00024
         DC    F'16' @00028
         DC    F'17' @00032
         DC    A(GAPCC103) @00036
         DC    A(DMNFREE) @00040
         DC    H'10'  0 10 @00044
         DC    H'1120'  4 96 @00046
         DC    H'4'  0 4 @00048
         DC    H'1'  0 1 @00050
         DC    H'5'  0 5 @00052
         DC    H'7'  0 7 @00054
         DC    H'2'  0 2 @00056
         DC    CL2'QQ' @00058
         DC    CL2'QU' @00060
AAJ00503 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(28,R12),72(R12)
         ST    R2,100(R12)
*message "TERMINATED OFFSET ------------------------------------";
*S343: if( claim->Bits->HasCc49
         TM    3000(R9),8   HASCC49
         JNE   AAJ00506
         TM    3000(R9),4   HASCC50
         JNE   AAJ00506
         TM    3000(R9),2   HASCC53
         JE    AAJ00507
*S344: or claim->Bits->HasCc50
*S345: or claim->Bits->HasCc53 ) then
*S346: credit:=1;
AAJ00506 MVC   84(4,R12),0(R11)   1
* V18.0, EFFECTIVE 2017-01-01, TERMINATED DEVICES PAY OFFSET AMOUNT NO
*S349: if( 65 < base->Version ) then {
AAJ00507 L     R2,1868(R9)   VERSION
         CHI   R2,65
         JNH   AAJ00526
*S350: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R3,28(R9)   LINES
         ST    R3,4(R9)   ITEM
AAJ00508 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAJ00525
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),44(R11)   10
         MVC   66(2,R13),46(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAJ00525
*S351: if( line->flags->TerminatedDeviceProcedure
         L     R2,72(R12)   LINE
         TM    1097(R2),8   TERMINATEDDEVICEPROCEDURE
         JE    AAJ00522
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAJ00522
*S352: and not line->PackagingFlag ) then {
*S354: loop( rc:=select OffsetHcpcsTbl using byListId( OffsetHcpcs->TE
         MVC   60(2,R13),48(R11)   4
         MVC   62(2,R13),50(R11)   1
         LA    R14,3940(R9)   OFFSETHCPCSTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         MVI   0(R2),5
         L     R3,72(R12)   LINE
         LA    R4,69(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),52(R11)   5
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAJ00509
         L     R6,64(R13)
         MVC   3948(1,R9),0(R6)
         AHI   R13,80
         LA    R14,3952(R9)   OFFSETHCPCSTBL
         ST    R14,60(R13)
         LA    R14,1(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3964(2,R9),6(R6)
         MVC   3968(4,R9),8(R6)
AAJ00509 ST    R5,76(R12)   RC
AAJ00510 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAJ00521
*S355: if( OffsetHcpcsTbl->HCPCS = line->Hcpcs ) then {
         L     R3,72(R12)   LINE
         LA    R14,3952(R9)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,144(R3)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00518
*S357: if( base->Version < OffsetHcpcsTbl->LoVersion
         L     R5,1868(R9)   VERSION
         XR    R14,R14
         TM    3964(R9),128   LOVERSION
         JE    AAJ00511
         LHI   R14,-1
AAJ00511 IC    R14,3964(R9)   LOVERSION
         CR    R5,R14
         JL    AAJ00513
         XR    R6,R6
         TM    3965(R9),128   HIVERSION
         JE    AAJ00512
         LHI   R6,-1
AAJ00512 IC    R6,3965(R9)   HIVERSION
         C     R6,1868(R9)   VERSION
         JNL   AAJ00514
*S358: or OffsetHcpcsTbl->HiVersion < base->Version ) then continue;
AAJ00513 J     AAJ00519
* DO OFFSET ADJUSTMENT
* WE USE found FLAG BECAUSE AMOUNT MAY BE 0, IN WHICH CASE, WE STILL H
*S362: if( line->Bits->Has73Modifier ) then {
AAJ00514 L     R2,72(R12)   LINE
         TM    1077(R2),8   HAS73MODIFIER
         JE    AAJ00515
*S363: claim->ValueCodeSet[ValueCode->DEVICE_OFFSET_TERMINATED]->amoun
         L     R3,2036(R9)   AMOUNT
         A     R3,3968(R9)   AMOUNT
         ST    R3,2036(R9)   AMOUNT
*S364: line->PayAdjFlag:=PaymentAdjustments->DEVICE_OFFSET_TERMINATED;
         L     R4,72(R12)   LINE
         MVC   544(4,R4),28(R11)   16
*S365: foundOffset|=1;
         LHI   R5,1
         O     R5,80(R12)   FOUNDOFFSET
         ST    R5,80(R12)   FOUNDOFFSET
         J     AAJ00517
*S366: }
* DO CREDIT ADJUSTMENT IF MODIFIER 73 NOT PRESENT
* WE USE found FLAG BECAUSE AMOUNT MAY BE 0, IN WHICH CASE, WE STILL H
*S369: else if( credit ) then {
AAJ00515 L     R15,84(R12)   CREDIT
         LTR   R15,R15
         JE    AAJ00516
*S370: claim->ValueCodeSet[ValueCode->DEVICE_CREDIT_TERMINATED]->amoun
         L     R2,2100(R9)   AMOUNT
         A     R2,3968(R9)   AMOUNT
         ST    R2,2100(R9)   AMOUNT
*S371: line->PayAdjFlag:=PaymentAdjustments->DEVICE_CREDIT_TERMINATED;
         L     R3,72(R12)   LINE
         MVC   544(4,R3),32(R11)   17
*S372: foundCredit|=1;
         LHI   R4,1
         O     R4,88(R12)   FOUNDCREDIT
         ST    R4,88(R12)   FOUNDCREDIT
*S373: }
*S375: }
*S376: break;
AAJ00516 EQU   *
AAJ00517 EQU   *
AAJ00518 J     AAJ00521
AAJ00519 MVC   60(2,R13),54(R11)   7
         LA    R14,3940(R9)   OFFSETHCPCSTBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00520
         L     R3,64(R13)
         MVC   3948(1,R9),0(R3)
         AHI   R13,72
         LA    R14,3952(R9)   OFFSETHCPCSTBL
         ST    R14,60(R13)
         LA    R14,1(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3964(2,R9),6(R3)
         MVC   3968(4,R9),8(R3)
AAJ00520 ST    R2,76(R12)   RC
         J     AAJ00510
AAJ00521 EQU   *
AAJ00522 EQU   *
AAJ00523 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAJ00524
         L     R2,8(R2)
AAJ00524 ST    R2,4(R9)   ITEM
         J     AAJ00508
AAJ00525 J     AAJ00545
*S377: }
*S378: }
*S379: }
*S380: }
* PREVIOUS VERSION PAID BASED ON APC.
*S382: else{
*S383: loop( item:=base->lines->first; item and (line:=&item->line, li
AAJ00526 L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAJ00527 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAJ00544
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),44(R11)   10
         MVC   66(2,R13),46(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAJ00544
*S384: if( line->flags->TerminatedDeviceProcedure
         L     R2,72(R12)   LINE
         TM    1097(R2),8   TERMINATEDDEVICEPROCEDURE
         JE    AAJ00541
         L     R3,72(R12)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAJ00541
*S385: and not line->PackagingFlag ) then {
*S387: apc:=do GAPC.GetLookupApc( line );
         LA    R14,92(R12)   APC
         ST    R14,60(R13)
         LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,36(R11)   GAPCC103
         BASR  R14,R15
*S388: loop( rc:=select OffsetApcTbl using byGroupId( OffsetApcGroup->
         MVC   60(2,R13),48(R11)   4
         MVC   62(2,R13),50(R11)   1
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         MVI   0(R2),3
         LA    R3,69(R13)
         AHI   R13,80
         ST    R3,60(R13)
         MVC   68(2,R13),52(R11)   5
         LA    R14,92(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
         CHI   R4,1
         JH    AAJ00528
         L     R5,64(R13)
         MVC   3868(2,R9),0(R5)
         AHI   R13,80
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R5)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3884(2,R9),7(R5)
         MVC   3888(4,R9),9(R5)
AAJ00528 ST    R4,76(R12)   RC
AAJ00529 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAJ00540
*S389: if( OffsetApcTbl->Apc = line->PaymentApc ) then {
         L     R3,72(R12)   LINE
         LA    R14,3872(R9)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,512(R3)   PAYMENTAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAJ00537
*S390: if( base->Version < OffsetApcTbl->LoVersion
         L     R5,1868(R9)   VERSION
         XR    R14,R14
         TM    3884(R9),128   LOVERSION
         JE    AAJ00530
         LHI   R14,-1
AAJ00530 IC    R14,3884(R9)   LOVERSION
         CR    R5,R14
         JL    AAJ00532
         XR    R6,R6
         TM    3885(R9),128   HIVERSION
         JE    AAJ00531
         LHI   R6,-1
AAJ00531 IC    R6,3885(R9)   HIVERSION
         C     R6,1868(R9)   VERSION
         JNL   AAJ00533
*S391: or OffsetApcTbl->HiVersion < base->Version ) then continue;
AAJ00532 J     AAJ00538
* DO OFFSET ADJUSTMENT
* WE USE found FLAG BECAUSE AMOUNT MAY BE 0, IN WHICH CASE, WE STILL H
*S395: if( line->Bits->Has73Modifier ) then {
AAJ00533 L     R2,72(R12)   LINE
         TM    1077(R2),8   HAS73MODIFIER
         JE    AAJ00534
*S396: claim->ValueCodeSet[ValueCode->DEVICE_OFFSET_TERMINATED]->amoun
         L     R3,2036(R9)   AMOUNT
         A     R3,3888(R9)   AMOUNT
         ST    R3,2036(R9)   AMOUNT
*S397: line->PayAdjFlag:=PaymentAdjustments->DEVICE_OFFSET_TERMINATED;
         L     R4,72(R12)   LINE
         MVC   544(4,R4),28(R11)   16
*S398: foundOffset|=1;
         LHI   R5,1
         O     R5,80(R12)   FOUNDOFFSET
         ST    R5,80(R12)   FOUNDOFFSET
         J     AAJ00536
*S399: }
* DO CREDIT ADJUSTMENT IF MODIFIER 73 NOT PRESENT
* WE USE found FLAG BECAUSE AMOUNT MAY BE 0, IN WHICH CASE, WE STILL H
*S402: else if( credit ) then {
AAJ00534 L     R15,84(R12)   CREDIT
         LTR   R15,R15
         JE    AAJ00535
*S403: claim->ValueCodeSet[ValueCode->DEVICE_CREDIT_TERMINATED]->amoun
         L     R2,2100(R9)   AMOUNT
         A     R2,3888(R9)   AMOUNT
         ST    R2,2100(R9)   AMOUNT
*S404: line->PayAdjFlag:=PaymentAdjustments->DEVICE_CREDIT_TERMINATED;
         L     R3,72(R12)   LINE
         MVC   544(4,R3),32(R11)   17
*S405: foundCredit|=1;
         LHI   R4,1
         O     R4,88(R12)   FOUNDCREDIT
         ST    R4,88(R12)   FOUNDCREDIT
*S406: }
*S408: }
*S409: break;
AAJ00535 EQU   *
AAJ00536 EQU   *
AAJ00537 J     AAJ00540
AAJ00538 MVC   60(2,R13),54(R11)   7
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,12(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00539
         L     R3,64(R13)
         MVC   3868(2,R9),0(R3)
         AHI   R13,72
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),16(R11)   5
         L     R15,20(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3884(2,R9),7(R3)
         MVC   3888(4,R9),9(R3)
AAJ00539 ST    R2,76(R12)   RC
         J     AAJ00529
AAJ00540 EQU   *
AAJ00541 EQU   *
AAJ00542 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAJ00543
         L     R2,8(R2)
AAJ00543 ST    R2,4(R9)   ITEM
         J     AAJ00527
*S410: }
*S412: }
*S413: }
*S414: }
* IF ANY OFFSET OR CREDIT WAS FOUND, ASSIGN LABEL(S)
*S417: if( foundOffset ) then {
AAJ00544 EQU   *
AAJ00545 L     R15,80(R12)   FOUNDOFFSET
         LTR   R15,R15
         JE    AAJ00546
*S418: claim->ValueCodeSet[ValueCode->DEVICE_OFFSET_TERMINATED]->value
         LA    R14,2024(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,58(R11)   QQ
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S419: }
*S420: if( foundCredit ) then {
AAJ00546 L     R15,88(R12)   FOUNDCREDIT
         LTR   R15,R15
         JE    AAJ00547
*S421: claim->ValueCodeSet[ValueCode->DEVICE_CREDIT_TERMINATED]->value
         LA    R14,2088(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,60(R11)   QU
         ST    R14,64(R13)
         MVC   70(2,R13),56(R11)   2
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
AAJ00547 EQU   *
AAJ00548 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,40(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC106
**************************
GAPCC106 CSECT
GAPCC106 AMODE ANY
GAPCC106 RMODE ANY
*XREF - GAPCC106 GAPC.GetNextHighestPayingOffsetDay
*  R11 + 0000 Literals        (0 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Reference len 4 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> reference to Struct len 628 (day)
*        0068(R12)-> reference to Struct len 628 (highestPayingDay)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         XC    64(8,R12),64(R12)
* IDENTIFY DAY WITH NEXT HIGHEST PAYING OFFSET
*S432: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   64(4,R12),60(R9)   FIRSTVISIT
AAJ00606 L     R15,64(R12)   DAY
         LTR   R15,R15
         JE    AAJ00610
*S433: if( day->Bits->HasOffset
         L     R2,64(R12)   DAY
         TM    627(R2),128   HASOFFSET
         JE    AAJ00608
         L     R15,68(R12)   HIGHESTPAYINGDAY
         LTR   R15,R15
         JE    AAJ00607
         L     R3,68(R12)   HIGHESTPAYINGDAY
         L     R4,64(R12)   DAY
         L     R5,40(R3)   OFFSETTOTAL
         C     R5,40(R4)   OFFSETTOTAL
         JNL   AAJ00608
*S434: and ( not highestPayingDay
*S435: or highestPayingDay->offsetTotal < day->offsetTotal ) ) then {
*S436: highestPayingDay:=day;
AAJ00607 MVC   68(4,R12),64(R12)   DAY
AAJ00608 EQU   *
AAJ00609 L     R2,64(R12)   DAY
         MVC   64(4,R12),0(R2)   NEXTVISIT
         J     AAJ00606
*S437: }
*S438: }
*S439: return ( highestPayingDay )? highestPayingDay : base->NoDay;
AAJ00610 L     R2,60(R12)
         L     R15,68(R12)   HIGHESTPAYINGDAY
         LTR   R15,R15
         JNE   AAJ00611
         L     R3,84(R9)   NODAY
         J     AAJ00612
AAJ00611 L     R3,68(R12)   HIGHESTPAYINGDAY
AAJ00612 ST    R3,0(R2)
AAJ00613 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC107
**************************
GAPCC107 CSECT
GAPCC107 AMODE ANY
GAPCC107 RMODE ANY
*XREF - GAPCC107 GAPC.RadioPharmaceuticalOffset
*  R11 + 0000 Literals        (72 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (56 bytes)
*        0072(R12)-> reference to Struct len 1120 (line)
*        0076(R12)-> reference to Struct len 1120 (line2)
*        0080(R12)-> reference to Struct len 20 (offset)
*        0084(R12)-> reference to Reference len 4 (procedures)
*        0088(R12)-> Integer len 4 (i)
*        0092(R12)-> Integer len 4 (j)
*        0096(R12)-> Integer len 4 (rc)
*        0100(R12)-> Integer len 4 (drugCount)
*        0104(R12)-> Integer len 4 (procedureCount)
*        0108(R12)-> Integer len 4 (count)
*        0112(R12)-> Integer len 4 (amount)
*        0116(R12)-> String (apc)
*        0128(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 128)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,128  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAJ00703
         DC    A(GAPCC102) @00000
         DC    A(DMNATFD) @00004
         DC    A(GAPCC103) @00008
         DC    A(DMNSLOG) @00012
         DC    A(DMNSCPY) @00016
         DC    A(DMNSEL) @00020
         DC    F'5' @00024
         DC    A(DMNSCPYX) @00028
         DC    A(DMNSCMP) @00032
         DC    F'20' @00036
         DC    A(DMNNEW) @00040
         DC    F'1' @00044
         DC    F'18' @00048
         DC    A(DMNFREE) @00052
         DC    H'10'  0 10 @00056
         DC    H'1120'  4 96 @00058
         DC    H'4'  0 4 @00060
         DC    H'1'  0 1 @00062
         DC    H'5'  0 5 @00064
         DC    H'7'  0 7 @00066
         DC    H'2'  0 2 @00068
         DC    CL2'QR' @00070
AAJ00703 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(52,R12),72(R12)
         ST    R2,124(R12)
* FOR THE DRUG LINES, ONLY COUNT OCCURRENCES, NOT UNITS.
* IT IS OK TO COUNT RADIOPHARM LINES WITHOUT PAIRING THEM WITH PROCEDU
* BECAUSE ALL OF THE RADIOPHARM CODES PAIR WITH ALL PROCEDURES ON THE
*S454: do GAPC.ClearOffsetFlags();
         L     R15,0(R11)   GAPCC102
         BASR  R14,R15
*S455: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAJ00706 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAJ00728
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAJ00728
* SEARCH ALL LISTS FOR A PAIRING, AGAIN, WE ONLY NEED ONE PER PASS-THR
* SO BREAK AFTER THE FIRST ONE IS FOUND
*S458: if( line->flags->PassthroughRadiopharm ) then {
         L     R2,72(R12)   LINE
         TM    1097(R2),2   PASSTHROUGHRADIOPHARM
         JE    AAJ00725
*S459: loop( item2:=base->lines->first; item2 and (line2:=&item2->line
         L     R3,28(R9)   LINES
         ST    R3,8(R9)   ITEM2
AAJ00707 L     R15,8(R9)   ITEM2
         LTR   R15,R15
         JE    AAJ00724
         MVC   60(4,R13),8(R9)   ITEM2
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   LINE2
         LTR   R2,R2   LINE
         JE    AAJ00724
*S460: if( line<>line2 ) then {
         L     R2,72(R12)   LINE
         C     R2,76(R12)   LINE2
         JE    AAJ00721
* ATTEMPT TO FIND A PAIRING IN THE OFFSET TABLE
*S463: apc:=do GAPC.GetLookupApc( line2 );
         LA    R14,116(R12)   APC
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE2
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC103
         BASR  R14,R15
*S464: if( apc ) then {
         LA    R14,116(R12)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,12(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAJ00720
*message "DRUG=%s GROUP=%i", line->Hcpcs, OffsetApcGroup->RADIO_PHARM;
*S466: loop( rc:=select OffsetApcTbl using byGroupId( OffsetApcGroup->
         MVC   60(2,R13),60(R11)   4
         MVC   62(2,R13),62(R11)   1
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         MVI   0(R4),1
         LA    R5,69(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,116(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00708
         L     R7,64(R13)
         MVC   3868(2,R9),0(R7)
         AHI   R13,80
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3884(2,R9),7(R7)
         MVC   3888(4,R9),9(R7)
AAJ00708 ST    R6,96(R12)   RC
AAJ00709 L     R2,96(R12)   RC
         CHI   R2,1
         JNL   AAJ00719
*S467: if( OffsetApcTbl->GroupId = OffsetApcGroup->RADIO_PHARM
         CLI   3868(R9),1   GROUPID
         JNE   AAJ00716
         LA    R14,3872(R9)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00716
*S468: and OffsetApcTbl->Apc = apc ) then {
*S470: if( base->Version < OffsetApcTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3884(R9),128   LOVERSION
         JE    AAJ00710
         LHI   R14,-1
AAJ00710 IC    R14,3884(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00712
         XR    R3,R3
         TM    3885(R9),128   HIVERSION
         JE    AAJ00711
         LHI   R3,-1
AAJ00711 IC    R3,3885(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00713
*S471: or OffsetApcTbl->HiVersion < base->Version ) then continue;
AAJ00712 J     AAJ00717
*message "\tCount HCPCS=%s APC=%i AMT=%i", line2->Hcpcs, apc, OffsetAp
*S474: if( not line->Bits->PassThroughConsumed ) then {
AAJ00713 L     R2,72(R12)   LINE
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JNE   AAJ00714
*S475: line->Bits->PassThroughConsumed:=1;
         L     R3,72(R12)   LINE
         OI    1085(R3),16   PASSTHROUGHCONSUMED
*S476: drugCount+=1;
         LHI   R4,1
         A     R4,100(R12)   DRUGCOUNT
         ST    R4,100(R12)   DRUGCOUNT
*S477: }
*S479: if( not line2->Bits->ProcedureConsumed ) then {
AAJ00714 L     R2,76(R12)   LINE2
         TM    1085(R2),8   PROCEDURECONSUMED
         JNE   AAJ00715
*S480: line2->Bits->ProcedureConsumed:=1;
         L     R3,76(R12)   LINE2
         OI    1085(R3),8   PROCEDURECONSUMED
*S481: procedureCount+=line2->ServiceUnitsPay;
         L     R4,76(R12)   LINE2
         L     R5,104(R12)   PROCEDURECOUNT
         A     R5,568(R4)   SERVICEUNITSPAY
         ST    R5,104(R12)   PROCEDURECOUNT
*S482: }
*S484: }
*S485: break;
AAJ00715 EQU   *
AAJ00716 J     AAJ00719
AAJ00717 MVC   60(2,R13),66(R11)   7
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00718
         L     R3,64(R13)
         MVC   3868(2,R9),0(R3)
         AHI   R13,72
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3884(2,R9),7(R3)
         MVC   3888(4,R9),9(R3)
AAJ00718 ST    R2,96(R12)   RC
         J     AAJ00709
AAJ00719 EQU   *
AAJ00720 EQU   *
AAJ00721 EQU   *
AAJ00722 L     R2,8(R9)   ITEM2
         LTR   R2,R2
         JE    AAJ00723
         L     R2,8(R2)
AAJ00723 ST    R2,8(R9)   ITEM2
         J     AAJ00707
AAJ00724 EQU   *
AAJ00725 EQU   *
AAJ00726 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAJ00727
         L     R2,8(R2)
AAJ00727 ST    R2,4(R9)   ITEM
         J     AAJ00706
*S486: }
*S487: }
*S489: }
*S490: }
*S491: }
*S492: }
*message "Drug Count: %i, SG Count: %i", drugCount, procedureCount;
* AT LEAST ONE PAIRED PROCEDURE EXISTS
*S496: if( procedureCount ) then {
AAJ00728 L     R15,104(R12)   PROCEDURECOUNT
         LTR   R15,R15
         JE    AAJ00767
*S497: procedures:=new reference to struct OffsetAmountStruct[procedur
         LA    R2,64(R12)
         MVC   60(4,R13),104(R12)   PROCEDURECOUNT
         MVC   64(4,R13),36(R11)   20
         ST    R2,68(R13)
         L     R15,40(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LR    R4,R3
         L     R5,104(R12)   PROCEDURECOUNT
AAJ00729 XC    0(12,R4),0(R4)
         ST    R2,12(R4)
         XC    16(4,R4),16(R4)
         LA    R4,20(R4)
         BRCT  R5,AAJ00729
         ST    R3,84(R12)   PROCEDURES
*S498: reset procedureCount;
         XC    104(4,R12),104(R12)
*S499: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R6,28(R9)   LINES
         ST    R6,4(R9)   ITEM
AAJ00730 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAJ00748
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAJ00748
*S500: if( line->Bits->ProcedureConsumed ) then {
         L     R2,72(R12)   LINE
         TM    1085(R2),8   PROCEDURECONSUMED
         JE    AAJ00745
*S502: apc:=do GAPC.GetLookupApc( line );
         LA    R14,116(R12)   APC
         ST    R14,60(R13)
         LA    R14,72(R12)   LINE
         ST    R14,64(R13)
         L     R15,8(R11)   GAPCC103
         BASR  R14,R15
*S503: if( apc ) then {
         LA    R14,116(R12)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,12(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAJ00744
* LOOKUP THE OFFSET AMOUNT FOR THE CURRENT LINE IF A VALID APC VALUE I
*S505: loop( rc:=select OffsetApcTbl using byGroupId( OffsetApcGroup->
         MVC   60(2,R13),60(R11)   4
         MVC   62(2,R13),62(R11)   1
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         MVI   0(R4),1
         LA    R5,69(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,116(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00731
         L     R7,64(R13)
         MVC   3868(2,R9),0(R7)
         AHI   R13,80
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3884(2,R9),7(R7)
         MVC   3888(4,R9),9(R7)
AAJ00731 ST    R6,96(R12)   RC
AAJ00732 L     R2,96(R12)   RC
         CHI   R2,1
         JNL   AAJ00740
*S506: if( OffsetApcTbl->GroupId = OffsetApcGroup->RADIO_PHARM
         CLI   3868(R9),1   GROUPID
         JNE   AAJ00737
         LA    R14,3872(R9)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00737
*S507: and OffsetApcTbl->Apc = apc ) then {
*S508: if( base->Version < OffsetApcTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3884(R9),128   LOVERSION
         JE    AAJ00733
         LHI   R14,-1
AAJ00733 IC    R14,3884(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00735
         XR    R3,R3
         TM    3885(R9),128   HIVERSION
         JE    AAJ00734
         LHI   R3,-1
AAJ00734 IC    R3,3885(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00736
*S509: or OffsetApcTbl->HiVersion < base->Version ) then continue;
AAJ00735 J     AAJ00738
*S510: amount:=OffsetApcTbl->Amount;
AAJ00736 L     R2,3888(R9)   AMOUNT
         ST    R2,112(R12)   AMOUNT
*S511: }
*S512: break;
AAJ00737 J     AAJ00740
AAJ00738 MVC   60(2,R13),66(R11)   7
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,20(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00739
         L     R3,64(R13)
         MVC   3868(2,R9),0(R3)
         AHI   R13,72
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),24(R11)   5
         L     R15,28(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3884(2,R9),7(R3)
         MVC   3888(4,R9),9(R3)
AAJ00739 ST    R2,96(R12)   RC
         J     AAJ00732
*S513: }
* ADD AN ENTRY FOR EACH PAYABLE UNIT INTO THE procedures ARRAY
*S516: loop( i:=0; i < line->ServiceUnitsPay; i+=1 ){
AAJ00740 XC    88(4,R12),88(R12)   I
AAJ00741 L     R2,72(R12)   LINE
         L     R3,88(R12)   I
         C     R3,568(R2)   SERVICEUNITSPAY
         JNL   AAJ00743
*S517: procedures[procedureCount] :=new struct OffsetAmountStruct;
         L     R4,84(R12)   PROCEDURES
         L     R5,104(R12)   PROCEDURECOUNT
         MHI   R5,4
         AR    R4,R5
         LA    R6,64(R12)
         MVC   60(4,R13),44(R11)   1
         MVC   64(4,R13),36(R11)   20
         ST    R6,68(R13)
         L     R15,40(R11)   DMNNEW
         BASR  R14,R15
         L     R7,60(R13)
         XC    0(12,R7),0(R7)
         ST    R6,12(R7)
         XC    16(4,R7),16(R7)
         ST    R7,0(R4)   PROCEDURES
*S518: offset :=procedures[procedureCount];
         ST    R7,80(R12)   OFFSET
*S519: offset->apc :=apc;
         L     R8,80(R12)   OFFSET
         LA    R14,4(R8)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S520: offset->amount :=amount;
         L     R2,80(R12)   OFFSET
         L     R3,112(R12)   AMOUNT
         ST    R3,16(R2)   AMOUNT
*S521: procedureCount +=1;
         LHI   R4,1
         A     R4,104(R12)   PROCEDURECOUNT
         ST    R4,104(R12)   PROCEDURECOUNT
AAJ00742 LHI   R2,1
         A     R2,88(R12)   I
         ST    R2,88(R12)   I
         J     AAJ00741
AAJ00743 EQU   *
AAJ00744 EQU   *
AAJ00745 EQU   *
AAJ00746 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAJ00747
         L     R2,8(R2)
AAJ00747 ST    R2,4(R9)   ITEM
         J     AAJ00730
*S522: }
*S523: }
*S525: }
*S526: }
* SORT BY AMOUNT FROM HIGHEST TO LOWEST
*S529: loop( i:=1; i<procedureCount; i+=1 ){
AAJ00748 MVC   88(4,R12),44(R11)   1
AAJ00749 L     R2,88(R12)   I
         C     R2,104(R12)   PROCEDURECOUNT
         JNL   AAJ00755
*S530: loop( j:=0; j<procedureCount-1; j+=1 ){
         XC    92(4,R12),92(R12)   J
AAJ00750 L     R2,104(R12)   PROCEDURECOUNT
         AHI   R2,-1
         C     R2,92(R12)   J
         JNH   AAJ00753
*S531: if( procedures[j]->amount < procedures[j+1]->amount ) then {
         L     R3,84(R12)   PROCEDURES
         L     R4,92(R12)   J
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   PROCEDURES
         LHI   R6,1
         A     R6,92(R12)   J
         L     R7,84(R12)   PROCEDURES
         MHI   R6,4
         AR    R7,R6
         L     R8,0(R7)   PROCEDURES
         L     R2,16(R5)   AMOUNT
         C     R2,16(R8)   AMOUNT
         JNL   AAJ00751
*S532: offset :=procedures[j];
         L     R3,84(R12)   PROCEDURES
         L     R4,92(R12)   J
         MHI   R4,4
         AR    R3,R4
         MVC   80(4,R12),0(R3)   PROCEDURES
*S533: procedures[j] :=procedures[j+1];
         L     R5,84(R12)   PROCEDURES
         L     R6,92(R12)   J
         MHI   R6,4
         AR    R5,R6
         LHI   R7,1
         A     R7,92(R12)   J
         L     R8,84(R12)   PROCEDURES
         MHI   R7,4
         AR    R8,R7
         MVC   0(4,R5),0(R8)   PROCEDURES
*S534: procedures[j+1] :=offset;
         LHI   R2,1
         A     R2,92(R12)   J
         L     R3,84(R12)   PROCEDURES
         MHI   R2,4
         AR    R3,R2
         MVC   0(4,R3),80(R12)   OFFSET
AAJ00751 EQU   *
AAJ00752 LHI   R2,1
         A     R2,92(R12)   J
         ST    R2,92(R12)   J
         J     AAJ00750
AAJ00753 EQU   *
AAJ00754 LHI   R2,1
         A     R2,88(R12)   I
         ST    R2,88(R12)   I
         J     AAJ00749
*S535: }
*S536: }
*S537: }
* CHOOSE THE LESSER OF NUCLEAR MEDICINE PROCEDURE UNITS OR PASS-THROUG
* SUM THAT MANY OFFSET AMOUNTS FROM THE HIGHEST TO LOWEST OFFSETS
*message "Choosing (drug:%i/procedure:%i)", drugCount, procedureCount;
*S542: reset amount;
AAJ00755 XC    112(4,R12),112(R12)
*S543: count := ( drugCount < procedureCount ) ? drugCount : procedure
         L     R2,100(R12)   DRUGCOUNT
         C     R2,104(R12)   PROCEDURECOUNT
         JL    AAJ00756
         L     R2,104(R12)   PROCEDURECOUNT
         J     AAJ00757
AAJ00756 L     R2,100(R12)   DRUGCOUNT
AAJ00757 ST    R2,108(R12)   COUNT
*S544: loop( i:=0; i<count; i+=1 ){
         XC    88(4,R12),88(R12)   I
AAJ00758 L     R2,88(R12)   I
         C     R2,108(R12)   COUNT
         JNL   AAJ00760
*S545: amount+=procedures[i]->amount;
         L     R3,84(R12)   PROCEDURES
         L     R4,88(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   PROCEDURES
         L     R6,112(R12)   AMOUNT
         A     R6,16(R5)   AMOUNT
         ST    R6,112(R12)   AMOUNT
AAJ00759 LHI   R2,1
         A     R2,88(R12)   I
         ST    R2,88(R12)   I
         J     AAJ00758
*S546: }
* ASSIGN TO NEXT AVAILABLE SLOT AND SET PAF ON PROCEDURE LINES (WILL A
*S549: if( not claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1
AAJ00760 LA    R14,2040(R9)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,12(R11)   DMNSLOG
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAJ00766
*S550: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1ST]->val
         LA    R14,2040(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   QR
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   2
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S551: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1ST]->amo
         L     R3,112(R12)   AMOUNT
         ST    R3,2052(R9)   AMOUNT
*S552: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R4,28(R9)   LINES
         ST    R4,4(R9)   ITEM
AAJ00761 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAJ00765
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),56(R11)   10
         MVC   66(2,R13),58(R11)   1120
         L     R15,4(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,72(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAJ00765
*S553: if( line->Bits->PassThroughConsumed ) then {
         L     R2,72(R12)   LINE
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JE    AAJ00762
*S554: line->PayAdjFlag:=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFFSET
         L     R3,72(R12)   LINE
         MVC   544(4,R3),48(R11)   18
AAJ00762 EQU   *
AAJ00763 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAJ00764
         L     R2,8(R2)
AAJ00764 ST    R2,4(R9)   ITEM
         J     AAJ00761
AAJ00765 EQU   *
AAJ00766 EQU   *
AAJ00767 EQU   *
AAJ00768 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,52(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC108
**************************
GAPCC108 CSECT
GAPCC108 AMODE ANY
GAPCC108 RMODE ANY
*XREF - GAPCC108 GAPC.DrugOffset
*  R11 + 0000 Literals        (76 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (60 bytes)
*        0072(R12)-> reference to Struct len 628 (day)
*        0076(R12)-> reference to Struct len 1120 (line1)
*        0080(R12)-> reference to Struct len 1120 (line2)
*        0084(R12)-> reference to Struct len 20 (offset)
*        0088(R12)-> reference to Reference len 4 (procedures)
*        0092(R12)-> Integer len 4 (i)
*        0096(R12)-> Integer len 4 (j)
*        0100(R12)-> Integer len 4 (rc)
*        0104(R12)-> Integer len 4 (drugCount)
*        0108(R12)-> Integer len 4 (procedureCount)
*        0112(R12)-> Integer len 4 (count)
*        0116(R12)-> Integer len 4 (amount)
*        0120(R12)-> String (apc)
*        0132(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 136)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,136  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAJ00803
         DC    A(GAPCC102) @00000
         DC    A(GAPCC103) @00004
         DC    A(DMNSLOG) @00008
         DC    A(DMNSCPY) @00012
         DC    A(DMNSEL) @00016
         DC    F'5' @00020
         DC    A(DMNSCPYX) @00024
         DC    A(DMNSCMP) @00028
         DC    F'20' @00032
         DC    A(DMNNEW) @00036
         DC    F'1' @00040
         DC    A(GAPCC106) @00044
         DC    F'18' @00048
         DC    F'19' @00052
         DC    A(DMNFREE) @00056
         DC    H'4'  0 4 @00060
         DC    H'1'  0 1 @00062
         DC    H'5'  0 5 @00064
         DC    H'7'  0 7 @00066
         DC    H'2'  0 2 @00068
         DC    CL2'QR' @00070
         DC    CL2'QS' @00072
         DC    CL2'QT' @00074
AAJ00803 XC    64(8,R12),64(R12)
         LA    R2,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R2,44(R10)
         XC    72(56,R12),72(R12)
         ST    R2,128(R12)
*message "--------DRUG OFFSET------------";
*S573: do GAPC.ClearOffsetFlags();
         L     R15,0(R11)   GAPCC102
         BASR  R14,R15
*S574: loop( day:=base->firstVisit; day; day:=day->nextVisit ){
         MVC   72(4,R12),60(R9)   FIRSTVISIT
AAJ00806 L     R15,72(R12)   DAY
         LTR   R15,R15
         JE    AAJ00862
*message "--------NEW DAY------------";
* COUNT UP ALL PASS-THROUGH DRUGS THAT CAN SUCCESSFULLY PAIR WITH AT L
* NOTE: FOR THE DRUG LINES, ONLY COUNT OCCURRENCES, NOT UNITS.
*S579: reset drugCount;
         XC    104(4,R12),104(R12)
*S580: reset procedureCount;
         XC    108(4,R12),108(R12)
*S581: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R2,72(R12)   DAY
         MVC   76(4,R12),8(R2)   FIRSTDAYSITEMS
AAJ00807 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00828
* SEARCH ALL LISTS FOR A PAIRING, AGAIN, WE ONLY NEED ONE PER PASS-THR
*S584: if( line1->flags->PassthroughSkinProduct
         L     R2,76(R12)   LINE1
         TM    1097(R2),1   PASSTHROUGHSKINPRODUCT
         JNE   AAJ00808
         L     R3,76(R12)   LINE1
         TM    1098(R3),128   PASSTHROUGHCONTRAST
         JNE   AAJ00808
         L     R2,76(R12)   LINE1
         TM    1098(R2),64   PASSTHROUGHSTRESSAGENT
         JE    AAJ00826
*S585: or line1->flags->PassthroughContrast
*S586: or line1->flags->PassthroughStressAgent ) then {
*S588: loop( line2:=day->firstDaysItems; line2; line2:=line2->nextSame
AAJ00808 L     R2,72(R12)   DAY
         MVC   80(4,R12),8(R2)   FIRSTDAYSITEMS
AAJ00809 L     R15,80(R12)   LINE2
         LTR   R15,R15
         JE    AAJ00825
*S589: if( line1<>line2 ) then {
         L     R2,76(R12)   LINE1
         C     R2,80(R12)   LINE2
         JE    AAJ00823
* ATTEMPT TO FIND A PAIRING IN THE OFFSET TABLE
*S592: apc:=do GAPC.GetLookupApc( line2 );
         LA    R14,120(R12)   APC
         ST    R14,60(R13)
         LA    R14,80(R12)   LINE2
         ST    R14,64(R13)
         L     R15,4(R11)   GAPCC103
         BASR  R14,R15
*S593: if( apc ) then {
         LA    R14,120(R12)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAJ00822
*message "DRUG=%s GROUP=%i", line1->Hcpcs, OffsetApcGroup->DRUG_BIOLOG
*S595: loop( rc:=select OffsetApcTbl using byGroupId( OffsetApcGroup->
         MVC   60(2,R13),60(R11)   4
         MVC   62(2,R13),62(R11)   1
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         MVI   0(R4),2
         LA    R5,69(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,120(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00810
         L     R7,64(R13)
         MVC   3868(2,R9),0(R7)
         AHI   R13,80
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3884(2,R9),7(R7)
         MVC   3888(4,R9),9(R7)
AAJ00810 ST    R6,100(R12)   RC
AAJ00811 L     R2,100(R12)   RC
         CHI   R2,1
         JNL   AAJ00821
*S596: if( OffsetApcTbl->GroupId = OffsetApcGroup->DRUG_BIOLOGICAL
         CLI   3868(R9),2   GROUPID
         JNE   AAJ00818
         LA    R14,3872(R9)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00818
*S597: and OffsetApcTbl->Apc = apc ) then {
*S599: if( base->Version < OffsetApcTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3884(R9),128   LOVERSION
         JE    AAJ00812
         LHI   R14,-1
AAJ00812 IC    R14,3884(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00814
         XR    R3,R3
         TM    3885(R9),128   HIVERSION
         JE    AAJ00813
         LHI   R3,-1
AAJ00813 IC    R3,3885(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00815
*S600: or OffsetApcTbl->HiVersion < base->Version ) then continue;
AAJ00814 J     AAJ00819
*message "\tCount HCPCS=%s APC=%i AMT=%i", line2->Hcpcs, apc, OffsetAp
*S603: if( not line1->Bits->PassThroughConsumed ) then {
AAJ00815 L     R2,76(R12)   LINE1
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JNE   AAJ00816
*S604: line1->Bits->PassThroughConsumed:=1;
         L     R3,76(R12)   LINE1
         OI    1085(R3),16   PASSTHROUGHCONSUMED
*S605: drugCount+=1;
         LHI   R4,1
         A     R4,104(R12)   DRUGCOUNT
         ST    R4,104(R12)   DRUGCOUNT
*S606: }
*S608: if( not line2->Bits->ProcedureConsumed ) then {
AAJ00816 L     R2,80(R12)   LINE2
         TM    1085(R2),8   PROCEDURECONSUMED
         JNE   AAJ00817
*S609: line2->Bits->ProcedureConsumed:=1;
         L     R3,80(R12)   LINE2
         OI    1085(R3),8   PROCEDURECONSUMED
*S610: procedureCount+=line2->ServiceUnitsPay;
         L     R4,80(R12)   LINE2
         L     R5,108(R12)   PROCEDURECOUNT
         A     R5,568(R4)   SERVICEUNITSPAY
         ST    R5,108(R12)   PROCEDURECOUNT
*S611: }
*S613: }
*S614: break;
AAJ00817 EQU   *
AAJ00818 J     AAJ00821
AAJ00819 MVC   60(2,R13),66(R11)   7
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00820
         L     R3,64(R13)
         MVC   3868(2,R9),0(R3)
         AHI   R13,72
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3884(2,R9),7(R3)
         MVC   3888(4,R9),9(R3)
AAJ00820 ST    R2,100(R12)   RC
         J     AAJ00811
AAJ00821 EQU   *
AAJ00822 EQU   *
AAJ00823 EQU   *
AAJ00824 L     R2,80(R12)   LINE2
         MVC   80(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00809
AAJ00825 EQU   *
AAJ00826 EQU   *
AAJ00827 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00807
*S615: }
*S616: }
*S618: }
*S619: }
*S620: }
*S622: }
*message "Drug Count: %i, SG Count: %i", drugCount, procedureCount;
* AT LEAST ONE PAIRED PROCEDURE EXISTS
*S626: if( procedureCount ) then {
AAJ00828 L     R15,108(R12)   PROCEDURECOUNT
         LTR   R15,R15
         JE    AAJ00860
*S627: procedures :=new reference to struct OffsetAmountStruct[procedu
         LA    R2,64(R12)
         MVC   60(4,R13),108(R12)   PROCEDURECOUNT
         MVC   64(4,R13),32(R11)   20
         ST    R2,68(R13)
         L     R15,36(R11)   DMNNEW
         BASR  R14,R15
         L     R3,60(R13)
         LR    R4,R3
         L     R5,108(R12)   PROCEDURECOUNT
AAJ00829 XC    0(12,R4),0(R4)
         ST    R2,12(R4)
         XC    16(4,R4),16(R4)
         LA    R4,20(R4)
         BRCT  R5,AAJ00829
         ST    R3,88(R12)   PROCEDURES
*S628: day->Bits->HasOffset:=1;
         L     R6,72(R12)   DAY
         OI    627(R6),128   HASOFFSET
*S630: reset procedureCount;
         XC    108(4,R12),108(R12)
*S631: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R7,72(R12)   DAY
         MVC   76(4,R12),8(R7)   FIRSTDAYSITEMS
AAJ00830 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00847
*S632: if( line1->Bits->ProcedureConsumed ) then {
         L     R2,76(R12)   LINE1
         TM    1085(R2),8   PROCEDURECONSUMED
         JE    AAJ00845
*S634: apc:=do GAPC.GetLookupApc( line1 );
         LA    R14,120(R12)   APC
         ST    R14,60(R13)
         LA    R14,76(R12)   LINE1
         ST    R14,64(R13)
         L     R15,4(R11)   GAPCC103
         BASR  R14,R15
*S635: if( apc ) then {
         LA    R14,120(R12)   APC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAJ00844
* LOOKUP THE OFFSET AMOUNT FOR THE CURRENT LINE IF A VALID APC VALUE I
*S637: loop( rc:=select OffsetApcTbl using byGroupId( OffsetApcGroup->
         MVC   60(2,R13),60(R11)   4
         MVC   62(2,R13),62(R11)   1
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         MVI   0(R4),2
         LA    R5,69(R13)
         AHI   R13,80
         ST    R5,60(R13)
         MVC   68(2,R13),64(R11)   5
         LA    R14,120(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
         CHI   R6,1
         JH    AAJ00831
         L     R7,64(R13)
         MVC   3868(2,R9),0(R7)
         AHI   R13,80
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R7)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3884(2,R9),7(R7)
         MVC   3888(4,R9),9(R7)
AAJ00831 ST    R6,100(R12)   RC
AAJ00832 L     R2,100(R12)   RC
         CHI   R2,1
         JNL   AAJ00840
*S638: if( OffsetApcTbl->GroupId = OffsetApcGroup->DRUG_BIOLOGICAL
         CLI   3868(R9),2   GROUPID
         JNE   AAJ00837
         LA    R14,3872(R9)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,28(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00837
*S639: and OffsetApcTbl->Apc = apc ) then {
*S640: if( base->Version < OffsetApcTbl->LoVersion
         L     R2,1868(R9)   VERSION
         XR    R14,R14
         TM    3884(R9),128   LOVERSION
         JE    AAJ00833
         LHI   R14,-1
AAJ00833 IC    R14,3884(R9)   LOVERSION
         CR    R2,R14
         JL    AAJ00835
         XR    R3,R3
         TM    3885(R9),128   HIVERSION
         JE    AAJ00834
         LHI   R3,-1
AAJ00834 IC    R3,3885(R9)   HIVERSION
         C     R3,1868(R9)   VERSION
         JNL   AAJ00836
*S641: or OffsetApcTbl->HiVersion < base->Version ) then continue;
AAJ00835 J     AAJ00838
*S642: amount:=OffsetApcTbl->Amount;
AAJ00836 L     R2,3888(R9)   AMOUNT
         ST    R2,116(R12)   AMOUNT
*S643: }
*S644: break;
AAJ00837 J     AAJ00840
AAJ00838 MVC   60(2,R13),66(R11)   7
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,16(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAJ00839
         L     R3,64(R13)
         MVC   3868(2,R9),0(R3)
         AHI   R13,72
         LA    R14,3872(R9)   OFFSETAPCTBL
         ST    R14,60(R13)
         LA    R14,2(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   5
         L     R15,24(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3884(2,R9),7(R3)
         MVC   3888(4,R9),9(R3)
AAJ00839 ST    R2,100(R12)   RC
         J     AAJ00832
*S645: }
* ADD AN ENTRY FOR EACH PAYABLE UNIT INTO THE procedures ARRAY
*S648: loop( i:=0; i < line1->ServiceUnitsPay; i+=1 ){
AAJ00840 XC    92(4,R12),92(R12)   I
AAJ00841 L     R2,76(R12)   LINE1
         L     R3,92(R12)   I
         C     R3,568(R2)   SERVICEUNITSPAY
         JNL   AAJ00843
*S649: procedures[procedureCount] :=new struct OffsetAmountStruct;
         L     R4,88(R12)   PROCEDURES
         L     R5,108(R12)   PROCEDURECOUNT
         MHI   R5,4
         AR    R4,R5
         LA    R6,64(R12)
         MVC   60(4,R13),40(R11)   1
         MVC   64(4,R13),32(R11)   20
         ST    R6,68(R13)
         L     R15,36(R11)   DMNNEW
         BASR  R14,R15
         L     R7,60(R13)
         XC    0(12,R7),0(R7)
         ST    R6,12(R7)
         XC    16(4,R7),16(R7)
         ST    R7,0(R4)   PROCEDURES
*S650: offset :=procedures[procedureCount];
         ST    R7,84(R12)   OFFSET
*S651: offset->apc :=apc;
         L     R8,84(R12)   OFFSET
         LA    R14,4(R8)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,120(R12)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S652: offset->amount :=amount;
         L     R2,84(R12)   OFFSET
         L     R3,116(R12)   AMOUNT
         ST    R3,16(R2)   AMOUNT
*S653: procedureCount +=1;
         LHI   R4,1
         A     R4,108(R12)   PROCEDURECOUNT
         ST    R4,108(R12)   PROCEDURECOUNT
AAJ00842 LHI   R2,1
         A     R2,92(R12)   I
         ST    R2,92(R12)   I
         J     AAJ00841
AAJ00843 EQU   *
AAJ00844 EQU   *
AAJ00845 EQU   *
AAJ00846 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00830
*S654: }
*S655: }
*S657: }
*S658: }
* SORT BY AMOUNT FROM HIGHEST TO LOWEST
*S661: loop( i:=1; i<procedureCount; i+=1 ){
AAJ00847 MVC   92(4,R12),40(R11)   1
AAJ00848 L     R2,92(R12)   I
         C     R2,108(R12)   PROCEDURECOUNT
         JNL   AAJ00854
*S662: loop( j:=0; j<procedureCount-1; j+=1 ){
         XC    96(4,R12),96(R12)   J
AAJ00849 L     R2,108(R12)   PROCEDURECOUNT
         AHI   R2,-1
         C     R2,96(R12)   J
         JNH   AAJ00852
*S663: if( procedures[j]->amount < procedures[j+1]->amount ) then {
         L     R3,88(R12)   PROCEDURES
         L     R4,96(R12)   J
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   PROCEDURES
         LHI   R6,1
         A     R6,96(R12)   J
         L     R7,88(R12)   PROCEDURES
         MHI   R6,4
         AR    R7,R6
         L     R8,0(R7)   PROCEDURES
         L     R2,16(R5)   AMOUNT
         C     R2,16(R8)   AMOUNT
         JNL   AAJ00850
*S664: offset :=procedures[j];
         L     R3,88(R12)   PROCEDURES
         L     R4,96(R12)   J
         MHI   R4,4
         AR    R3,R4
         MVC   84(4,R12),0(R3)   PROCEDURES
*S665: procedures[j] :=procedures[j+1];
         L     R5,88(R12)   PROCEDURES
         L     R6,96(R12)   J
         MHI   R6,4
         AR    R5,R6
         LHI   R7,1
         A     R7,96(R12)   J
         L     R8,88(R12)   PROCEDURES
         MHI   R7,4
         AR    R8,R7
         MVC   0(4,R5),0(R8)   PROCEDURES
*S666: procedures[j+1] :=offset;
         LHI   R2,1
         A     R2,96(R12)   J
         L     R3,88(R12)   PROCEDURES
         MHI   R2,4
         AR    R3,R2
         MVC   0(4,R3),84(R12)   OFFSET
AAJ00850 EQU   *
AAJ00851 LHI   R2,1
         A     R2,96(R12)   J
         ST    R2,96(R12)   J
         J     AAJ00849
AAJ00852 EQU   *
AAJ00853 LHI   R2,1
         A     R2,92(R12)   I
         ST    R2,92(R12)   I
         J     AAJ00848
*S667: }
*S668: }
*S669: }
*S671: /*loop( i:=0; i<procedureCount; i+=1 ){
*S672:     message "APC:%i Amount:%i", procedures[i]->Apc, procedures[
*S673:    }*/
* TAKE THE LESSER OF DRUG OCCURRENCES OR PROCEDURE UNITS FOR THE DAY A
* SET THE DAY OFFSET TOTAL TO THIS AMOUNT
*message "Choosing (drug:%i/procedure:%i)", drugCount, procedureCount;
*S678: count := ( drugCount < procedureCount ) ? drugCount : procedure
AAJ00854 L     R2,104(R12)   DRUGCOUNT
         C     R2,108(R12)   PROCEDURECOUNT
         JL    AAJ00855
         L     R2,108(R12)   PROCEDURECOUNT
         J     AAJ00856
AAJ00855 L     R2,104(R12)   DRUGCOUNT
AAJ00856 ST    R2,112(R12)   COUNT
*S679: loop( i:=0; i<count; i+=1 ){
         XC    92(4,R12),92(R12)   I
AAJ00857 L     R2,92(R12)   I
         C     R2,112(R12)   COUNT
         JNL   AAJ00859
*S680: day->offsetTotal+=procedures[i]->amount;
         L     R3,72(R12)   DAY
         L     R4,72(R12)   DAY
         L     R5,88(R12)   PROCEDURES
         L     R6,92(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,0(R5)   PROCEDURES
         L     R8,40(R4)   OFFSETTOTAL
         A     R8,16(R7)   AMOUNT
         ST    R8,40(R3)   OFFSETTOTAL
AAJ00858 LHI   R2,1
         A     R2,92(R12)   I
         ST    R2,92(R12)   I
         J     AAJ00857
AAJ00859 EQU   *
AAJ00860 EQU   *
AAJ00861 L     R2,72(R12)   DAY
         MVC   72(4,R12),0(R2)   NEXTVISIT
         J     AAJ00806
*S681: }
*message "day->offsetTotal=%i",day->offsetTotal;
*S684: }
*S686: }
* ASSIGN HIGHEST PAYING OFFSET TO NEXT AVAILABLE SLOT(S) AND SET PAF O
*S689: loop( day:=do GAPC.GetNextHighestPayingOffsetDay(); day<>base->
AAJ00862 LA    R14,72(R12)   DAY
         ST    R14,60(R13)
         L     R15,44(R11)   GAPCC106
         BASR  R14,R15
AAJ00863 L     R2,72(R12)   DAY
         C     R2,84(R9)   NODAY
         JE    AAJ00883
* NOTE: QR MAY ALREADY BE OCCUPIED WITH RADIOPHARM OFFSET DATA, IN WHI
* DRUGS AND BIOLOGICALS
*S693: if( not claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1
         LA    R14,2040(R9)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAJ00868
*S694: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1ST]->val
         LA    R14,2040(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,70(R11)   QR
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   2
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S695: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_1ST]->amo
         L     R4,72(R12)   DAY
         L     R5,40(R4)   OFFSETTOTAL
         ST    R5,2052(R9)   AMOUNT
*S696: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R6,72(R12)   DAY
         MVC   76(4,R12),8(R6)   FIRSTDAYSITEMS
AAJ00864 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00867
*S697: if( line1->Bits->PassThroughConsumed ) then {
         L     R2,76(R12)   LINE1
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JE    AAJ00865
*S698: line1->PayAdjFlag:=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFFSE
         L     R3,76(R12)   LINE1
         MVC   544(4,R3),48(R11)   18
AAJ00865 EQU   *
AAJ00866 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00864
*S699: }
*S700: }
*S701: day->Bits->HasOffset:=0;
AAJ00867 L     R2,72(R12)   DAY
         NI    627(R2),127   HASOFFSET
         J     AAJ00881
*S702: }
*S703: else if( not claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFF
AAJ00868 LA    R14,2056(R9)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNSLOG
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAJ00873
*S704: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_2ND]->val
         LA    R14,2056(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R11)   QS
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   2
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S705: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_2ND]->amo
         L     R3,72(R12)   DAY
         L     R4,40(R3)   OFFSETTOTAL
         ST    R4,2068(R9)   AMOUNT
*S706: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R5,72(R12)   DAY
         MVC   76(4,R12),8(R5)   FIRSTDAYSITEMS
AAJ00869 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00872
*S707: if( line1->Bits->PassThroughConsumed ) then {
         L     R2,76(R12)   LINE1
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JE    AAJ00870
*S708: line1->PayAdjFlag:=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFFSE
         L     R3,76(R12)   LINE1
         MVC   544(4,R3),52(R11)   19
AAJ00870 EQU   *
AAJ00871 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00869
*S709: }
*S710: }
*S711: day->Bits->HasOffset:=0;
AAJ00872 L     R2,72(R12)   DAY
         NI    627(R2),127   HASOFFSET
         J     AAJ00880
*S712: }
*S713: else if( not claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFF
AAJ00873 LA    R14,2072(R9)   VALUE
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,8(R11)   DMNSLOG
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAJ00878
*S714: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_3RD]->val
         LA    R14,2072(R9)   VALUE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,74(R11)   QT
         ST    R14,64(R13)
         MVC   70(2,R13),68(R11)   2
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S715: claim->ValueCodeSet[ValueCode->DRUG_BIOLOGICAL_OFFSET_3RD]->amo
         L     R3,72(R12)   DAY
         L     R4,40(R3)   OFFSETTOTAL
         ST    R4,2084(R9)   AMOUNT
*S716: loop( line1:=day->firstDaysItems; line1; line1:=line1->nextSame
         L     R5,72(R12)   DAY
         MVC   76(4,R12),8(R5)   FIRSTDAYSITEMS
AAJ00874 L     R15,76(R12)   LINE1
         LTR   R15,R15
         JE    AAJ00877
*S717: if( line1->Bits->PassThroughConsumed ) then {
         L     R2,76(R12)   LINE1
         TM    1085(R2),16   PASSTHROUGHCONSUMED
         JE    AAJ00875
*S718: line1->PayAdjFlag:=PaymentAdjustments->DRUG_OR_BIOLOGICAL_OFFSE
         L     R3,76(R12)   LINE1
         MVC   544(4,R3),32(R11)   20
AAJ00875 EQU   *
AAJ00876 L     R2,76(R12)   LINE1
         MVC   76(4,R12),0(R2)   NEXTSAMEDAY
         J     AAJ00874
*S719: }
*S720: }
*S721: day->Bits->HasOffset:=0;
AAJ00877 L     R2,72(R12)   DAY
         NI    627(R2),127   HASOFFSET
         J     AAJ00879
*S722: }
*S723: else break;% NO MORE SLOTS AVAILABLE, BREAK
AAJ00878 J     AAJ00883
AAJ00879 EQU   *
AAJ00880 EQU   *
AAJ00881 EQU   *
AAJ00882 LA    R14,72(R12)   DAY
         ST    R14,60(R13)
         L     R15,44(R11)   GAPCC106
         BASR  R14,R15
         J     AAJ00863
AAJ00883 EQU   *
AAJ00884 LA    R3,64(R12)
         ST    R3,60(R13)
         L     R15,56(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAK
**************************
*    GAPCC109
**************************
GAPCC109 CSECT
GAPCC109 AMODE ANY
GAPCC109 RMODE ANY
*XREF - GAPCC109 GAPC.open
*  R11 + 0000 Literals        (1072 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*  R12 + 0064 Local pool      (8 bytes)
*  R12 + 0072 Locals & temps  (16 bytes)
*        0072(R12)-> String (ident)
*        0084(R12)-> Integer len 4 (rc)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAK00103
         DC    A(DMNLOAD) @00000
         DC    F'5' @00004
         DC    A(DMNSRPQ) @00008
         DC    F'6' @00012
         DC    A(DMNSCMP) @00016
         DC    F'7' @00020
         DC    A(DMNSCPY) @00024
         DC    F'8' @00028
         DC    A(DMNSEL) @00032
         DC    F'9' @00036
         DC    F'10' @00040
         DC    F'11' @00044
         DC    F'12' @00048
         DC    F'13' @00052
         DC    F'14' @00056
         DC    F'15' @00060
         DC    F'16' @00064
         DC    F'17' @00068
         DC    F'20' @00072
         DC    F'21' @00076
         DC    F'22' @00080
         DC    F'23' @00084
         DC    F'24' @00088
         DC    F'25' @00092
         DC    F'26' @00096
         DC    F'27' @00100
         DC    F'28' @00104
         DC    F'29' @00108
         DC    F'36' @00112
         DC    F'37' @00116
         DC    F'38' @00120
         DC    F'39' @00124
         DC    F'40' @00128
         DC    F'41' @00132
         DC    F'42' @00136
         DC    F'43' @00140
         DC    F'48' @00144
         DC    F'49' @00148
         DC    F'50' @00152
         DC    F'51' @00156
         DC    F'52' @00160
         DC    F'53' @00164
         DC    F'54' @00168
         DC    F'55' @00172
         DC    F'56' @00176
         DC    F'57' @00180
         DC    F'58' @00184
         DC    F'59' @00188
         DC    F'60' @00192
         DC    F'61' @00196
         DC    F'62' @00200
         DC    F'63' @00204
         DC    F'64' @00208
         DC    F'65' @00212
         DC    F'66' @00216
         DC    F'67' @00220
         DC    F'68' @00224
         DC    F'69' @00228
         DC    F'30' @00232
         DC    F'31' @00236
         DC    F'32' @00240
         DC    F'33' @00244
         DC    F'34' @00248
         DC    F'35' @00252
         DC    F'102' @00256
         DC    F'103' @00260
         DC    F'46' @00264
         DC    F'47' @00268
         DC    F'44' @00272
         DC    F'45' @00276
         DC    F'18' @00280
         DC    F'19' @00284
         DC    A(DMNFREE) @00288
         DC    H'5'  0 5 @00292
         DC    H'3'  0 3 @00294
         DC    H'7'  0 7 @00296
         DC    H'4'  0 4 @00298
         DC    H'1'  0 1 @00300
         DC    H'14'  0 14 @00302
         DC    H'23'  0 23 @00304
         DC    H'16'  0 16 @00306
         DC    H'17'  0 17 @00308
         DC    H'29'  0 29 @00310
         DC    H'18'  0 18 @00312
         DC    H'21'  0 21 @00314
         DC    H'30'  0 30 @00316
         DC    H'20'  0 20 @00318
         DC    H'22'  0 22 @00320
         DC    H'25'  0 25 @00322
         DC    H'26'  0 26 @00324
         DC    H'19'  0 19 @00326
         DC    H'15'  0 15 @00328
         DC    H'28'  0 28 @00330
         DC    H'24'  0 24 @00332
         DC    CL7'/APCROT' @00334
         DC    CL14'Identification' @00341
         DC    CL23'IOCE Version 21.2 bld 1' @00355
         DC    CL16'/APCROT/DATA_APC' @00378
         DC    CL17'/APCROT/DATA_CAPC' @00394
         DC    CL29'/APCROT/DATA_DISCOUNT_FORMULA' @00411
         DC    CL17'/APCROT/DATA_DX09' @00440
         DC    CL17'/APCROT/DATA_DX10' @00457
         DC    CL18'/APCROT/DATA_HCPCS' @00474
         DC    CL21'/APCROT/DATA_MODIFIER' @00492
         DC    CL30'/APCROT/DATA_PAYMENT_INDICATOR' @00513
         DC    CL20'/APCROT/DATA_REVENUE' @00543
         DC    CL29'/APCROT/DATA_STATUS_INDICATOR' @00563
         DC    CL22'/APCROT/MAP_BIOSIMILAR' @00592
         DC    CL16'/APCROT/MAP_CAPC' @00614
         DC    CL20'/APCROT/MAP_CODEPAIR' @00630
         DC    CL21'/APCROT/MAP_COMPOSITE' @00650
         DC    CL20'/APCROT/MAP_PH_ADDON' @00671
         DC    CL29'/APCROT/MAP_MODIFIER_CONFLICT' @00691
         DC    CL16'/APCROT/MAP_NCCI' @00720
         DC    CL25'/APCROT/MAP_S603_OVERRIDE' @00736
         DC    CL26'/APCROT/MAP_STATUS_PAYMENT' @00761
         DC    CL18'/APCROT/OFFSET_APC' @00787
         DC    CL23'/APCROT/OFFSET_CODEPAIR' @00805
         DC    CL20'/APCROT/OFFSET_HCPCS' @00828
         DC    CL19'/APCROT/PBT_CONTROL' @00848
         DC    CL15'/APCROT/PBT_MAP' @00867
         DC    CL21'/APCROT/VERSION_RANGE' @00882
         DC    CL23'/APCROT/MAP_ADDON_TYPE1' @00903
         DC    CL23'/APCROT/MAP_ADDON_TYPE2' @00926
         DC    CL23'/APCROT/MAP_ADDON_TYPE3' @00949
         DC    CL28'/APCROT/MAP_ADDON_DRUG_ADMIN' @00972
         DC    CL22'/APCROT/MAP_FQHC_VISIT' @01000
         DC    CL24'/APCROT/MAP_CONFLICT_RHC' @01022
         DC    CL24'/APCROT/DATA_EDIT_BYPASS' @01046
AAK00103 XC    64(8,R12),64(R12)
         LA    R3,64(R12)
         MVC   68(4,R12),44(R10)
         ST    R3,44(R10)
         XC    72(8,R12),72(R12)
         ST    R3,80(R12)
         XC    84(4,R12),84(R12)
*S8: if(load section("/APCROT")) then return 5;
         XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,334(R11)   /APCROT
         ST    R14,68(R13)
         MVC   76(2,R13),296(R11)   7
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00106
         L     R3,60(R12)
         MVC   0(4,R3),4(R11)   5
         J     AAK00174
*S9: rc:=load("Identification", ident );
AAK00106 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),298(R11)   4
         MVC   62(2,R13),300(R11)   1
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,341(R11)   IDENTIFICATION
         ST    R14,68(R13)
         MVC   76(2,R13),302(R11)   14
         LA    R14,72(R12)   IDENT
         ST    R14,72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAK00107
         LA    R14,72(R12)   IDENT
         ST    R14,60(R13)
         L     R15,8(R11)   DMNSRPQ
         BASR  R14,R15
AAK00107 ST    R2,84(R12)   RC
*S10: if(rc) then return 6;
         LTR   R2,R2
         JE    AAK00108
         L     R3,60(R12)
         MVC   0(4,R3),12(R11)   6
         J     AAK00174
*S12: if(ident<>"IOCE Version 21.2 bld 1" ) then return 7;
AAK00108 LA    R14,72(R12)   IDENT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,355(R11)   IOCE VERSION 21.2 BLD 1
         ST    R14,64(R13)
         MVC   70(2,R13),304(R11)   23
         L     R15,16(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00109
         L     R3,60(R12)
         MVC   0(4,R3),20(R11)   7
         J     AAK00174
*S13: base->ident:=ident;
AAK00109 LA    R14,1844(R9)   IDENT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,72(R12)   IDENT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
* Data
*S16: if(load section("/APCROT/DATA_APC")) then return 8;
         XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,378(R11)   /APCROT/DATA_APC
         ST    R14,68(R13)
         MVC   76(2,R13),306(R11)   16
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00110
         L     R3,60(R12)
         MVC   0(4,R3),28(R11)   8
         J     AAK00174
*S17: if(load table(DataApcTbl)) then return 9;
AAK00110 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3064(R9)   DATAAPCTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00111
         L     R3,60(R12)
         MVC   0(4,R3),36(R11)   9
         J     AAK00174
*S19: if(load section("/APCROT/DATA_CAPC")) then return 10;
AAK00111 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,394(R11)   /APCROT/DATA_CAPC
         ST    R14,68(R13)
         MVC   76(2,R13),308(R11)   17
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00112
         L     R3,60(R12)
         MVC   0(4,R3),40(R11)   10
         J     AAK00174
*S20: if(load table(DataCAPCTbl)) then return 11;
AAK00112 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3128(R9)   DATACAPCTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00113
         L     R3,60(R12)
         MVC   0(4,R3),44(R11)   11
         J     AAK00174
*S22: if(load section("/APCROT/DATA_DISCOUNT_FORMULA")) then return 12
AAK00113 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,411(R11)   /APCROT/DATA_DISCOUNT_FORMULA
         ST    R14,68(R13)
         MVC   76(2,R13),310(R11)   29
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00114
         L     R3,60(R12)
         MVC   0(4,R3),48(R11)   12
         J     AAK00174
*S23: if(load table(DataDiscountFormulaTbl)) then return 13;
AAK00114 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3156(R9)   DATADISCOUNTFORMULATBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00115
         L     R3,60(R12)
         MVC   0(4,R3),52(R11)   13
         J     AAK00174
*S25: if(load section("/APCROT/DATA_DX09")) then return 14;
AAK00115 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,440(R11)   /APCROT/DATA_DX09
         ST    R14,68(R13)
         MVC   76(2,R13),308(R11)   17
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00116
         L     R3,60(R12)
         MVC   0(4,R3),56(R11)   14
         J     AAK00174
*S26: if(load table(DataDxTbl)) then return 15;
AAK00116 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3200(R9)   DATADXTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00117
         L     R3,60(R12)
         MVC   0(4,R3),60(R11)   15
         J     AAK00174
*S28: if(load section("/APCROT/DATA_DX10")) then return 16;
AAK00117 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,457(R11)   /APCROT/DATA_DX10
         ST    R14,68(R13)
         MVC   76(2,R13),308(R11)   17
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00118
         L     R3,60(R12)
         MVC   0(4,R3),64(R11)   16
         J     AAK00174
*S29: if(load table(DataDx10Tbl)) then return 17;
AAK00118 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3244(R9)   DATADX10TBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00119
         L     R3,60(R12)
         MVC   0(4,R3),68(R11)   17
         J     AAK00174
*S31: if(load section("/APCROT/DATA_HCPCS")) then return 20;
AAK00119 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,474(R11)   /APCROT/DATA_HCPCS
         ST    R14,68(R13)
         MVC   76(2,R13),312(R11)   18
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00120
         L     R3,60(R12)
         MVC   0(4,R3),72(R11)   20
         J     AAK00174
*S32: if(load table(DataHcpcsTbl)) then return 21;
AAK00120 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00121
         L     R3,60(R12)
         MVC   0(4,R3),76(R11)   21
         J     AAK00174
*S34: if(load section("/APCROT/DATA_MODIFIER")) then return 22;
AAK00121 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,492(R11)   /APCROT/DATA_MODIFIER
         ST    R14,68(R13)
         MVC   76(2,R13),314(R11)   21
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00122
         L     R3,60(R12)
         MVC   0(4,R3),80(R11)   22
         J     AAK00174
*S35: if(load table(DataModifierTbl)) then return 23;
AAK00122 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00123
         L     R3,60(R12)
         MVC   0(4,R3),84(R11)   23
         J     AAK00174
*S37: if(load section("/APCROT/DATA_PAYMENT_INDICATOR")) then return 2
AAK00123 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,513(R11)   /APCROT/DATA_PAYMENT_INDICATOR
         ST    R14,68(R13)
         MVC   76(2,R13),316(R11)   30
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00124
         L     R3,60(R12)
         MVC   0(4,R3),88(R11)   24
         J     AAK00174
*S38: if(load table(DataPITbl)) then return 25;
AAK00124 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3428(R9)   DATAPITBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00125
         L     R3,60(R12)
         MVC   0(4,R3),92(R11)   25
         J     AAK00174
*S40: if(load section("/APCROT/DATA_REVENUE")) then return 26;
AAK00125 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,543(R11)   /APCROT/DATA_REVENUE
         ST    R14,68(R13)
         MVC   76(2,R13),318(R11)   20
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00126
         L     R3,60(R12)
         MVC   0(4,R3),96(R11)   26
         J     AAK00174
*S41: if(load table(DataValidRevenueTbl)) then return 27;
AAK00126 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3464(R9)   DATAVALIDREVENUETBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00127
         L     R3,60(R12)
         MVC   0(4,R3),100(R11)   27
         J     AAK00174
*S43: if(load section("/APCROT/DATA_STATUS_INDICATOR")) then return 28
AAK00127 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,563(R11)   /APCROT/DATA_STATUS_INDICATOR
         ST    R14,68(R13)
         MVC   76(2,R13),310(R11)   29
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00128
         L     R3,60(R12)
         MVC   0(4,R3),104(R11)   28
         J     AAK00174
*S44: if(load table(DataSITbl)) then return 29;
AAK00128 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3504(R9)   DATASITBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00129
         L     R3,60(R12)
         MVC   0(4,R3),108(R11)   29
         J     AAK00174
* Maps
*S47: if(load section("/APCROT/MAP_BIOSIMILAR")) then return 36;
AAK00129 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,592(R11)   /APCROT/MAP_BIOSIMILAR
         ST    R14,68(R13)
         MVC   76(2,R13),320(R11)   22
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00130
         L     R3,60(R12)
         MVC   0(4,R3),112(R11)   36
         J     AAK00174
*S48: if(load table(MapBioSimilarTbl)) then return 37;
AAK00130 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3540(R9)   MAPBIOSIMILARTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00131
         L     R3,60(R12)
         MVC   0(4,R3),116(R11)   37
         J     AAK00174
*S50: if(load section("/APCROT/MAP_CAPC")) then return 38;
AAK00131 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,614(R11)   /APCROT/MAP_CAPC
         ST    R14,68(R13)
         MVC   76(2,R13),306(R11)   16
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00132
         L     R3,60(R12)
         MVC   0(4,R3),120(R11)   38
         J     AAK00174
*S51: if(load table(MapCAPCTbl)) then return 39;
AAK00132 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3576(R9)   MAPCAPCTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00133
         L     R3,60(R12)
         MVC   0(4,R3),124(R11)   39
         J     AAK00174
*S53: if(load section("/APCROT/MAP_CODEPAIR")) then return 40;
AAK00133 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,630(R11)   /APCROT/MAP_CODEPAIR
         ST    R14,68(R13)
         MVC   76(2,R13),318(R11)   20
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00134
         L     R3,60(R12)
         MVC   0(4,R3),128(R11)   40
         J     AAK00174
*S54: if(load table(MapCodePairTbl)) then return 41;
AAK00134 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00135
         L     R3,60(R12)
         MVC   0(4,R3),132(R11)   41
         J     AAK00174
*S56: if(load section("/APCROT/MAP_COMPOSITE")) then return 42;
AAK00135 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,650(R11)   /APCROT/MAP_COMPOSITE
         ST    R14,68(R13)
         MVC   76(2,R13),314(R11)   21
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00136
         L     R3,60(R12)
         MVC   0(4,R3),136(R11)   42
         J     AAK00174
*S57: if(load table(MapCompositeTbl)) then return 43;
AAK00136 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3660(R9)   MAPCOMPOSITETBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00137
         L     R3,60(R12)
         MVC   0(4,R3),140(R11)   43
         J     AAK00174
*S59: if(load section("/APCROT/MAP_PH_ADDON")) then return 48;
AAK00137 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,671(R11)   /APCROT/MAP_PH_ADDON
         ST    R14,68(R13)
         MVC   76(2,R13),318(R11)   20
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00138
         L     R3,60(R12)
         MVC   0(4,R3),144(R11)   48
         J     AAK00174
*S60: if(load table(MapPHAddonTbl)) then return 49;
AAK00138 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3760(R9)   MAPPHADDONTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00139
         L     R3,60(R12)
         MVC   0(4,R3),148(R11)   49
         J     AAK00174
*S62: if(load section("/APCROT/MAP_MODIFIER_CONFLICT")) then return 50
AAK00139 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,691(R11)   /APCROT/MAP_MODIFIER_CONFLICT
         ST    R14,68(R13)
         MVC   76(2,R13),310(R11)   29
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00140
         L     R3,60(R12)
         MVC   0(4,R3),152(R11)   50
         J     AAK00174
*S63: if(load table(MapModifierConflictTbl)) then return 51;
AAK00140 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3708(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00141
         L     R3,60(R12)
         MVC   0(4,R3),156(R11)   51
         J     AAK00174
*S65: if(load section("/APCROT/MAP_NCCI")) then return 52;
AAK00141 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,720(R11)   /APCROT/MAP_NCCI
         ST    R14,68(R13)
         MVC   76(2,R13),306(R11)   16
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00142
         L     R3,60(R12)
         MVC   0(4,R3),160(R11)   52
         J     AAK00174
*S66: if(load table(MapNCCITbl)) then return 53;
AAK00142 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3744(R9)   MAPNCCITBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00143
         L     R3,60(R12)
         MVC   0(4,R3),164(R11)   53
         J     AAK00174
*S68: if(load section("/APCROT/MAP_S603_OVERRIDE")) then return 54;
AAK00143 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,736(R11)   /APCROT/MAP_S603_OVERRIDE
         ST    R14,68(R13)
         MVC   76(2,R13),322(R11)   25
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00144
         L     R3,60(R12)
         MVC   0(4,R3),168(R11)   54
         J     AAK00174
*S69: if(load table(MapS603OverrideTbl)) then return 55;
AAK00144 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3796(R9)   MAPS603OVERRIDETBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00145
         L     R3,60(R12)
         MVC   0(4,R3),172(R11)   55
         J     AAK00174
*S71: if(load section("/APCROT/MAP_STATUS_PAYMENT")) then return 56;
AAK00145 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,761(R11)   /APCROT/MAP_STATUS_PAYMENT
         ST    R14,68(R13)
         MVC   76(2,R13),324(R11)   26
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00146
         L     R3,60(R12)
         MVC   0(4,R3),176(R11)   56
         J     AAK00174
*S72: if(load table(MapStatusPaymentTbl)) then return 57;
AAK00146 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3832(R9)   MAPSTATUSPAYMENTTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00147
         L     R3,60(R12)
         MVC   0(4,R3),180(R11)   57
         J     AAK00174
* Offsets
*S75: if(load section("/APCROT/OFFSET_APC")) then return 58;
AAK00147 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,787(R11)   /APCROT/OFFSET_APC
         ST    R14,68(R13)
         MVC   76(2,R13),312(R11)   18
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00148
         L     R3,60(R12)
         MVC   0(4,R3),184(R11)   58
         J     AAK00174
*S76: if(load table(OffsetApcTbl)) then return 59;
AAK00148 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00149
         L     R3,60(R12)
         MVC   0(4,R3),188(R11)   59
         J     AAK00174
*S78: if(load section("/APCROT/OFFSET_CODEPAIR")) then return 60;
AAK00149 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,805(R11)   /APCROT/OFFSET_CODEPAIR
         ST    R14,68(R13)
         MVC   76(2,R13),304(R11)   23
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00150
         L     R3,60(R12)
         MVC   0(4,R3),192(R11)   60
         J     AAK00174
*S79: if(load table(OffsetCodePairTbl)) then return 61;
AAK00150 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00151
         L     R3,60(R12)
         MVC   0(4,R3),196(R11)   61
         J     AAK00174
*S81: if(load section("/APCROT/OFFSET_HCPCS")) then return 62;
AAK00151 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,828(R11)   /APCROT/OFFSET_HCPCS
         ST    R14,68(R13)
         MVC   76(2,R13),318(R11)   20
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00152
         L     R3,60(R12)
         MVC   0(4,R3),200(R11)   62
         J     AAK00174
*S82: if(load table(OffsetHcpcsTbl)) then return 63;
AAK00152 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3940(R9)   OFFSETHCPCSTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00153
         L     R3,60(R12)
         MVC   0(4,R3),204(R11)   63
         J     AAK00174
* PBT
*S85: if(load section("/APCROT/PBT_CONTROL")) then return 64;
AAK00153 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,848(R11)   /APCROT/PBT_CONTROL
         ST    R14,68(R13)
         MVC   76(2,R13),326(R11)   19
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00154
         L     R3,60(R12)
         MVC   0(4,R3),208(R11)   64
         J     AAK00174
*S86: if(load table(PbtControlTbl)) then return 65;
AAK00154 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3988(R9)   PBTCONTROLTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00155
         L     R3,60(R12)
         MVC   0(4,R3),212(R11)   65
         J     AAK00174
*S88: if(load section("/APCROT/PBT_MAP")) then return 66;
AAK00155 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,867(R11)   /APCROT/PBT_MAP
         ST    R14,68(R13)
         MVC   76(2,R13),328(R11)   15
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00156
         L     R3,60(R12)
         MVC   0(4,R3),216(R11)   66
         J     AAK00174
*S89: if(load table(PbtMapTbl)) then return 67;
AAK00156 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,3972(R9)   PBTMAPTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00157
         L     R3,60(R12)
         MVC   0(4,R3),220(R11)   67
         J     AAK00174
*S91: if(load section("/APCROT/VERSION_RANGE")) then return 68;
AAK00157 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,882(R11)   /APCROT/VERSION_RANGE
         ST    R14,68(R13)
         MVC   76(2,R13),314(R11)   21
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00158
         L     R3,60(R12)
         MVC   0(4,R3),224(R11)   68
         J     AAK00174
*S92: if(load table(VersionRangeTbl)) then return 69;
AAK00158 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,4004(R9)   VERSIONRANGETBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00159
         L     R3,60(R12)
         MVC   0(4,R3),228(R11)   69
         J     AAK00174
*CMS ONLY TABLES
*S96: if(load section("/APCROT/MAP_ADDON_TYPE1")) then return 30;
AAK00159 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,903(R11)   /APCROT/MAP_ADDON_TYPE1
         ST    R14,68(R13)
         MVC   76(2,R13),304(R11)   23
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00160
         L     R3,60(R12)
         MVC   0(4,R3),232(R11)   30
         J     AAK00174
*S97: if(load table(MapAddonType1Tbl)) then return 31;
AAK00160 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,4036(R9)   MAPADDONTYPE1TBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00161
         L     R3,60(R12)
         MVC   0(4,R3),236(R11)   31
         J     AAK00174
*S99: if(load section("/APCROT/MAP_ADDON_TYPE2")) then return 32;
AAK00161 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,926(R11)   /APCROT/MAP_ADDON_TYPE2
         ST    R14,68(R13)
         MVC   76(2,R13),304(R11)   23
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00162
         L     R3,60(R12)
         MVC   0(4,R3),240(R11)   32
         J     AAK00174
*S100: if(load table(MapAddonType2Tbl)) then return 33;
AAK00162 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,4052(R9)   MAPADDONTYPE2TBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00163
         L     R3,60(R12)
         MVC   0(4,R3),244(R11)   33
         J     AAK00174
*S102: if(load section("/APCROT/MAP_ADDON_TYPE3")) then return 34;
AAK00163 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,949(R11)   /APCROT/MAP_ADDON_TYPE3
         ST    R14,68(R13)
         MVC   76(2,R13),304(R11)   23
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00164
         L     R3,60(R12)
         MVC   0(4,R3),248(R11)   34
         J     AAK00174
*S103: if(load table(MapAddonType3Tbl)) then return 35;
AAK00164 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,4076(R9)   MAPADDONTYPE3TBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00165
         L     R3,60(R12)
         MVC   0(4,R3),252(R11)   35
         J     AAK00174
*S105: if(load section("/APCROT/MAP_ADDON_DRUG_ADMIN")) then return 10
AAK00165 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,972(R11)   /APCROT/MAP_ADDON_DRUG_ADMIN
         ST    R14,68(R13)
         MVC   76(2,R13),330(R11)   28
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00166
         L     R3,60(R12)
         MVC   0(4,R3),256(R11)   102
         J     AAK00174
*S106: if(load table(MapAddonDrugAdmin)) then return 103;
AAK00166 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LR    R14,R9
         AHI   R14,4112   MAPADDONDRUGADMIN
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00167
         L     R3,60(R12)
         MVC   0(4,R3),260(R11)   103
         J     AAK00174
*S108: if(load section("/APCROT/MAP_FQHC_VISIT")) then return 46;
AAK00167 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,1000(R11)   /APCROT/MAP_FQHC_VISIT
         ST    R14,68(R13)
         MVC   76(2,R13),320(R11)   22
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00168
         L     R3,60(R12)
         MVC   0(4,R3),264(R11)   46
         J     AAK00174
*S109: if(load table(MapFQHCVisitTbl)) then return 47;
AAK00168 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LR    R14,R9
         AHI   R14,4148   MAPFQHCVISITTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00169
         L     R3,60(R12)
         MVC   0(4,R3),268(R11)   47
         J     AAK00174
*S111: if(load section("/APCROT/MAP_CONFLICT_RHC")) then return 44;
AAK00169 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,1022(R11)   /APCROT/MAP_CONFLICT_RHC
         ST    R14,68(R13)
         MVC   76(2,R13),332(R11)   24
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00170
         L     R3,60(R12)
         MVC   0(4,R3),272(R11)   44
         J     AAK00174
*S112: if(load table(MapConflictRHCTbl)) then return 45;
AAK00170 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LR    R14,R9
         AHI   R14,4184   MAPCONFLICTRHCTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00171
         L     R3,60(R12)
         MVC   0(4,R3),276(R11)   45
         J     AAK00174
*S114: if(load section("/APCROT/DATA_EDIT_BYPASS")) then return 18;
AAK00171 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),292(R11)   5
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LA    R14,1046(R11)   /APCROT/DATA_EDIT_BYPASS
         ST    R14,68(R13)
         MVC   76(2,R13),332(R11)   24
         XC    72(4,R13),72(R13)
         XC    78(2,R13),78(R13)
         L     R15,0(R11)   DMNLOAD
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00172
         L     R3,60(R12)
         MVC   0(4,R3),280(R11)   18
         J     AAK00174
*S115: if(load table(DataEditBypassTbl)) then return 19;
AAK00172 XC    144(4,R10),144(R10)   LASTERROR
         MVC   60(2,R13),300(R11)   1
         MVC   62(2,R13),294(R11)   3
         LA    R14,156(R10)
         ST    R14,64(R13)
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,68(R13)
         XC    72(4,R13),72(R13)
         XC    76(2,R13),76(R13)
         L     R15,32(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAK00173
         L     R3,60(R12)
         MVC   0(4,R3),284(R11)   19
         J     AAK00174
*TRICARE ONLY TABLES
*DESCRIPTION TABLES
*S173: return 0;
AAK00173 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAK00174 LA    R4,64(R12)
         ST    R4,60(R13)
         L     R15,288(R11)   DMNFREE
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC110
**************************
GAPCC110 CSECT
GAPCC110 AMODE ANY
GAPCC110 RMODE ANY
*XREF - GAPCC110 GAPC.close
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAK00203
         DC    A(DMNSEL) @00000
         DC    H'2'  0 2 @00004
*S178: select close (DataApcTbl);
AAK00203 MVC   60(2,R13),4(R11)   2
         LA    R14,3064(R9)   DATAAPCTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
*S179: select close (DataCAPCTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3128(R9)   DATACAPCTBL
         ST    R14,64(R13)
         L     R14,3128(R9)   DATACAPCTBL
         LTR   R14,R14
         JE    AAK00206
         L     R14,52(R14)
         LHI   R3,4096
         N     R3,12(R14)
AAK00206 L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
*S180: select close (DataDiscountFormulaTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3156(R9)   DATADISCOUNTFORMULATBL
         ST    R14,64(R13)
         L     R14,3156(R9)   DATADISCOUNTFORMULATBL
         LTR   R14,R14
         JE    AAK00207
         L     R14,52(R14)
         LHI   R5,4096
         N     R5,12(R14)
AAK00207 L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
*S181: select close (DataDx10Tbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3244(R9)   DATADX10TBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
*S182: select close (DataDxTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3200(R9)   DATADXTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R8,60(R13)
*S183: select close (DataHcpcsTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
*S184: select close (DataModifierTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3384(R9)   DATAMODIFIERTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
*S185: select close (DataPITbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3428(R9)   DATAPITBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
*S186: select close (DataValidRevenueTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3464(R9)   DATAVALIDREVENUETBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
*S187: select close (DataSITbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3504(R9)   DATASITBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
*S189: select close (MapBioSimilarTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3540(R9)   MAPBIOSIMILARTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
*S190: select close (MapCAPCTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3576(R9)   MAPCAPCTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R8,60(R13)
*S191: select close (MapCodePairTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3624(R9)   MAPCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
*S192: select close (MapCompositeTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3660(R9)   MAPCOMPOSITETBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
*S193: select close (MapModifierConflictTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3708(R9)   MAPMODIFIERCONFLICTTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
*S194: select close (MapNCCITbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3744(R9)   MAPNCCITBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
*S195: select close (MapPHAddonTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3760(R9)   MAPPHADDONTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
*S196: select close (MapS603OverrideTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3796(R9)   MAPS603OVERRIDETBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
*S197: select close (MapStatusPaymentTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3832(R9)   MAPSTATUSPAYMENTTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R8,60(R13)
*S199: select close (OffsetApcTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3860(R9)   OFFSETAPCTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
*S200: select close (OffsetCodePairTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3892(R9)   OFFSETCODEPAIRTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
*S201: select close (OffsetHcpcsTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3940(R9)   OFFSETHCPCSTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
*S203: select close (PbtMapTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3972(R9)   PBTMAPTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
*S204: select close (PbtControlTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,3988(R9)   PBTCONTROLTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
*S205: select close (VersionRangeTbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,4004(R9)   VERSIONRANGETBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
*S208: select close (MapAddonType1Tbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,4036(R9)   MAPADDONTYPE1TBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R8,60(R13)
*S209: select close (MapAddonType2Tbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,4052(R9)   MAPADDONTYPE2TBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
*S210: select close (MapAddonType3Tbl);
         MVC   60(2,R13),4(R11)   2
         LA    R14,4076(R9)   MAPADDONTYPE3TBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R3,60(R13)
*S211: select close (MapFQHCVisitTbl);
         MVC   60(2,R13),4(R11)   2
         LR    R14,R9
         AHI   R14,4148   MAPFQHCVISITTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R4,60(R13)
*S212: select close (DataEditBypassTbl);
         MVC   60(2,R13),4(R11)   2
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
*S213: select close (MapConflictRHCTbl);
         MVC   60(2,R13),4(R11)   2
         LR    R14,R9
         AHI   R14,4184   MAPCONFLICTRHCTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R6,60(R13)
*S214: select close (MapAddonDrugAdmin);
         MVC   60(2,R13),4(R11)   2
         LR    R14,R9
         AHI   R14,4112   MAPADDONDRUGADMIN
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R7,60(R13)
*S239: initialized:=0;
         XC    3048(4,R9),3048(R9)   INITIALIZED
AAK00208 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:37 2020
*^ IDENTS - GAPCC AAL
**************************
*    GAPCC112
**************************
GAPCC112 CSECT
GAPCC112 AMODE ANY
GAPCC112 RMODE ANY
*XREF - GAPCC112 GAPC.resetDoneWithThisEdit
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (4 bytes)
*        0064(R12)-> reference to Struct len 1120 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00203
         DC    A(DMNATFD) @00000
         DC    H'10'  0 10 @00004
         DC    H'1120'  4 96 @00006
AAL00203 XC    64(4,R12),64(R12)
*S194: loop( item:=base->lines->first; item and (line:=&item->line, li
         L     R2,28(R9)   LINES
         ST    R2,4(R9)   ITEM
AAL00206 L     R15,4(R9)   ITEM
         LTR   R15,R15
         JE    AAL00209
         MVC   60(4,R13),4(R9)   ITEM
         MVC   64(2,R13),4(R11)   10
         MVC   66(2,R13),6(R11)   1120
         L     R15,0(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,64(R12)   LINE
         LTR   R2,R2   LINE
         JE    AAL00209
*S195: line->Bits->done_with_this_edit:=0;
         L     R2,64(R12)   LINE
         NI    1081(R2),251   DONE_WITH_THIS_EDIT
AAL00207 L     R2,4(R9)   ITEM
         LTR   R2,R2
         JE    AAL00208
         L     R2,8(R2)
AAL00208 ST    R2,4(R9)   ITEM
         J     AAL00206
AAL00209 EQU   *
AAL00210 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC113
**************************
GAPCC113 CSECT
GAPCC113 AMODE ANY
GAPCC113 RMODE ANY
*XREF - GAPCC113 GAPC.BillTypeCompletesBuffer
*  R11 + 0000 Literals        (32 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*  R13 + 0000 Stack           (R12 + 64)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,64  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00303
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    H'2'  0 2 @00008
         DC    CL2'13' @00010
         DC    CL2'12' @00012
         DC    CL2'14' @00014
         DC    CL2'34' @00016
         DC    CL2'75' @00018
         DC    CL2'76' @00020
         DC    CL2'43' @00022
         DC    CL2'71' @00024
         DC    CL2'73' @00026
         DC    CL2'77' @00028
*S202: if( base->BillType="13"
AAL00303 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00313
         TM    3000(R9),32   HASCC41
         JNE   AAL00307
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL00306
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAL00307
AAL00306 J     AAL00313
AAL00307 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,16(R11)   34
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAL00309
         TM    3003(R9),2   HASVACCINE
         JNE   AAL00308
         TM    3003(R9),16   HASANTIGEN
         JNE   AAL00308
         TM    3003(R9),4   HASCAST
         JNE   AAL00308
         TM    3003(R9),8   HASSPLINT
         JNE   AAL00308
         TM    3006(R9),128   NEGATIVEPRESSUREWOUNDTHERAPY
         JE    AAL00309
AAL00308 J     AAL00313
AAL00309 TM    3003(R9),2   HASVACCINE
         JE    AAL00310
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,18(R11)   75
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00313
AAL00310 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00313
         TM    3000(R9),128   HASCC07
         JE    AAL00312
         TM    3003(R9),16   HASANTIGEN
         JNE   AAL00311
         TM    3003(R9),4   HASCAST
         JNE   AAL00311
         TM    3003(R9),8   HASSPLINT
         JE    AAL00312
AAL00311 LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   13
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R11)   12
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   14
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,16(R11)   34
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,22(R11)   43
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   71
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,26(R11)   73
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   76
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00312
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   77
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAL00313
AAL00312 J     AAL00314
*S203: or ( not claim->Bits->HasCc41
*S204: and ( base->BillType="12" or base->BillType="14" )
*S205: )
*S206: or ( base->BillType="34"
*S207: and (
*S208: claim->Bits->HasVaccine
*S209: or claim->Bits->HasAntigen
*S210: or claim->Bits->HasCast
*S211: or claim->Bits->HasSplint
*S212: or claim->Bits->NegativePressureWoundTherapy
*S213: )
*S214: )
*S215: or ( claim->Bits->HasVaccine and base->BillType="75" )
*S216: or base->BillType="76"
*S217: or (
*S218: claim->Bits->HasCc07
*S219: and (
*S220: claim->Bits->HasAntigen
*S221: or claim->Bits->HasCast
*S222: or claim->Bits->HasSplint
*S223: )
*S224: and not (
*S225: base->BillType="13"
*S226: or base->BillType="12"
*S227: or base->BillType="14"
*S228: or base->BillType="34"
*S229: or base->BillType="43"
*S230: or base->BillType="71"
*S231: or base->BillType="73"
*S232: or base->BillType="76"
*S233: or base->BillType="77"
*S234: )
*S235: ) ) then {
*S236: return 1;
AAL00313 L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
         J     AAL00315
*S237: }
*S238: return 0;
AAL00314 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAL00315 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC114
**************************
GAPCC114 CSECT
GAPCC114 AMODE ANY
GAPCC114 RMODE ANY
*XREF - GAPCC114 GAPC.ReduceUnits
*  R11 + 0000 Literals        (24 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00403
         DC    F'1' @00000
         DC    A(DMNSCPY) @00004
         DC    F'11' @00008
         DC    H'9'  0 9 @00012
         DC    CL9'000000001' @00014
* V16.1.0, EFFECTIVE 2015-04-01, PAF 11 INDICATES UNITS REDUCED TO 1
* NEVER APPLIED IF PAYMENT ADJUSTMENT FLAG IS ALREADY SET
*S246: if( 1 < line->ServiceUnits ) then {
AAL00403 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,468(R3)   SERVICEUNITS
         CHI   R4,1
         JNH   AAL00407
*S247: line->ServiceUnitsPay :=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         MVC   568(4,R6),0(R11)   1
*S248: line->ServiceUnitsInput :="000000001";
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         LA    R14,232(R8)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   000000001
         ST    R14,64(R13)
         MVC   70(2,R13),12(R11)   9
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
*S249: if( 58 < base->Version
         L     R2,1868(R9)   VERSION
         CHI   R2,58
         JNH   AAL00406
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R15,544(R4)   PAYADJFLAG
         LTR   R15,R15
         JNE   AAL00406
*S250: and not line->PayAdjFlag ) then {
*S251: line->PayAdjFlag :=PaymentAdjustments->UNITS_REDUCED_TO_ONE;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   544(4,R3),8(R11)   11
AAL00406 EQU   *
AAL00407 EQU   *
AAL00408 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC115
**************************
GAPCC115 CSECT
GAPCC115 AMODE ANY
GAPCC115 RMODE ANY
*XREF - GAPCC115 GAPC.SetApcAssignment
*  R11 + 0000 Literals        (40 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*        0068(R12)-> String (apc)
*  R12 + 0072 Locals & temps  (4 bytes)
*        0072(R12)-> Integer len 4 ()
*        0076(R12)-> Unknown ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00503
         DC    A(DMNSLOG) @00000
         DC    A(DMNSCMP) @00004
         DC    A(DMNSCPY) @00008
         DC    A(GAPCC123) @00012
         DC    A(GAPCC088) @00016
         DC    F'9' @00020
         DC    F'8' @00024
         DC    A(V40LJMP) @00028
         DC    H'5'  0 5 @00032
         DC    CL5'00000' @00034
AAL00503 XC    72(4,R12),72(R12)
*S258: if( apc and apc <> "00000") then {
         L     R2,68(R12)   APC
         ST    R2,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL00510
         MVC   60(4,R13),68(R12)   APC
         XC    68(2,R13),68(R13)
         LA    R14,34(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),32(R11)   5
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAL00510
*S259: if( apc<>line->APC ) then {
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         MVC   60(4,R13),68(R12)   APC
         XC    68(2,R13),68(R13)
         LA    R14,484(R3)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAL00506
*S260: line->APC :=apc;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,484(R6)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   APC
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S261: }
*S263: line->Bits->QualifiesForDiscount :=0;% THIS WAS APPLIED TO THE
AAL00506 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         NI    1080(R3),254   QUALIFIESFORDISCOUNT
*S264: if( do GAPC.findApcData( apc, base->Version ) ) then {
         LA    R14,72(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),68(R12)   APC
         LA    R14,1868(R9)   VERSION
         ST    R14,68(R13)
         L     R15,12(R11)   GAPCC123
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAL00508
*S265: line->StatusIndicator :=DataApcTbl->StatusIndicator;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,180(R5)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,3100(R9)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S266: line->PaymentIndicator :=DataApcTbl->PaymentIndicator;
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         XR    R8,R8
         TM    3112(R9),128   PAYMENTINDICATOR
         JE    AAL00507
         LHI   R8,-1
AAL00507 IC    R8,3112(R9)   PAYMENTINDICATOR
         ST    R8,204(R7)   PAYMENTINDICATOR
*S267: line->ApcPayment :=DataApcTbl->ApcPayment;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,3116(R9)   APCPAYMENT
         ST    R4,528(R3)   APCPAYMENT
*S268: line->PaymentApc :=apc;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         LA    R14,512(R6)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   APC
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S269: line->DeviceOffset :=DataApcTbl->DeviceOffset;
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         L     R2,3120(R9)   DEVICEOFFSET
         ST    R2,532(R8)   DEVICEOFFSET
*S270: do GAPC.PrepPaymentMethodFlags( line );
         MVC   64(4,R13),64(R12)   LINE
         L     R15,16(R11)   GAPCC088
         BASR  R14,R15
         J     AAL00509
*do GAPC.SetAPCPay( line );
*S272: }
*S273: else {
*S274: base->OutClm_ClaimFlag:=9;% EXIT CLAIM FLAG BECAUSE APC IS MISS
AAL00508 MVC   1884(4,R9),20(R11)   9
*S275: { return_code:=Error->RC_RotCorrupt ; goto exit_now; };
         MVC   3016(4,R9),24(R11)   8
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,28(R11)   V40LJMP
         BASR  R14,R15
AAL00509 EQU   *
AAL00510 EQU   *
AAL00511 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC116
**************************
GAPCC116 CSECT
GAPCC116 AMODE ANY
GAPCC116 RMODE ANY
*XREF - GAPCC116 GAPC.SetDefaultAssignment
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00603
         DC    A(GAPCC115) @00000
*S281: do GAPC.SetApcAssignment( line, line->APC );
AAL00603 MVC   64(4,R13),64(R12)   LINE
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,484(R3)   APC
         ST    R14,68(R13)
         L     R15,0(R11)   GAPCC115
         BASR  R14,R15
AAL00606 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC117
**************************
GAPCC117 CSECT
GAPCC117 AMODE ANY
GAPCC117 RMODE ANY
*XREF - GAPCC117 GAPC.SetConditionalApc
*  R11 + 0000 Literals        (36 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00703
         DC    A(DMNSCPY) @00000
         DC    A(DMNSLOG) @00004
         DC    A(DMNSCMP) @00008
         DC    F'1' @00012
         DC    A(GAPCC088) @00016
         DC    A(GAPCC089) @00020
         DC    H'5'  0 5 @00024
         DC    H'1'  0 1 @00026
         DC    CL5'00000' @00028
         DC    CL1'T' @00033
*S286: line->StatusIndicator :=line->ConditionalSI;
AAL00703 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,256(R5)   CONDITIONALSI
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S287: line->PaymentIndicator :=line->ConditionalPI;
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         L     R3,268(R2)   CONDITIONALPI
         ST    R3,204(R7)   PAYMENTINDICATOR
*S289: if( line->ConditionalAPC
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,1012(R5)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,4(R11)   DMNSLOG
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JE    AAL00706
         L     R7,64(R12)   LINE
         L     R8,0(R7)   LINE
         LA    R14,1012(R8)   CONDITIONALAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   5
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL00706
*S290: and line->ConditionalAPC<>"00000" ) then {
*S291: line->APC :=line->ConditionalAPC;
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,484(R3)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,1012(R5)   CONDITIONALAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S292: line->PaymentApc :=line->ConditionalAPC;
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R14,512(R7)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,1012(R2)   CONDITIONALAPC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
         J     AAL00707
*S293: }
*S294: else{
*S295: line->APC :="00000";
AAL00706 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,484(R3)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S296: line->PaymentApc :="00000";
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         LA    R14,512(R5)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,28(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),24(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S297: }
*S299: if( line->PackagingFlag ) then {
AAL00707 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R15,540(R3)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAL00708
*S300: line->PackagingFlag :=0;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         XC    540(4,R5),540(R5)   PACKAGINGFLAG
*S301: }
*S302: if( line->PayAdjFlag ) then {
AAL00708 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R15,544(R3)   PAYADJFLAG
         LTR   R15,R15
         JE    AAL00709
*S303: line->PayAdjFlag :=0;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         XC    544(4,R5),544(R5)   PAYADJFLAG
*S304: }
*S305: if( not line->DiscountingFactor ) then {
AAL00709 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R15,536(R3)   DISCOUNTINGFACTOR
         LTR   R15,R15
         JNE   AAL00710
*S306: line->DiscountingFactor :=1;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   536(4,R5),12(R11)   1
*S307: }
*S308: if( line->StatusIndicator="T" ) then {
AAL00710 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,33(R11)   T
         ST    R14,64(R13)
         MVC   70(2,R13),26(R11)   1
         L     R15,8(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAL00711
*S309: line->Bits->HasTypeT :=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         OI    1082(R6),32   HASTYPET
*S310: }
*S311: do GAPC.PrepPaymentMethodFlags( line );
AAL00711 MVC   64(4,R13),64(R12)   LINE
         L     R15,16(R11)   GAPCC088
         BASR  R14,R15
*S312: do GAPC.SetAPCPay( line );
         MVC   64(4,R13),64(R12)   LINE
         L     R15,20(R11)   GAPCC089
         BASR  R14,R15
AAL00712 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC118
**************************
GAPCC118 CSECT
GAPCC118 AMODE ANY
GAPCC118 RMODE ANY
*XREF - GAPCC118 GAPC.SetSeparatelyPayable
*  R11 + 0000 Literals        (28 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00803
         DC    A(DMNSCPY) @00000
         DC    F'2' @00004
         DC    A(GAPCC088) @00008
         DC    A(GAPCC089) @00012
         DC    H'1'  0 1 @00016
         DC    H'5'  0 5 @00018
         DC    CL1'A' @00020
         DC    CL5'00000' @00021
*S318: line->StatusIndicator :="A";
AAL00803 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,20(R11)   A
         ST    R14,64(R13)
         MVC   70(2,R13),16(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S319: line->PaymentIndicator :=2;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   204(4,R5),4(R11)   2
*line->APC     :=0;
*S321: line->APC :="00000";
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         LA    R14,484(R7)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,21(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),18(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*line->PaymentApc   :=0;
*S323: line->PaymentApc :="00000";
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,21(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),18(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*line->HcpcsApc    :=0;
*S325: if( line->PackagingFlag ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R15,540(R4)   PACKAGINGFLAG
         LTR   R15,R15
         JE    AAL00806
*S326: line->PackagingFlag :=0;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         XC    540(4,R6),540(R6)   PACKAGINGFLAG
*S327: }
*S328: do GAPC.PrepPaymentMethodFlags( line );
AAL00806 MVC   64(4,R13),64(R12)   LINE
         L     R15,8(R11)   GAPCC088
         BASR  R14,R15
*S329: do GAPC.SetAPCPay( line );
         MVC   64(4,R13),64(R12)   LINE
         L     R15,12(R11)   GAPCC089
         BASR  R14,R15
AAL00807 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC119
**************************
GAPCC119 CSECT
GAPCC119 AMODE ANY
GAPCC119 RMODE ANY
*XREF - GAPCC119 GAPC.PackageCode
*  R11 + 0000 Literals        (32 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL00903
         DC    A(DMNSCPY) @00000
         DC    F'9' @00004
         DC    F'1' @00008
         DC    A(GAPCC088) @00012
         DC    A(GAPCC089) @00016
         DC    H'1'  0 1 @00020
         DC    H'5'  0 5 @00022
         DC    CL1'N' @00024
         DC    CL5'00000' @00025
*S335: line->StatusIndicator :="N";
AAL00903 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,24(R11)   N
         ST    R14,64(R13)
         MVC   70(2,R13),20(R11)   1
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*S336: line->PaymentIndicator :=9;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   204(4,R5),4(R11)   9
*line->APC       :=0;   %DO NOT TOUCH!!! MUST BE CLEARED FOR CONDITION
*line->APC     :=0;
*S339: line->APC :="00000";
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         LA    R14,484(R7)   APC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,25(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*line->PaymentApc   :=0;
*S341: line->PaymentApc :="00000";
         L     R8,64(R12)   LINE
         L     R2,0(R8)   LINE
         LA    R14,512(R2)   PAYMENTAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,25(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),22(R11)   5
         L     R15,0(R11)   DMNSCPY
         BASR  R14,R15
*line->HcpcsApc      :=0;
*S343: if( not line->PackagingFlag ) then {
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         L     R15,540(R4)   PACKAGINGFLAG
         LTR   R15,R15
         JNE   AAL00906
*S344: line->PackagingFlag :=1;
         L     R5,64(R12)   LINE
         L     R6,0(R5)   LINE
         MVC   540(4,R6),8(R11)   1
*S345: }
*S346: line->PayAdjFlag :=0;
AAL00906 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         XC    544(4,R3),544(R3)   PAYADJFLAG
*S347: line->DiscountingFactor :=1;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         MVC   536(4,R5),8(R11)   1
*S348: line->Bits->QualifiesForDiscount :=0;%IS THIS ALWAYS THE CASE F
         L     R6,64(R12)   LINE
         L     R7,0(R6)   LINE
         NI    1080(R7),254   QUALIFIESFORDISCOUNT
*S349: do GAPC.PrepPaymentMethodFlags( line );
         MVC   64(4,R13),64(R12)   LINE
         L     R15,12(R11)   GAPCC088
         BASR  R14,R15
*S350: do GAPC.SetAPCPay( line );
         MVC   64(4,R13),64(R12)   LINE
         L     R15,16(R11)   GAPCC089
         BASR  R14,R15
AAL00907 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC120
**************************
GAPCC120 CSECT
GAPCC120 AMODE ANY
GAPCC120 RMODE ANY
*XREF - GAPCC120 GAPC.SetHcpcsMapPointer
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> String (Hcpcs)
*        0068(R12)-> Integer len 4 (Version)
*  R12 + 0072 Locals & temps  (4 bytes)
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01003
         DC    A(GAPCC121) @00000
         DC    F'1' @00004
         DC    F'9' @00008
         DC    F'8' @00012
         DC    A(V40LJMP) @00016
AAL01003 XC    72(4,R12),72(R12)
*S389: if( do GAPC.findHcpcsData( Hcpcs, Version ) ) then return 1;
         LA    R14,72(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   HCPCS
         MVC   68(4,R13),68(R12)   VERSION
         L     R15,0(R11)   GAPCC121
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAL01006
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
         J     AAL01007
*S390: base->OutClm_ClaimFlag:=9;
AAL01006 MVC   1884(4,R9),8(R11)   9
*S391: { return_code:=Error->RC_RotCorrupt ; goto exit_now; };
         MVC   3016(4,R9),12(R11)   8
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,16(R11)   V40LJMP
         BASR  R14,R15
AAL01007 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC121
**************************
GAPCC121 CSECT
GAPCC121 AMODE ANY
GAPCC121 RMODE ANY
*XREF - GAPCC121 GAPC.findHcpcsData
*  R11 + 0000 Literals        (44 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> String (Hcpcs)
*        0068(R12)-> Integer len 4 (Version)
*  R12 + 0072 Locals & temps  (4 bytes)
*        0072(R12)-> Integer len 4 (rc)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01103
         DC    A(DMNSLOG) @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNSEL) @00008
         DC    F'5' @00012
         DC    A(DMNSCPYX) @00016
         DC    F'1' @00020
         DC    A(DMNZSTR) @00024
         DC    F'2' @00028
         DC    A(DMNSCMP) @00032
         DC    H'4'  0 4 @00036
         DC    H'1'  0 1 @00038
         DC    H'5'  0 5 @00040
         DC    H'7'  0 7 @00042
AAL01103 XC    72(4,R12),72(R12)
*S396: if( Hcpcs ) then {
         L     R2,64(R12)   HCPCS
         ST    R2,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL01115
*S397: loop( rc:=select DataHcpcsTbl using byHCPCS(Hcpcs); rc<1; rc:=s
         MVC   60(2,R13),36(R11)   4
         MVC   62(2,R13),38(R11)   1
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),40(R11)   5
         MVC   64(4,R13),64(R12)   HCPCS
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAL01106
         L     R6,64(R13)
         L     R7,68(R13)
         AHI   R13,80
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R6,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3308(4,R9),5(R6)
         AHI   R13,80
         ST    R7,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R7,60(R13)
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3336(5,R9),14(R6)
         AHI   R13,80
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3356(1,R9),21(R6)
         MVC   3358(23,R9),22(R6)
AAL01106 ST    R5,72(R12)   RC
AAL01107 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAL01114
*S398: if( Hcpcs<>DataHcpcsTbl->HCPCS ) then break;
         MVC   60(4,R13),64(R12)   HCPCS
         XC    68(2,R13),68(R13)
         LA    R14,3296(R9)   HCPCS
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL01108
         J     AAL01114
*S399: if( Version >= DataHcpcsTbl->LoVersion
AAL01108 L     R2,68(R12)   VERSION
         L     R3,0(R2)   VERSION
         XR    R14,R14
         TM    3310(R9),128   LOVERSION
         JE    AAL01109
         LHI   R14,-1
AAL01109 IC    R14,3310(R9)   LOVERSION
         CR    R3,R14
         JL    AAL01111
         L     R4,68(R12)   VERSION
         L     R5,0(R4)   VERSION
         XR    R14,R14
         TM    3311(R9),128   HIVERSION
         JE    AAL01110
         LHI   R14,-1
AAL01110 IC    R14,3311(R9)   HIVERSION
         CR    R5,R14
         JH    AAL01111
*S400: and Version <= DataHcpcsTbl->HiVersion ) then return 1;
         L     R2,60(R12)
         MVC   0(4,R2),20(R11)   1
         J     AAL01116
AAL01111 EQU   *
AAL01112 MVC   60(2,R13),42(R11)   7
         LA    R14,3288(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAL01113
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3296(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3308(4,R9),5(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3312(R9)   DATAHCPCSTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3324(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,9(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3336(5,R9),14(R3)
         AHI   R13,72
         LA    R14,3344(R9)   DATAHCPCSTBL
         ST    R14,60(R13)
         LA    R14,19(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3356(1,R9),21(R3)
         MVC   3358(23,R9),22(R3)
AAL01113 ST    R2,72(R12)   RC
         J     AAL01107
*S401: }
*S402: }
*S403: return 0;
AAL01114 EQU   *
AAL01115 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAL01116 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC122
**************************
GAPCC122 CSECT
GAPCC122 AMODE ANY
GAPCC122 RMODE ANY
*XREF - GAPCC122 GAPC.SetApcDataPointer
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> String (Apc)
*        0068(R12)-> Integer len 4 (Version)
*  R12 + 0072 Locals & temps  (4 bytes)
*        0072(R12)-> Integer len 4 ()
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01203
         DC    A(GAPCC123) @00000
         DC    F'1' @00004
         DC    F'9' @00008
         DC    F'8' @00012
         DC    A(V40LJMP) @00016
AAL01203 XC    72(4,R12),72(R12)
*S407: if( do GAPC.findApcData( Apc, Version ) ) then return 1;
         LA    R14,72(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   APC
         MVC   68(4,R13),68(R12)   VERSION
         L     R15,0(R11)   GAPCC123
         BASR  R14,R15
         L     R15,72(R12)
         LTR   R15,R15
         JE    AAL01206
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
         J     AAL01207
*S408: base->OutClm_ClaimFlag:=9;
AAL01206 MVC   1884(4,R9),8(R11)   9
*S409: { return_code:=Error->RC_RotCorrupt ; goto exit_now; };
         MVC   3016(4,R9),12(R11)   8
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,16(R11)   V40LJMP
         BASR  R14,R15
AAL01207 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC123
**************************
GAPCC123 CSECT
GAPCC123 AMODE ANY
GAPCC123 RMODE ANY
*XREF - GAPCC123 GAPC.findApcData
*  R11 + 0000 Literals        (44 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> String (Apc)
*        0068(R12)-> Integer len 4 (Version)
*  R12 + 0072 Locals & temps  (4 bytes)
*        0072(R12)-> Integer len 4 (rc)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01303
         DC    A(DMNSLOG) @00000
         DC    A(DMNSCPY) @00004
         DC    A(DMNSEL) @00008
         DC    F'5' @00012
         DC    A(DMNSCPYX) @00016
         DC    F'1' @00020
         DC    A(DMNZSTR) @00024
         DC    F'2' @00028
         DC    A(DMNSCMP) @00032
         DC    H'4'  0 4 @00036
         DC    H'1'  0 1 @00038
         DC    H'5'  0 5 @00040
         DC    H'7'  0 7 @00042
AAL01303 XC    72(4,R12),72(R12)
*S414: if( Apc ) then {
         L     R2,64(R12)   APC
         ST    R2,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL01315
*S415: loop( rc:=select DataApcTbl using byApc( Apc ); rc<1; rc:=selec
         MVC   60(2,R13),36(R11)   4
         MVC   62(2,R13),38(R11)   1
         LA    R14,3064(R9)   DATAAPCTBL
         ST    R14,64(R13)
         LA    R4,68(R13)
         AHI   R13,80
         ST    R4,60(R13)
         MVC   68(2,R13),40(R11)   5
         MVC   64(4,R13),64(R12)   APC
         XC    70(2,R13),70(R13)
         L     R15,4(R11)   DMNSCPY
         BASR  R14,R15
         AHI   R13,-80
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAL01306
         L     R6,64(R13)
         L     R7,68(R13)
         AHI   R13,80
         LA    R14,3072(R9)   DATAAPCTBL
         ST    R14,60(R13)
         ST    R6,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3084(2,R9),5(R6)
         AHI   R13,80
         ST    R7,60(R13)
         LA    R14,3088(R9)   DATAAPCTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R7,60(R13)
         AHI   R13,-80
         AHI   R13,80
         LA    R14,3100(R9)   DATAAPCTBL
         ST    R14,60(R13)
         LA    R14,7(R6)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-80
         MVC   3112(1,R9),9(R6)
         MVC   3116(12,R9),10(R6)
AAL01306 ST    R5,72(R12)   RC
AAL01307 L     R2,72(R12)   RC
         CHI   R2,1
         JNL   AAL01314
*S416: if( Apc<>DataApcTbl->Apc ) then break;
         MVC   60(4,R13),64(R12)   APC
         XC    68(2,R13),68(R13)
         LA    R14,3072(R9)   APC
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,32(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL01308
         J     AAL01314
*S417: if( Version>=DataApcTbl->LoVersion
AAL01308 L     R2,68(R12)   VERSION
         L     R3,0(R2)   VERSION
         XR    R14,R14
         TM    3084(R9),128   LOVERSION
         JE    AAL01309
         LHI   R14,-1
AAL01309 IC    R14,3084(R9)   LOVERSION
         CR    R3,R14
         JL    AAL01311
         L     R4,68(R12)   VERSION
         L     R5,0(R4)   VERSION
         XR    R14,R14
         TM    3085(R9),128   HIVERSION
         JE    AAL01310
         LHI   R14,-1
AAL01310 IC    R14,3085(R9)   HIVERSION
         CR    R5,R14
         JH    AAL01311
*S418: and Version<=DataApcTbl->HiVersion ) then return 1;
         L     R2,60(R12)
         MVC   0(4,R2),20(R11)   1
         J     AAL01316
AAL01311 EQU   *
AAL01312 MVC   60(2,R13),42(R11)   7
         LA    R14,3064(R9)   DATAAPCTBL
         ST    R14,64(R13)
         L     R15,8(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAL01313
         L     R3,64(R13)
         L     R4,68(R13)
         AHI   R13,72
         LA    R14,3072(R9)   DATAAPCTBL
         ST    R14,60(R13)
         ST    R3,64(R13)
         MVC   68(4,R13),12(R11)   5
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3084(2,R9),5(R3)
         AHI   R13,72
         ST    R4,60(R13)
         LA    R14,3088(R9)   DATAAPCTBL
         ST    R14,64(R13)
         MVC   68(4,R13),20(R11)   1
         L     R15,24(R11)   DMNZSTR
         BASR  R14,R15
         L     R4,60(R13)
         AHI   R13,-72
         AHI   R13,72
         LA    R14,3100(R9)   DATAAPCTBL
         ST    R14,60(R13)
         LA    R14,7(R3)
         ST    R14,64(R13)
         MVC   68(4,R13),28(R11)   2
         L     R15,16(R11)   DMNSCPYX
         BASR  R14,R15
         AHI   R13,-72
         MVC   3112(1,R9),9(R3)
         MVC   3116(12,R9),10(R3)
AAL01313 ST    R2,72(R12)   RC
         J     AAL01307
*S419: }
*S420: }
*S421: return 0;
AAL01314 EQU   *
AAL01315 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAL01316 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC124
**************************
GAPCC124 CSECT
GAPCC124 AMODE ANY
GAPCC124 RMODE ANY
*XREF - GAPCC124 GAPC.plop
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (EditNum)
*        0068(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (Reason)
*  R12 + 0072 Locals & temps  (8 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 (rtn)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01403
         DC    F'1' @00000
AAL01403 XC    72(8,R12),72(R12)
*S427: for( i:=0 until 30-1 ){
         XC    72(4,R12),72(R12)   I
AAL01406 L     R2,72(R12)   I
         CHI   R2,29
         JH    AAL01410
*S428: if( Reason[i]=EditNum ) then break;
         L     R3,68(R12)   REASON
         L     R4,72(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   REASON
         L     R6,64(R12)   EDITNUM
         C     R5,0(R6)   EDITNUM
         JNE   AAL01407
         J     AAL01410
*S429: if( Reason[i]=0 ) then {
AAL01407 L     R2,68(R12)   REASON
         L     R3,72(R12)   I
         MHI   R3,4
         AR    R2,R3
         L     R4,0(R2)   REASON
         LTR   R4,R4
         JNE   AAL01408
*S430: Reason[i]:=EditNum;
         L     R5,68(R12)   REASON
         L     R6,72(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,64(R12)   EDITNUM
         L     R8,0(R7)   EDITNUM
         ST    R8,0(R5)   REASON
*S431: rtn:=1;
         MVC   76(4,R12),0(R11)   1
*S432: break;
         J     AAL01410
AAL01408 EQU   *
AAL01409 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAL01406
*S433: }
*S434: }
*S435: return rtn;
AAL01410 L     R2,60(R12)
         L     R3,76(R12)   RTN
         ST    R3,0(R2)
AAL01411 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC125
**************************
GAPCC125 CSECT
GAPCC125 AMODE ANY
GAPCC125 RMODE ANY
*XREF - GAPCC125 GAPC.modplop
*  R11 + 0000 Literals        (0 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> Integer len 4 (EditNum)
*        0068(R12)-> Integer len 4 (ModNum)
*        0072(R12)-> array [1] of
*                    array [20] of
*                    Integer len 4 (Reason)
*  R12 + 0076 Locals & temps  (8 bytes)
*        0076(R12)-> Integer len 4 (i)
*        0080(R12)-> Integer len 4 (startpt)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         XC    76(8,R12),76(R12)
*S443: startpt:=ModNum*4;
         L     R2,68(R12)   MODNUM
         L     R3,0(R2)   MODNUM
         MHI   R3,4
         ST    R3,80(R12)   STARTPT
*S444: for( i:=0 until 4-1 ){
         XC    76(4,R12),76(R12)   I
AAL01506 L     R2,76(R12)   I
         CHI   R2,3
         JH    AAL01510
*S445: if( Reason[i+startpt]=EditNum ) then return;
         L     R3,76(R12)   I
         A     R3,80(R12)   STARTPT
         L     R4,72(R12)   REASON
         MHI   R3,4
         AR    R4,R3
         L     R5,0(R4)   REASON
         L     R6,64(R12)   EDITNUM
         C     R5,0(R6)   EDITNUM
         JNE   AAL01507
         J     AAL01511
*S446: if( Reason[i+startpt]=0 ) then {
AAL01507 L     R2,76(R12)   I
         A     R2,80(R12)   STARTPT
         L     R3,72(R12)   REASON
         MHI   R2,4
         AR    R3,R2
         L     R4,0(R3)   REASON
         LTR   R4,R4
         JNE   AAL01508
*S447: Reason[i+startpt]:=EditNum;
         L     R5,76(R12)   I
         A     R5,80(R12)   STARTPT
         L     R6,72(R12)   REASON
         MHI   R5,4
         AR    R6,R5
         L     R7,64(R12)   EDITNUM
         L     R8,0(R7)   EDITNUM
         ST    R8,0(R6)   REASON
*S448: return;
         J     AAL01511
AAL01508 EQU   *
AAL01509 LHI   R2,1
         A     R2,76(R12)   I
         ST    R2,76(R12)   I
         J     AAL01506
AAL01510 EQU   *
AAL01511 EQU   *
AAL01512 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC126
**************************
GAPCC126 CSECT
GAPCC126 AMODE ANY
GAPCC126 RMODE ANY
*XREF - GAPCC126 GAPC.indexOfModifier
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*        0068(R12)-> String (targetModifier)
*        0072(R12)-> Integer len 4 (idx)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01603
         DC    A(DMNSCMP) @00000
         DC    X'FFFFFFFF' @00004
         DC    H'2'  0 2 @00008
         DC    CL2'  ' @00010
*S491: if( -1<idx ) then {
AAL01603 L     R2,72(R12)   IDX
         L     R3,0(R2)   IDX
         CHI   R3,-1
         JNH   AAL01610
*S492: while( idx<5 ){
AAL01606 L     R2,72(R12)   IDX
         L     R3,0(R2)   IDX
         CHI   R3,5
         JNL   AAL01609
*S493: if( line->Modifiers[idx]<="  " ) then return -1;
         L     R4,64(R12)   LINE
         L     R5,0(R4)   LINE
         L     R6,72(R12)   IDX
         LA    R7,84(R5)   MODIFIERS
         L     R8,0(R6)   IDX
         MHI   R8,12
         AR    R7,R8
         ST    R7,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JH    AAL01607
         L     R3,60(R12)
         MVC   0(4,R3),4(R11)   -1
         J     AAL01611
*S494: if( line->Modifiers[idx]=targetModifier ) then return idx;
AAL01607 L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         L     R4,72(R12)   IDX
         LA    R5,84(R3)   MODIFIERS
         L     R6,0(R4)   IDX
         MHI   R6,12
         AR    R5,R6
         ST    R5,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   TARGETMODIFIER
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAL01608
         L     R8,60(R12)
         L     R2,72(R12)   IDX
         L     R3,0(R2)   IDX
         ST    R3,0(R8)
         J     AAL01611
*S495: idx+=1;
AAL01608 L     R2,72(R12)   IDX
         LHI   R3,1
         L     R4,72(R12)   IDX
         A     R3,0(R4)   IDX
         ST    R3,0(R2)   IDX
         J     AAL01606
*S496: }
*S497: }
*S498: return -1;
AAL01609 EQU   *
AAL01610 L     R2,60(R12)
         MVC   0(4,R2),4(R11)   -1
AAL01611 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC127
**************************
GAPCC127 CSECT
GAPCC127 AMODE ANY
GAPCC127 RMODE ANY
*XREF - GAPCC127 GAPC.stringToIntConversion
*  R11 + 0000 Literals        (8 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> String (s)
*        0068(R12)-> Integer len 4 (returnCode)
*        0072(R12)-> Integer len 4 (claimProcessedFlag)
*  R12 + 0076 Locals & temps  (4 bytes)
*        0076(R12)-> Integer len 4 (output)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01703
         DC    A(DMNS2I) @00000
         DC    A(V40LJMP) @00004
AAL01703 XC    76(4,R12),76(R12)
*S504: output := s;
         MVC   60(4,R13),64(R12)   S
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNS2I
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,76(R12)   OUTPUT
*S506: if (LastError) then {
         L     R15,144(R10)   LASTERROR
         LTR   R15,R15
         JE    AAL01706
*S507: base->OutClm_ClaimFlag := claimProcessedFlag;
         L     R3,72(R12)   CLAIMPROCESSEDFLAG
         L     R4,0(R3)   CLAIMPROCESSEDFLAG
         ST    R4,1884(R9)   OUTCLM_CLAIMFLAG
*S508: { return_code:=returnCode; goto exit_now; };
         L     R5,68(R12)   RETURNCODE
         L     R6,0(R5)   RETURNCODE
         ST    R6,3016(R9)   RETURN_CODE
         LA    R14,3020(R9)   EXIT_NOW
         ST    R14,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,4(R11)   V40LJMP
         BASR  R14,R15
*S509: }
*S510: return output;
AAL01706 L     R2,60(R12)
         L     R3,76(R12)   OUTPUT
         ST    R3,0(R2)
AAL01707 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC128
**************************
GAPCC128 CSECT
GAPCC128 AMODE ANY
GAPCC128 RMODE ANY
*XREF - GAPCC128 GAPC.isEditSuppressed
*  R11 + 0000 Literals        (20 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (EditNum)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01803
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    H'2'  0 2 @00008
         DC    CL2'78' @00010
         DC    CL2'83' @00012
         DC    CL2'84' @00014
         DC    CL2'89' @00016
*V21.2 Added here to suppress certain edits for newly added non-opps c
*S518: if (claim->Bits->Nopps
AAL01803 TM    3004(R9),1   NOPPS
         JE    AAL01810
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,10(R11)   78
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL01806
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,12(R11)   83
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAL01806
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,14(R11)   84
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JE    AAL01806
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,16(R11)   89
         ST    R14,64(R13)
         MVC   70(2,R13),8(R11)   2
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAL01810
*S519: and (base->BillType = "78"
*S520: or base->BillType = "83"
*S521: or base->BillType = "84"
*S522: or base->BillType = "89")) then {
*S523: if (EditNum = 1
AAL01806 L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,1
         JE    AAL01807
         L     R4,64(R12)   EDITNUM
         L     R5,0(R4)   EDITNUM
         CHI   R5,2
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,3
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,5
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,6
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,8
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,20
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,22
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,40
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,41
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,106
         JE    AAL01807
         L     R2,64(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         CHI   R3,108
         JNE   AAL01808
*S524: or EditNum = 2
*S525: or EditNum = 3
*S526: or EditNum = 5
*S527: or EditNum = 6
*S528: or EditNum = 8
*S529: or EditNum = 20
*S530: or EditNum = 22
*S531: or EditNum = 40
*S532: or EditNum = 41
*S533: or EditNum = 106
*S534: or EditNum = 108) then {
*S535: return 0;
AAL01807 L     R2,60(R12)
         XC    0(4,R2),0(R2)
         J     AAL01811
         J     AAL01809
*S536: }
*S537: else
*S538: return 1;
AAL01808 L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
         J     AAL01811
*S539: }
*S540: return 0;
AAL01809 EQU   *
AAL01810 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAL01811 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC129
**************************
GAPCC129 CSECT
GAPCC129 AMODE ANY
GAPCC129 RMODE ANY
*XREF - GAPCC129 GAPC.isEditBypass
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> reference to Reference len 4 (line)
*        0068(R12)-> Integer len 4 (EditNum)
*  R12 + 0072 Locals & temps  (8 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 (rc)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL01903
         DC    A(DMNSEL) @00000
         DC    F'1' @00004
         DC    H'4'  0 4 @00008
         DC    H'1'  0 1 @00010
         DC    H'7'  0 7 @00012
AAL01903 XC    72(8,R12),72(R12)
* V20.1 Checks to see if the edit that is ready to activate is bypasse
* We need to check both the line level and claim level edits even thou
* edits the line object here will be No_Line.
*S548: loop(rc:=select DataEditBypassTbl using byEdit(EditNum); rc<1;
         MVC   60(2,R13),8(R11)   4
         MVC   62(2,R13),10(R11)   1
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,64(R13)
         LA    R2,68(R13)
         L     R3,68(R12)   EDITNUM
         L     R4,0(R3)   EDITNUM
         STH   R4,0(R2)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R5,60(R13)
         CHI   R5,1
         JH    AAL01906
         L     R6,64(R13)
         LR    R1,R9
         AHI   R1,4228
         MVC   0(5,R1),0(R6)
AAL01906 ST    R5,76(R12)   RC
AAL01907 L     R2,76(R12)   RC
         CHI   R2,1
         JNL   AAL01923
*S549: if(base->Version >= DataEditBypassTbl->LoVersion
         L     R3,1868(R9)   VERSION
         XR    R14,R14
         LR    R1,R9
         AHI   R1,4230
         TM    0(R1),128   LOVERSION
         JE    AAL01908
         LHI   R14,-1
AAL01908 LR    R1,R9
         AHI   R1,4230
         IC    R14,0(R1)   LOVERSION
         CR    R3,R14
         JL    AAL01920
         XR    R4,R4
         LR    R1,R9
         AHI   R1,4231
         TM    0(R1),128   HIVERSION
         JE    AAL01909
         LHI   R4,-1
AAL01909 LR    R1,R9
         AHI   R1,4231
         IC    R4,0(R1)   HIVERSION
         C     R4,1868(R9)   VERSION
         JL    AAL01920
         L     R2,68(R12)   EDITNUM
         L     R3,0(R2)   EDITNUM
         LR    R1,R9
         AHI   R1,4228
         CH    R3,0(R1)   EDIT
         JNE   AAL01920
*S550: and DataEditBypassTbl->HiVersion >= base->Version
*S551: and EditNum = DataEditBypassTbl->Edit) then {
*S552: if (DataEditBypassTbl->flags->LineBypassRequired and line <> ba
         LR    R1,R9
         AHI   R1,4232
         TM    0(R1),128   LINEBYPASSREQUIRED
         JE    AAL01914
         L     R2,64(R12)   LINE
         L     R3,0(R2)   LINE
         C     R3,88(R9)   NOLINE
         JE    AAL01914
*S553: for(i:=0 until 4-1){
         XC    72(4,R12),72(R12)   I
AAL01910 L     R2,72(R12)   I
         CHI   R2,3
         JH    AAL01913
*S554: if(line->BypassEdits[i]=EditNum) then return 1;
         L     R3,64(R12)   LINE
         L     R4,0(R3)   LINE
         LA    R5,1104(R4)   BYPASSEDITS
         L     R6,72(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,0(R5)   BYPASSEDITS
         L     R8,68(R12)   EDITNUM
         C     R7,0(R8)   EDITNUM
         JNE   AAL01911
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   1
         J     AAL01924
AAL01911 EQU   *
AAL01912 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAL01910
AAL01913 J     AAL01919
*S555: }
*S556: }
*S557: else {
*S558: for(i:=0 until claim->LastBypEditIdx-1) {
AAL01914 XC    72(4,R12),72(R12)   I
AAL01915 L     R2,3012(R9)   LASTBYPEDITIDX
         AHI   R2,-1
         C     R2,72(R12)   I
         JL    AAL01918
*S559: if(claim->BypassEdits[i]->edit=EditNum) then return 1;
         L     R3,3008(R9)   BYPASSEDITS
         L     R4,72(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   BYPASSEDITS
         L     R6,0(R5)   EDIT
         L     R7,68(R12)   EDITNUM
         C     R6,0(R7)   EDITNUM
         JNE   AAL01916
         L     R8,60(R12)
         MVC   0(4,R8),4(R11)   1
         J     AAL01924
AAL01916 EQU   *
AAL01917 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAL01915
AAL01918 EQU   *
AAL01919 EQU   *
AAL01920 EQU   *
AAL01921 MVC   60(2,R13),12(R11)   7
         LR    R14,R9
         AHI   R14,4220   DATAEDITBYPASSTBL
         ST    R14,64(R13)
         L     R15,0(R11)   DMNSEL
         BASR  R14,R15
         L     R2,60(R13)
         CHI   R2,1
         JH    AAL01922
         L     R3,64(R13)
         LR    R1,R9
         AHI   R1,4228
         MVC   0(5,R1),0(R3)
AAL01922 ST    R2,76(R12)   RC
         J     AAL01907
*S560: }
*S561: }
*S562: }
*S563: }
*S564: return 0;
AAL01923 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAL01924 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC130
**************************
GAPCC130 CSECT
GAPCC130 AMODE ANY
GAPCC130 RMODE ANY
*XREF - GAPCC130 GAPC.findNextEmptyBypass
*  R11 + 0000 Literals        (4 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> array [1] of
*                    array [4] of
*                    Integer len 4 (editBypass)
*  R12 + 0068 Locals & temps  (4 bytes)
*        0068(R12)-> Integer len 4 (i)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL02003
         DS    0F
         DC    X'FFFFFFFF' @00000
AAL02003 XC    68(4,R12),68(R12)
* V20.1 Finds the next open slot in the bypass array so everything is
* Return the next empty slot in the array. If we're full return -1
* because that means we've tried putting more edits into this array th
* allowed by the API.
*S573: for(i:=0 until 4-1){
         XC    68(4,R12),68(R12)   I
AAL02006 L     R2,68(R12)   I
         CHI   R2,3
         JH    AAL02009
*S574: if (editBypass[i] = 0) then {
         L     R3,64(R12)   EDITBYPASS
         L     R4,68(R12)   I
         MHI   R4,4
         AR    R3,R4
         L     R5,0(R3)   EDITBYPASS
         LTR   R5,R5
         JNE   AAL02007
*S575: return i;
         L     R6,60(R12)
         L     R7,68(R12)   I
         ST    R7,0(R6)
         J     AAL02010
AAL02007 EQU   *
AAL02008 LHI   R2,1
         A     R2,68(R12)   I
         ST    R2,68(R12)   I
         J     AAL02006
*S576: }
*S577: }
*S578: return -1;
AAL02009 L     R2,60(R12)
         MVC   0(4,R2),0(R11)   -1
AAL02010 LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC131
**************************
GAPCC131 CSECT
GAPCC131 AMODE ANY
GAPCC131 RMODE ANY
*XREF - GAPCC131 GAPC.addConditionCode
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (8 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> String (cc)
*  R12 + 0068 Locals & temps  (8 bytes)
*        0068(R12)-> Integer len 4 (foundCC)
*        0072(R12)-> Integer len 4 (i)
*  R13 + 0000 Stack           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,80  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAL02103
         DC    A(DMNSCMP) @00000
         DC    F'1' @00004
         DC    A(DMNSCPY) @00008
AAL02103 XC    68(8,R12),68(R12)
*S584: for(i:=0 until base->NumConditionCodeOutput-1){
         XC    72(4,R12),72(R12)   I
AAL02106 L     R2,1908(R9)   NUMCONDITIONCODEOUTPUT
         AHI   R2,-1
         C     R2,72(R12)   I
         JL    AAL02109
*S585: if(base->ConditionCodesOutput[i] = cc) then {
         LA    R3,860(R9)   CONDITIONCODESOUTPUT
         L     R4,72(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),64(R12)   CC
         XC    70(2,R13),70(R13)
         L     R15,0(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JNE   AAL02107
*S586: foundCC := 1;
         MVC   68(4,R12),4(R11)   1
*S587: break;
         J     AAL02109
AAL02107 EQU   *
AAL02108 LHI   R2,1
         A     R2,72(R12)   I
         ST    R2,72(R12)   I
         J     AAL02106
*S588: }
*S589: }
*S590: if (not foundCC and base->NumConditionCodeOutput<10) then {
AAL02109 L     R15,68(R12)   FOUNDCC
         LTR   R15,R15
         JNE   AAL02110
         L     R2,1908(R9)   NUMCONDITIONCODEOUTPUT
         CHI   R2,10
         JNL   AAL02110
*S591: base->ConditionCodesOutput[base->NumConditionCodeOutput] := cc;
         LA    R2,860(R9)   CONDITIONCODESOUTPUT
         L     R3,1908(R9)   NUMCONDITIONCODEOUTPUT
         MHI   R3,12
         AR    R2,R3
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),64(R12)   CC
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S592: base->NumConditionCodeOutput += 1;
         LHI   R4,1
         A     R4,1908(R9)   NUMCONDITIONCODEOUTPUT
         ST    R4,1908(R9)   NUMCONDITIONCODEOUTPUT
AAL02110 EQU   *
AAL02111 LM    R0,R14,0(R12)
         BR    R14
*^  Compiled on Thu May 14 08:25:38 2020
*^ IDENTS - GAPCC AAM
**************************
*    GAPCC132
**************************
GAPCC132 CSECT
GAPCC132 AMODE ANY
GAPCC132 RMODE ANY
*XREF - GAPCC132 GAPC.VarInitRecord (gateway)
*  R11 + 0000 Literals        (12 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> Integer len 4 (_attribute table save_)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00102
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00102 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00103
         DC    A(GAPCC100) @00000
         DC    A(GAPCCATT) @00004
         DC    A(DMNCNUM) @00008
AAM00103 XC    64(4,R12),64(R12)
         MVC   64(4,R12),48(R10)
         MVC   48(4,R10),4(R11)   GAPCCATT
         MVC   68(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),4(R11)   GAPCCATT
         L     R15,8(R11)   DMNCNUM
         BASR  R14,R15
*S10: do GAPC.OceInit();
         L     R15,0(R11)   GAPCC100
         BASR  R14,R15
AAM00106 MVC   48(4,R10),64(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),68(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC133
**************************
GAPCC133 CSECT
GAPCC133 AMODE ANY
GAPCC133 RMODE ANY
*XREF - GAPCC133 GAPC.VarLoadDxCode (gateway)
*  R11 + 0000 Literals        (40 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (16 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*        0068(R12)-> String (dxcode)
*        0072(R12)-> String (poa)
*  R12 + 0076 Local pool      (8 bytes)
*  R12 + 0084 Locals & temps  (24 bytes)
*        0084(R12)-> reference to Struct len 148 (dxp)
*        0088(R12)-> Integer len 4 (_attribute table save_)
*        0092(R12)-> String ()
*        0104(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 112)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,112  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00202
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00202 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00203
         DC    A(DMNSLOG) @00000
         DC    A(DMNCCAT) @00004
         DC    A(DMNEADD) @00008
         DC    A(DMNATFD) @00012
         DC    A(DMNSCPY) @00016
         DC    A(GAPCCATT) @00020
         DC    A(DMNCNUM) @00024
         DC    A(DMNFREE) @00028
         DC    H'2'  0 2 @00032
         DC    H'6'  0 6 @00034
         DC    H'148'  0 148 @00036
         DC    CL2'I.' @00038
AAM00203 XC    76(8,R12),76(R12)
         LA    R2,76(R12)
         MVC   80(4,R12),44(R10)
         ST    R2,44(R10)
         XC    84(16,R12),84(R12)
         ST    R2,100(R12)
         MVC   88(4,R12),48(R10)
         MVC   48(4,R10),20(R11)   GAPCCATT
         MVC   104(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),20(R11)   GAPCCATT
         L     R15,24(R11)   DMNCNUM
         BASR  R14,R15
*S22: if( dxcode ) then
         L     R2,68(R12)   DXCODE
         ST    R2,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAM00206
*S23: base->dx:="I."+dxcode;
         L     R4,68(R12)   DXCODE
         LA    R14,92(R12)
         ST    R14,60(R13)
         XC    72(2,R13),72(R13)
         LA    R14,38(R11)   I.
         ST    R14,64(R13)
         MVC   74(2,R13),32(R11)   2
         ST    R4,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,4(R11)   DMNCCAT
         BASR  R14,R15
         LA    R14,12(R9)   DX
         ST    R14,60(R13)
         LA    R14,92(R12)
         ST    R14,64(R13)
         XC    72(2,R13),72(R13)
         XC    68(4,R13),68(R13)
         L     R15,8(R11)   DMNEADD
         BASR  R14,R15
         J     AAM00207
*S24: else
*S25: base->dx:="I.";
AAM00206 LA    R14,12(R9)   DX
         ST    R14,60(R13)
         LA    R14,38(R11)   I.
         ST    R14,64(R13)
         MVC   72(2,R13),32(R11)   2
         XC    68(4,R13),68(R13)
         L     R15,8(R11)   DMNEADD
         BASR  R14,R15
*S26: dxp:=&CCP->Dx;
AAM00207 MVC   60(4,R13),128(R10)   CCP
         MVC   64(2,R13),34(R11)   6
         MVC   66(2,R13),36(R11)   148
         L     R15,12(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,84(R12)   DXP
*S34: dxp->dx:=dxcode;
         L     R3,84(R12)   DXP
         LA    R14,4(R3)   DX
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   DXCODE
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S35: dxp->poa:=poa;/*v11.2*//*V13.0T HIPAA*/
         L     R4,84(R12)   DXP
         LA    R14,16(R4)   POA
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),72(R12)   POA
         XC    70(2,R13),70(R13)
         L     R15,16(R11)   DMNSCPY
         BASR  R14,R15
*S36: dxp->occurrence:=occurrence;
         L     R5,84(R12)   DXP
         L     R6,64(R12)   OCCURRENCE
         L     R7,0(R6)   OCCURRENCE
         ST    R7,0(R5)   OCCURRENCE
*S37: base->NumDx+=1;
         LHI   R8,1
         A     R8,1872(R9)   NUMDX
         ST    R8,1872(R9)   NUMDX
AAM00208 LA    R3,76(R12)
         ST    R3,60(R13)
         L     R15,28(R11)   DMNFREE
         BASR  R14,R15
         MVC   48(4,R10),88(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),104(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC134
**************************
GAPCC134 CSECT
GAPCC134 AMODE ANY
GAPCC134 RMODE ANY
*XREF - GAPCC134 GAPC.VarLoadSgCode (gateway)
*  R11 + 0000 Literals        (100 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (72 bytes)
*        0060(R12)-> Void len 0 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*        0068(R12)-> String (Hcpcs)
*        0072(R12)-> array [1] of
*                    array [5] of
*                    String (Modifiers)
*        0076(R12)-> String (ServiceDate)
*        0080(R12)-> Integer len 4 (RevenueCode)
*        0084(R12)-> String (ServiceUnitsInput)
*        0088(R12)-> String (LineChargesInput)
*        0092(R12)-> String (ActionFlagInput)
*        0096(R12)-> array [1] of
*                    array [4] of
*                    String (CBEdits)
*        0100(R12)-> String (CBAPC)
*        0104(R12)-> String (CBSI)
*        0108(R12)-> Integer len 4 (CBPaymentIndicator)
*        0112(R12)-> String (CBDiscountingFormula)
*        0116(R12)-> String (CBLIDenRejFlag)
*        0120(R12)-> String (CBPackagingFlag)
*        0124(R12)-> String (CBPAF)
*        0128(R12)-> String (CBPMF)
*  R12 + 0132 Locals & temps  (28 bytes)
*        0132(R12)-> reference to Struct len 1120 (line)
*        0136(R12)-> Integer len 4 (left)
*        0140(R12)-> Integer len 4 (_attribute table save_)
*        0144(R12)-> Void ()
*        0156(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 160)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,160  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00302
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00302 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00303
         DC    A(DMNSLOG) @00000
         DC    A(DMNEADD) @00004
         DC    A(DMNATFD) @00008
         DC    A(DMNSCPY) @00012
         DC    A(DMNRPLC) @00016
         DC    A(DMNGETDX) @00020
         DC    F'1' @00024
         DC    A(DMNLONG) @00028
         DC    A(DMNTRMR) @00032
         DC    A(DMNS2I) @00036
         DC    X'FFFFFFFF' @00040
         DC    A(DMNSCMP) @00044
         DC    A(GAPCCATT) @00048
         DC    A(DMNCNUM) @00052
         DC    H'2'  0 2 @00056
         DC    H'10'  0 10 @00058
         DC    H'1120'  4 96 @00060
         DC    XL10'100500041C0000000000' @00062
         DC    H'8'  0 8 @00072
         DC    H'1'  0 1 @00074
         DC    XL10'1C001C001C001C000000' @00076
         DC    CL2'H.' @00086
         DC    CL8'%s%Y%m%d' @00088
         DC    CL1' ' @00096
         DC    CL1'0' @00097
AAM00303 XC    132(24,R12),132(R12)
         MVC   140(4,R12),48(R10)
         MVC   48(4,R10),48(R11)   GAPCCATT
         MVC   156(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),48(R11)   GAPCCATT
         L     R15,52(R11)   DMNCNUM
         BASR  R14,R15
*string    CBPaymentIndicator,
*S66: if( Hcpcs ) then
         L     R2,68(R12)   HCPCS
         ST    R2,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JE    AAM00306
*S67: base->lines:=Hcpcs;
         LA    R14,28(R9)   LINES
         ST    R14,60(R13)
         MVC   64(4,R13),68(R12)   HCPCS
         XC    72(2,R13),72(R13)
         XC    68(4,R13),68(R13)
         L     R15,4(R11)   DMNEADD
         BASR  R14,R15
         J     AAM00307
*S68: else
*S69: base->lines:="H.";
AAM00306 LA    R14,28(R9)   LINES
         ST    R14,60(R13)
         LA    R14,86(R11)   H.
         ST    R14,64(R13)
         MVC   72(2,R13),56(R11)   2
         XC    68(4,R13),68(R13)
         L     R15,4(R11)   DMNEADD
         BASR  R14,R15
*S70: line:=&CCP->line;
AAM00307 MVC   60(4,R13),128(R10)   CCP
         MVC   64(2,R13),58(R11)   10
         MVC   66(2,R13),60(R11)   1120
         L     R15,8(R11)   DMNATFD
         BASR  R14,R15
         L     R2,60(R13)
         ST    R2,132(R12)   LINE
*S79: base->NumLines +=1;
         LHI   R3,1
         A     R3,1892(R9)   NUMLINES
         ST    R3,1892(R9)   NUMLINES
*S80: if( Hcpcs ) then
         L     R4,68(R12)   HCPCS
         ST    R4,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAM00308
*S81: line->Hcpcs:=Hcpcs;
         L     R6,132(R12)   LINE
         LA    R14,144(R6)   HCPCS
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),68(R12)   HCPCS
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S82: line->RevenueCode :=RevenueCode;
AAM00308 L     R2,132(R12)   LINE
         L     R3,80(R12)   REVENUECODE
         L     R4,0(R3)   REVENUECODE
         ST    R4,464(R2)   REVENUECODE
*S83: line->Modifiers :=Modifiers;
         L     R5,132(R12)   LINE
         L     R6,72(R12)   MODIFIERS
         LA    R14,62(R11)
         ST    R14,60(R13)
         LA    R14,84(R5)
         ST    R14,64(R13)
         ST    R6,68(R13)
         L     R15,16(R11)   DMNRPLC
         BASR  R14,R15
*S84: line->ServiceDate :=StrToDate( "%s%Y%m%d", ServiceDate, left );/
         L     R7,132(R12)   LINE
         LA    R14,88(R11)   %S%Y%M%D
         ST    R14,60(R13)
         MVC   68(2,R13),72(R11)   8
         MVC   64(4,R13),76(R12)   SERVICEDATE
         XC    70(2,R13),70(R13)
         LA    R14,136(R12)   LEFT
         ST    R14,72(R13)
         L     R15,20(R11)   DMNGETDX
         BASR  R14,R15
         LD    F0,64(R13)
         MVC   60(4,R13),24(R11)   1
         STD   F0,64(R13)
         L     R15,28(R11)   DMNLONG
         BASR  R14,R15
         L     R8,72(R13)
         ST    R8,60(R7)   SERVICEDATE
*S85: line->ServiceUnitsInput :=ServiceUnitsInput;%legacy to capture w
         L     R2,132(R12)   LINE
         LA    R14,232(R2)   SERVICEUNITSINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),84(R12)   SERVICEUNITSINPUT
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S86: StrTrimRight( ServiceUnitsInput, " " );
         MVC   60(4,R13),84(R12)   SERVICEUNITSINPUT
         LA    R14,96(R11)
         ST    R14,144(R12)
         MVC   148(2,R12),74(R11)   1
         MVC   150(2,R12),74(R11)   1
         XC    152(4,R12),152(R12)
         LA    R14,144(R12)
         ST    R14,64(R13)
         L     R15,32(R11)   DMNTRMR
         BASR  R14,R15
*S87: if( ServiceUnitsInput ) then {
         L     R3,84(R12)   SERVICEUNITSINPUT
         ST    R3,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,0(R11)   DMNSLOG
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JE    AAM00310
*S88: line->ServiceUnits :=ServiceUnitsInput;
         L     R5,132(R12)   LINE
         MVC   60(4,R13),84(R12)   SERVICEUNITSINPUT
         XC    64(4,R13),64(R13)
         L     R15,36(R11)   DMNS2I
         BASR  R14,R15
         L     R6,60(R13)
         ST    R6,468(R5)   SERVICEUNITS
*S89: line->ServiceUnitsPay :=ServiceUnitsInput;
         L     R7,132(R12)   LINE
         MVC   60(4,R13),84(R12)   SERVICEUNITSINPUT
         XC    64(4,R13),64(R13)
         L     R15,36(R11)   DMNS2I
         BASR  R14,R15
         L     R8,60(R13)
         ST    R8,568(R7)   SERVICEUNITSPAY
*S90: if( LastError ) then
         L     R15,144(R10)   LASTERROR
         LTR   R15,R15
         JE    AAM00309
*S91: line->ServiceUnits :=-1;
         L     R2,132(R12)   LINE
         MVC   468(4,R2),40(R11)   -1
*S92: }
*S93: line->LineChargesInput :=LineChargesInput;
AAM00309 EQU   *
AAM00310 L     R2,132(R12)   LINE
         LA    R14,220(R2)   LINECHARGESINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),88(R12)   LINECHARGESINPUT
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S94: line->ActionFlagInput :=ActionFlagInput;/*V15.3, FQHC */
         L     R3,132(R12)   LINE
         LA    R14,168(R3)   ACTIONFLAGINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),92(R12)   ACTIONFLAGINPUT
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S95: line->ActionFlag :=( ActionFlagInput<"0" )? "0" : ActionFlagInpu
         L     R4,132(R12)   LINE
         MVC   60(4,R13),92(R12)   ACTIONFLAGINPUT
         XC    68(2,R13),68(R13)
         LA    R14,97(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),74(R11)   1
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JL    AAM00311
         L     R2,92(R12)   ACTIONFLAGINPUT
         J     AAM00312
AAM00311 LA    R14,97(R11)   0
         ST    R14,144(R12)   0
         MVC   148(2,R12),74(R11)   1
         MVC   150(2,R12),74(R11)   1
         XC    152(4,R12),152(R12)   0
         LA    R2,144(R12)   0
AAM00312 LA    R14,156(R4)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S96: line->LineNo :=occurrence;
         L     R3,132(R12)   LINE
         L     R5,64(R12)   OCCURRENCE
         L     R6,0(R5)   OCCURRENCE
         ST    R6,460(R3)   LINENO
*S98: line->CBEdits := CBEdits;
         L     R7,132(R12)   LINE
         L     R8,96(R12)   CBEDITS
         LA    R14,76(R11)
         ST    R14,60(R13)
         LA    R14,308(R7)
         ST    R14,64(R13)
         ST    R8,68(R13)
         L     R15,16(R11)   DMNRPLC
         BASR  R14,R15
*S99: line->CBAPC := CBAPC;
         L     R4,132(R12)   LINE
         LA    R14,356(R4)   CBAPC
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),100(R12)   CBAPC
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S100: line->CBSI := CBSI;
         L     R2,132(R12)   LINE
         LA    R14,368(R2)   CBSI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),104(R12)   CBSI
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S101: line->CBPaymentIndicator := CBPaymentIndicator;
         L     R3,132(R12)   LINE
         L     R5,108(R12)   CBPAYMENTINDICATOR
         L     R6,0(R5)   CBPAYMENTINDICATOR
         ST    R6,380(R3)   CBPAYMENTINDICATOR
*S102: line->CBDiscountingFormula := CBDiscountingFormula;
         L     R7,132(R12)   LINE
         LA    R14,384(R7)   CBDISCOUNTINGFORMULA
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),112(R12)   CBDISCOUNTINGFORMULA
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S103: line->CBLineItemDenRejFlag := CBLIDenRejFlag;
         L     R8,132(R12)   LINE
         LA    R14,396(R8)   CBLINEITEMDENREJFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),116(R12)   CBLIDENREJFLAG
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S104: line->CBPackagingFlag := CBPackagingFlag;
         L     R4,132(R12)   LINE
         LA    R14,408(R4)   CBPACKAGINGFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),120(R12)   CBPACKAGINGFLAG
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S105: line->CBPAF := CBPAF;
         L     R2,132(R12)   LINE
         LA    R14,420(R2)   CBPAF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),124(R12)   CBPAF
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
*S106: line->CBPMF := CBPMF;
         L     R3,132(R12)   LINE
         LA    R14,432(R3)   CBPMF
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),128(R12)   CBPMF
         XC    70(2,R13),70(R13)
         L     R15,12(R11)   DMNSCPY
         BASR  R14,R15
AAM00313 MVC   48(4,R10),140(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),156(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC135
**************************
GAPCC135 CSECT
GAPCC135 AMODE ANY
GAPCC135 RMODE ANY
*XREF - GAPCC135 GAPC.VarOceApcCompute (gateway)
*  R11 + 0000 Literals        (152 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (132 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (Age)
*        0068(R12)-> Integer len 4 (Sex)
*        0072(R12)-> String (Fromdate)
*        0076(R12)-> String (Thrudate)
*        0080(R12)-> array [1] of
*                    array [30] of
*                    String (ConditionCodes)
*        0084(R12)-> array [1] of
*                    array [30] of
*                    String (OccurrenceCodes)
*        0088(R12)-> array [1] of
*                    array [36] of
*                    String (ValueCodes)
*        0092(R12)-> String (BillType)
*        0096(R12)-> String (NPI)
*        0100(R12)-> String (OSCAR)
*        0104(R12)-> String (PatientStatus)
*        0108(R12)-> Integer len 4 (OPPSFlag)
*        0112(R12)-> Integer len 4 (ClaimProcFlag)
*        0116(R12)-> Integer len 4 (NumLines)
*        0120(R12)-> Integer len 4 (OverallClaimDisp)
*        0124(R12)-> Integer len 4 (ClaimRejDisp)
*        0128(R12)-> Integer len 4 (ClaimDenDisp)
*        0132(R12)-> Integer len 4 (ClaimRtpDisp)
*        0136(R12)-> Integer len 4 (ClaimSusDisp)
*        0140(R12)-> Integer len 4 (LineItemRejDisp)
*        0144(R12)-> Integer len 4 (LineItemDenDisp)
*        0148(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (ClaimRejReas)
*        0152(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (ClaimDenReas)
*        0156(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (ClaimRtpReas)
*        0160(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (ClaimSusReas)
*        0164(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (LineItemRejReas)
*        0168(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (LineItemDenReas)
*        0172(R12)-> Integer len 4 (ApcReturnFlag)
*        0176(R12)-> String (VersionId)
*        0180(R12)-> Integer len 4 (NoppsBillFlag)
*        0184(R12)-> String (ValueCodeBuffer)
*        0188(R12)-> array [1] of
*                    array [10] of
*                    String (ConditionCodeBuffer)
*  R12 + 0192 Local pool      (8 bytes)
*  R12 + 0200 Locals & temps  (44 bytes)
*        0200(R12)-> Integer len 4 (i)
*        0204(R12)-> Integer len 4 (left)
*        0208(R12)-> Integer len 4 (_attribute table save_)
*        0212(R12)-> Integer len 4 ()
*        0216(R12)-> String ()
*        0228(R12)-> Void ()
*        0240(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 248)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,248  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00402
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00402 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00403
         DC    A(GAPCC109) @00000
         DC    F'4' @00004
         DC    F'1' @00008
         DC    A(DMNGETDX) @00012
         DC    A(DMNLONG) @00016
         DC    A(DMNRPLC) @00020
         DC    A(DMNSCPY) @00024
         DC    F'0' @00028
         DC    F'2' @00032
         DC    A(DMNSUBS) @00036
         DC    F'113001120' @00040
         DC    A(DMNSCMP) @00044
         DC    F'9' @00048
         DC    A(GAPCC101) @00052
         DC    A(DMNSLOG) @00056
         DC    A(DMNFORM) @00060
         DC    A(DMNCCAT) @00064
         DC    A(GAPCCATT) @00068
         DC    A(DMNCNUM) @00072
         DC    A(DMNFREE) @00076
         DC    H'8'  0 8 @00080
         DC    XL10'101E00041C0000000000' @00082
         DC    XL10'101E00041C0000000000' @00092
         DC    H'1'  0 1 @00102
         DC    H'2'  0 2 @00104
         DC    XL10'100A00041C0000000000' @00106
         DC    X'8018' @00116
         DC    H'11'  0 11 @00118
         DC    CL8'%s%Y%m%d' @00120
         DC    CL1'0' @00128
         DC    CL1'9' @00129
         DC    CL2'  ' @00130
         DC    CL8'%-2s%09i' @00132
         DC    CL11'  000000000' @00140
AAM00403 XC    192(8,R12),192(R12)
         LA    R4,192(R12)
         MVC   196(4,R12),44(R10)
         ST    R4,44(R10)
         XC    200(24,R12),200(R12)
         ST    R4,224(R12)
         XC    228(12,R12),228(R12)
         MVC   208(4,R12),48(R10)
         MVC   48(4,R10),68(R11)   GAPCCATT
         MVC   240(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),68(R11)   GAPCCATT
         L     R15,72(R11)   DMNCNUM
         BASR  R14,R15
*INPUT
*OUTPUT
* NOTE: BOTH DX 9 AND 10 TABLES ARE LOADED. THIS IS ONLY EFFICIENT FOR
* A MIXTURE OF ICD9 AND 10 CLAIMS EXIST. HOWEVER, BAL ALWAYS RE-OPENS
*S154: if( not initialized ) then {
         L     R15,3048(R9)   INITIALIZED
         LTR   R15,R15
         JNE   AAM00407
*S155: if( do GAPC.open() ) then/*NON-ZERO=ERROR*/
         LA    R14,212(R12)
         ST    R14,60(R13)
         L     R15,0(R11)   GAPCC109
         BASR  R14,R15
         L     R15,212(R12)
         LTR   R15,R15
         JE    AAM00406
*S156: return Error->RC_BadRotOpen;
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   4
         J     AAM00427
*S157: initialized:=1;
AAM00406 MVC   3048(4,R9),8(R11)   1
*S158: }
* Read Input
*S161: base->Age :=Age;
AAM00407 L     R2,64(R12)   AGE
         L     R3,0(R2)   AGE
         ST    R3,1876(R9)   AGE
*S162: base->Sex :=Sex;
         L     R4,68(R12)   SEX
         L     R5,0(R4)   SEX
         ST    R5,1880(R9)   SEX
*S163: base->FromDate :=StrToDate( "%s%Y%m%d", Fromdate, left );/*v8.0
         LA    R14,120(R11)   %S%Y%M%D
         ST    R14,60(R13)
         MVC   68(2,R13),80(R11)   8
         MVC   64(4,R13),72(R12)   FROMDATE
         XC    70(2,R13),70(R13)
         LA    R14,204(R12)   LEFT
         ST    R14,72(R13)
         L     R15,12(R11)   DMNGETDX
         BASR  R14,R15
         LD    F0,64(R13)
         MVC   60(4,R13),8(R11)   1
         STD   F0,64(R13)
         L     R15,16(R11)   DMNLONG
         BASR  R14,R15
         L     R6,72(R13)
         ST    R6,96(R9)   FROMDATE
*S164: base->ThruDate :=StrToDate( "%s%Y%m%d", Thrudate, left );/*v8.0
         LA    R14,120(R11)   %S%Y%M%D
         ST    R14,60(R13)
         MVC   68(2,R13),80(R11)   8
         MVC   64(4,R13),76(R12)   THRUDATE
         XC    70(2,R13),70(R13)
         LA    R14,204(R12)   LEFT
         ST    R14,72(R13)
         L     R15,12(R11)   DMNGETDX
         BASR  R14,R15
         LD    F2,64(R13)
         MVC   60(4,R13),8(R11)   1
         STD   F2,64(R13)
         L     R15,16(R11)   DMNLONG
         BASR  R14,R15
         L     R7,72(R13)
         ST    R7,104(R9)   THRUDATE
*S165: base->CcCodes :=ConditionCodes;
         L     R8,80(R12)   CONDITIONCODES
         LA    R14,82(R11)
         ST    R14,60(R13)
         LA    R14,140(R9)
         ST    R14,64(R13)
         ST    R8,68(R13)
         L     R15,20(R11)   DMNRPLC
         BASR  R14,R15
*S166: base->OccurCodes :=OccurrenceCodes;
         L     R2,84(R12)   OCCURRENCECODES
         LA    R14,92(R11)
         ST    R14,60(R13)
         LA    R14,500(R9)
         ST    R14,64(R13)
         ST    R2,68(R13)
         L     R15,20(R11)   DMNRPLC
         BASR  R14,R15
*S167: base->FullBillType :=BillType;
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),92(R12)   BILLTYPE
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S168: base->BillType :=StrPartial( base->FullBillType, 0, 2 );
         LA    R14,128(R9)   BILLTYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,116(R9)   FULLBILLTYPE
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),28(R11)   0
         MVC   76(4,R13),32(R11)   2
         L     R15,36(R11)   DMNSUBS
         BASR  R14,R15
*S169: claim->NPI :=NPI;
         LA    R14,2148(R9)   NPI
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),96(R12)   NPI
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S170: claim->OSCAR :=OSCAR;
         LA    R14,2160(R9)   OSCAR
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),100(R12)   OSCAR
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S171: claim->StatusCode :=PatientStatus;
         LA    R14,2172(R9)   STATUSCODE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         MVC   64(4,R13),104(R12)   PATIENTSTATUS
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S172: claim->OPPSFlag :=OPPSFlag;
         L     R3,108(R12)   OPPSFLAG
         L     R4,0(R3)   OPPSFLAG
         ST    R4,2208(R9)   OPPSFLAG
*S173: claim->CodeType := ( base->FromDate < 10/1/2015d )? "9" : "0";/
         CL    R6,40(R11)   113001120
         JL    AAM00408
         LA    R2,128(R11)   0
         J     AAM00409
AAM00408 LA    R2,129(R11)   9
AAM00409 LA    R14,2196(R9)   CODETYPE
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R2,64(R13)
         MVC   70(2,R13),102(R11)   1
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S175: loop( i:=0; i<30 and base->OccurCodes[i]<>"  "; i+=1 );
         XC    200(4,R12),200(R12)   I
AAM00410 L     R2,200(R12)   I
         CHI   R2,30
         JNL   AAM00412
         LA    R3,500(R9)   OCCURCODES
         L     R4,200(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),104(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAM00412
AAM00411 LHI   R2,1
         A     R2,200(R12)   I
         ST    R2,200(R12)   I
         J     AAM00410
*S176: base->NumOccur:=i;
AAM00412 L     R2,200(R12)   I
         ST    R2,1896(R9)   NUMOCCUR
*S178: loop( i:=0; i<30 and base->CcCodes[i]<>"  "; i+=1 );
         XC    200(4,R12),200(R12)   I
AAM00413 L     R2,200(R12)   I
         CHI   R2,30
         JNL   AAM00415
         LA    R3,140(R9)   CCCODES
         L     R4,200(R12)   I
         MHI   R4,12
         AR    R3,R4
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),104(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JE    AAM00415
AAM00414 LHI   R2,1
         A     R2,200(R12)   I
         ST    R2,200(R12)   I
         J     AAM00413
*S179: base->NumCc:=i;
AAM00415 L     R2,200(R12)   I
         ST    R2,1900(R9)   NUMCC
*S181: for( i:=0 until 24 + 12-1 ){
         XC    200(4,R12),200(R12)   I
AAM00416 L     R2,200(R12)   I
         CHI   R2,35
         JH    AAM00420
*S182: if( StrPartial( ValueCodes[i], 0, 2 )<="  " ) then {
         L     R3,88(R12)   VALUECODES
         L     R4,200(R12)   I
         MHI   R4,12
         AR    R3,R4
         LA    R14,216(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),28(R11)   0
         MVC   76(4,R13),32(R11)   2
         L     R15,36(R11)   DMNSUBS
         BASR  R14,R15
         LA    R14,216(R12)
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,130(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),104(R11)   2
         L     R15,44(R11)   DMNSCMP
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JH    AAM00417
*S183: break;
         J     AAM00420
         J     AAM00418
*S184: }
*S185: else {
*S186: base->ValueCodes[i]->value := StrPartial( ValueCodes[i], 0, 2 )
AAM00417 LA    R2,980(R9)   VALUECODES
         L     R3,200(R12)   I
         MHI   R3,24
         AR    R2,R3
         L     R4,88(R12)   VALUECODES
         L     R5,200(R12)   I
         MHI   R5,12
         AR    R4,R5
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         ST    R4,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),28(R11)   0
         MVC   76(4,R13),32(R11)   2
         L     R15,36(R11)   DMNSUBS
         BASR  R14,R15
*S187: base->ValueCodes[i]->amount := StrPartial( ValueCodes[i], 2, 9
         LA    R6,980(R9)   VALUECODES
         L     R7,200(R12)   I
         MHI   R7,24
         AR    R6,R7
         L     R8,88(R12)   VALUECODES
         L     R2,200(R12)   I
         MHI   R2,12
         AR    R8,R2
         LA    R14,12(R6)   AMOUNT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         ST    R8,64(R13)
         XC    70(2,R13),70(R13)
         MVC   72(4,R13),32(R11)   2
         MVC   76(4,R13),48(R11)   9
         L     R15,36(R11)   DMNSUBS
         BASR  R14,R15
*S188: base->NumValueCodes+=1;
         LHI   R3,1
         A     R3,1904(R9)   NUMVALUECODES
         ST    R3,1904(R9)   NUMVALUECODES
AAM00418 EQU   *
AAM00419 LHI   R2,1
         A     R2,200(R12)   I
         ST    R2,200(R12)   I
         J     AAM00416
*S189: }
*S190: }
* Process
*S193: do GAPC.OceClaim();
AAM00420 LA    R14,212(R12)
         ST    R14,60(R13)
         L     R15,52(R11)   GAPCC101
         BASR  R14,R15
* Write Output
*S196: ClaimProcFlag :=base->OutClm_ClaimFlag;
         L     R2,112(R12)   CLAIMPROCFLAG
         L     R3,1884(R9)   OUTCLM_CLAIMFLAG
         ST    R3,0(R2)   CLAIMPROCFLAG
*S197: NumLines :=base->NumLines;
         L     R4,116(R12)   NUMLINES
         L     R5,1892(R9)   NUMLINES
         ST    R5,0(R4)   NUMLINES
*S198: OverallClaimDisp :=claim->ClaimDisp;
         L     R6,120(R12)   OVERALLCLAIMDISP
         L     R7,2224(R9)   CLAIMDISP
         ST    R7,0(R6)   OVERALLCLAIMDISP
*S199: ClaimRejDisp :=claim->ClaimRejDisp;
         L     R8,124(R12)   CLAIMREJDISP
         L     R2,2228(R9)   CLAIMREJDISP
         ST    R2,0(R8)   CLAIMREJDISP
*S200: ClaimDenDisp :=claim->ClaimDenDisp;
         L     R3,128(R12)   CLAIMDENDISP
         L     R4,2352(R9)   CLAIMDENDISP
         ST    R4,0(R3)   CLAIMDENDISP
*S201: ClaimRtpDisp :=claim->ClaimRtpDisp;
         L     R5,132(R12)   CLAIMRTPDISP
         L     R6,2476(R9)   CLAIMRTPDISP
         ST    R6,0(R5)   CLAIMRTPDISP
*S202: ClaimSusDisp :=claim->ClaimSusDisp;
         L     R7,136(R12)   CLAIMSUSDISP
         L     R8,2600(R9)   CLAIMSUSDISP
         ST    R8,0(R7)   CLAIMSUSDISP
*S203: LineItemRejDisp :=claim->LineRejDisp;
         L     R2,140(R12)   LINEITEMREJDISP
         L     R3,2724(R9)   LINEREJDISP
         ST    R3,0(R2)   LINEITEMREJDISP
*S204: LineItemDenDisp :=claim->LineDenDisp;
         L     R4,144(R12)   LINEITEMDENDISP
         L     R5,2848(R9)   LINEDENDISP
         ST    R5,0(R4)   LINEITEMDENDISP
*S205: ClaimRejReas :=claim->ClaimRejReasn;
         L     R6,148(R12)   CLAIMREJREAS
         MVC   0(120,R6),2232(R9)   CLAIMREJREASN
*S206: ClaimDenReas :=claim->ClaimDenReasn;
         L     R7,152(R12)   CLAIMDENREAS
         MVC   0(120,R7),2356(R9)   CLAIMDENREASN
*S207: ClaimRtpReas :=claim->ClaimRtpReasn;
         L     R8,156(R12)   CLAIMRTPREAS
         MVC   0(120,R8),2480(R9)   CLAIMRTPREASN
*S208: ClaimSusReas :=claim->ClaimSusReasn;
         L     R2,160(R12)   CLAIMSUSREAS
         MVC   0(120,R2),2604(R9)   CLAIMSUSREASN
*S209: LineItemRejReas :=claim->LineRejReasn;
         L     R3,164(R12)   LINEITEMREJREAS
         MVC   0(120,R3),2728(R9)   LINEREJREASN
*S210: LineItemDenReas :=claim->LineDenReasn;
         L     R4,168(R12)   LINEITEMDENREAS
         MVC   0(120,R4),2852(R9)   LINEDENREASN
*S211: ApcReturnFlag :=claim->ApcRetFlag;
         L     R5,172(R12)   APCRETURNFLAG
         L     R6,2220(R9)   APCRETFLAG
         ST    R6,0(R5)   APCRETURNFLAG
*S212: VersionId :=base->VersionId;
         L     R7,176(R12)   VERSIONID
         ST    R7,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,1856(R9)   VERSIONID
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,24(R11)   DMNSCPY
         BASR  R14,R15
*S214: NoppsBillFlag :=claim->NoppsBillFlag;%V8.2
         L     R8,180(R12)   NOPPSBILLFLAG
         L     R2,2972(R9)   NOPPSBILLFLAG
         ST    R2,0(R8)   NOPPSBILLFLAG
*S216: ConditionCodeBuffer :=base->ConditionCodesOutput;%V19.0
         L     R3,188(R12)   CONDITIONCODEBUFFER
         LA    R14,106(R11)
         ST    R14,60(R13)
         ST    R3,64(R13)
         LA    R14,860(R9)
         ST    R14,68(R13)
         L     R15,20(R11)   DMNRPLC
         BASR  R14,R15
* ONLY OUTPUT FOR A VALID VERSION (NON-ZERO)
*S219: if( base->Version ) then {
         L     R15,1868(R9)   VERSION
         LTR   R15,R15
         JE    AAM00426
* ONLY OUTPUT VALUE CODES FOR OPPS IF VALUE IS SET
* VALUE CODE IS NOT SET FOR NOPPS CLAIMS
*S222: loop( i:=0; i<10; i+=1 ){
         XC    200(4,R12),200(R12)   I
AAM00421 L     R2,200(R12)   I
         CHI   R2,10
         JNL   AAM00425
*S223: ValueCodeBuffer += ( claim->ValueCodeSet[i]->value )?
         L     R3,184(R12)   VALUECODEBUFFER
         L     R4,184(R12)   VALUECODEBUFFER
         LA    R5,1976(R9)   VALUECODESET
         L     R6,200(R12)   I
         MHI   R6,16
         AR    R5,R6
         ST    R5,60(R13)
         XC    64(4,R13),64(R13)
         L     R15,56(R11)   DMNSLOG
         BASR  R14,R15
         L     R7,60(R13)
         LTR   R7,R7
         JNE   AAM00422
         LA    R14,140(R11)     000000000
         ST    R14,228(R12)     000000000
         MVC   232(2,R12),118(R11)   11
         MVC   234(2,R12),118(R11)   11
         XC    236(4,R12),236(R12)     000000000
         LA    R2,228(R12)     000000000
         J     AAM00423
AAM00422 LA    R14,216(R12)
         ST    R14,60(R13)
         LA    R14,132(R11)   %-2S%09I
         ST    R14,64(R13)
         MVC   68(2,R13),80(R11)   8
         LA    R2,1976(R9)   VALUECODESET
         L     R5,200(R12)   I
         MHI   R5,16
         AR    R2,R5
         ST    R2,72(R13)
         XC    78(2,R13),78(R13)
         LA    R6,1976(R9)   VALUECODESET
         L     R7,200(R12)   I
         MHI   R7,16
         AR    R6,R7
         MVC   80(4,R13),12(R6)   AMOUNT
         MVC   70(2,R13),116(R11)   32792
         L     R15,60(R11)   DMNFORM
         BASR  R14,R15
         LA    R2,216(R12)
AAM00423 ST    R3,60(R13)
         XC    72(2,R13),72(R13)
         ST    R4,64(R13)
         XC    74(2,R13),74(R13)
         ST    R2,68(R13)
         XC    76(2,R13),76(R13)
         L     R15,64(R11)   DMNCCAT
         BASR  R14,R15
AAM00424 LHI   R2,1
         A     R2,200(R12)   I
         ST    R2,200(R12)   I
         J     AAM00421
*S224: format( "%-2s%09i", claim->ValueCodeSet[i]->value, claim->Value
*S225: "  000000000";
*S226: }
*S227: }
*S229: return return_code;
AAM00425 EQU   *
AAM00426 L     R2,60(R12)
         L     R3,3016(R9)   RETURN_CODE
         ST    R3,0(R2)
AAM00427 LA    R5,192(R12)
         ST    R5,60(R13)
         L     R15,76(R11)   DMNFREE
         BASR  R14,R15
         MVC   48(4,R10),208(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),240(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC136
**************************
GAPCC136 CSECT
GAPCC136 AMODE ANY
GAPCC136 RMODE ANY
*XREF - GAPCC136 GAPC.VarUnloadDxCode (gateway)
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (12 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*        0068(R12)-> array [1] of
*                    array [20] of
*                    Integer len 4 (Edits)
*  R12 + 0072 Locals & temps  (16 bytes)
*        0072(R12)-> Integer len 4 (i)
*        0076(R12)-> Integer len 4 (_attribute table save_)
*        0080(R12)-> Integer len 4 ()
*        0084(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 88)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,88  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00502
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00502 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00503
         DC    A(GAPCC071) @00000
         DC    F'7' @00004
         DC    A(GAPCCATT) @00008
         DC    A(DMNCNUM) @00012
AAM00503 XC    72(12,R12),72(R12)
         MVC   76(4,R12),48(R10)
         MVC   48(4,R10),8(R11)   GAPCCATT
         MVC   84(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),8(R11)   GAPCCATT
         L     R15,12(R11)   DMNCNUM
         BASR  R14,R15
*S239: if( do GAPC.findDx( occurrence ) ) then {
         LA    R14,80(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   OCCURRENCE
         L     R15,0(R11)   GAPCC071
         BASR  R14,R15
         L     R15,80(R12)
         LTR   R15,R15
         JE    AAM00506
*S240: return gapc_error->not_found;
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   7
         J     AAM00509
*S241: }
*S243: reset Edits;
AAM00506 L     R2,68(R12)   EDITS
         XC    0(80,R2),0(R2)
*S244: while( i<20 and base->curDx->Edits[i] ){
AAM00507 L     R2,72(R12)   I
         CHI   R2,20
         JNL   AAM00508
         L     R3,52(R9)   CURDX
         LA    R4,28(R3)   EDITS
         L     R5,72(R12)   I
         MHI   R5,4
         AR    R4,R5
         L     R15,0(R4)   EDITS
         LTR   R15,R15
         JE    AAM00508
*S245: Edits[i]:=base->curDx->Edits[i];
         L     R2,68(R12)   EDITS
         L     R3,72(R12)   I
         MHI   R3,4
         AR    R2,R3
         L     R4,52(R9)   CURDX
         LA    R5,28(R4)   EDITS
         L     R6,72(R12)   I
         MHI   R6,4
         AR    R5,R6
         L     R7,0(R5)   EDITS
         ST    R7,0(R2)   EDITS
*S246: i+=1;
         LHI   R8,1
         A     R8,72(R12)   I
         ST    R8,72(R12)   I
         J     AAM00507
*S247: }
*S248: return 0;
AAM00508 L     R2,60(R12)
         XC    0(4,R2),0(R2)
AAM00509 MVC   48(4,R10),76(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),84(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC137
**************************
GAPCC137 CSECT
GAPCC137 AMODE ANY
GAPCC137 RMODE ANY
*XREF - GAPCC137 GAPC.VarUnloadSgCode (gateway)
*  R11 + 0000 Literals        (56 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (80 bytes)
*        0060(R12)-> Integer len 4 (frame return)
*        0064(R12)-> Integer len 4 (occurrence)
*        0068(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (ProcedureEdits)
*        0072(R12)-> array [1] of
*                    array [20] of
*                    Integer len 4 (ModifierEdits)
*        0076(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (DateEdits)
*        0080(R12)-> array [1] of
*                    array [30] of
*                    Integer len 4 (RevenueEdits)
*        0084(R12)-> String (PaymentApc)
*        0088(R12)-> String (HcpcsApc)
*        0092(R12)-> String (StatusIndicator)
*        0096(R12)-> Integer len 4 (PaymentIndicator)
*        0100(R12)-> Integer len 4 (DiscountingFactor)
*        0104(R12)-> Integer len 4 (LineDenialFlag)
*        0108(R12)-> Integer len 4 (PackagingFlag)
*        0112(R12)-> Integer len 4 (PayAdjFlag)
*        0116(R12)-> String (PayMethFlag)
*        0120(R12)-> String (ServiceUnitsOutput)
*        0124(R12)-> String (ActionFlagOutput)
*        0128(R12)-> String (CompAdjFlag)
*        0132(R12)-> String (HCPCSPayerModifier01)
*        0136(R12)-> String (HCPCSPayerModifier02)
*  R12 + 0140 Local pool      (8 bytes)
*  R12 + 0148 Locals & temps  (36 bytes)
*        0148(R12)-> String (filler)
*        0160(R12)-> Integer len 4 (_attribute table save_)
*        0164(R12)-> Integer len 4 ()
*        0168(R12)-> Void ()
*        0180(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 184)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,184  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00602
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00602 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00603
         DC    A(GAPCC072) @00000
         DC    F'7' @00004
         DC    A(DMNSCPY) @00008
         DC    A(DMNSLEN) @00012
         DC    A(DMNSOVR) @00016
         DC    A(DMNSCMP) @00020
         DC    A(GAPCCATT) @00024
         DC    A(DMNCNUM) @00028
         DC    A(DMNFREE) @00032
         DC    H'5'  0 5 @00036
         DC    H'1'  0 1 @00038
         DC    H'2'  0 2 @00040
         DC    CL5'00000' @00042
         DC    CL1' ' @00047
         DC    CL1'Z' @00048
         DC    CL1'Y' @00049
         DC    CL1'X' @00050
         DC    CL1'W' @00051
         DC    CL1'V' @00052
         DC    CL2'  ' @00053
         DC    CL1'0' @00055
AAM00603 XC    140(8,R12),140(R12)
         LA    R5,140(R12)
         MVC   144(4,R12),44(R10)
         ST    R5,44(R10)
         XC    148(8,R12),148(R12)
         ST    R5,156(R12)
         XC    160(20,R12),160(R12)
         MVC   160(4,R12),48(R10)
         MVC   48(4,R10),24(R11)   GAPCCATT
         MVC   180(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),24(R11)   GAPCCATT
         L     R15,28(R11)   DMNCNUM
         BASR  R14,R15
*INPUT
*OUTPUT
*S278: if( do GAPC.findLine( occurrence ) ) then {
         LA    R14,164(R12)
         ST    R14,60(R13)
         MVC   64(4,R13),64(R12)   OCCURRENCE
         L     R15,0(R11)   GAPCC072
         BASR  R14,R15
         L     R15,164(R12)
         LTR   R15,R15
         JE    AAM00606
*S279: return gapc_error->not_found;
         L     R2,60(R12)
         MVC   0(4,R2),4(R11)   7
         J     AAM00621
*S280: }
*S282: ProcedureEdits :=base->curLine->Edits;
AAM00606 L     R2,68(R12)   PROCEDUREEDITS
         L     R3,56(R9)   CURLINE
         MVC   0(120,R2),572(R3)   EDITS
*S283: ModifierEdits :=base->curLine->ModifierEdits;
         L     R4,72(R12)   MODIFIEREDITS
         L     R5,56(R9)   CURLINE
         MVC   0(80,R4),692(R5)   MODIFIEREDITS
*S284: DateEdits :=base->curLine->DateEdits;
         L     R6,76(R12)   DATEEDITS
         L     R7,56(R9)   CURLINE
         MVC   0(120,R6),772(R7)   DATEEDITS
*S285: RevenueEdits :=base->curLine->RevenueEdits;
         L     R8,80(R12)   REVENUEEDITS
         L     R2,56(R9)   CURLINE
         MVC   0(120,R8),892(R2)   REVENUEEDITS
*S287: filler :="00000";
         LA    R14,148(R12)   FILLER
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,42(R11)   00000
         ST    R14,64(R13)
         MVC   70(2,R13),36(R11)   5
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S288: PaymentApc := StrOverlay( filler, 5-StrLength(base->curLine->Pa
         L     R3,84(R12)   PAYMENTAPC
         LA    R14,148(R12)   FILLER
         ST    R14,60(R13)
         AHI   R13,72
         L     R4,56(R9)   CURLINE
         LA    R14,512(R4)   PAYMENTAPC
         ST    R14,60(R13)
         L     R15,12(R11)   DMNSLEN
         BASR  R14,R15
         L     R5,60(R13)
         AHI   R13,-72
         LHI   R6,5
         SR    R6,R5
         ST    R6,64(R13)
         L     R7,56(R9)   CURLINE
         LA    R14,512(R7)   PAYMENTAPC
         ST    R14,68(R13)
         ST    R3,72(R13)
         L     R15,16(R11)   DMNSOVR
         BASR  R14,R15
*S289: HcpcsApc := StrOverlay( filler, 5-StrLength(base->curLine->Hcpc
         L     R8,88(R12)   HCPCSAPC
         LA    R14,148(R12)   FILLER
         ST    R14,60(R13)
         AHI   R13,72
         L     R2,56(R9)   CURLINE
         LA    R14,500(R2)   HCPCSAPC
         ST    R14,60(R13)
         L     R15,12(R11)   DMNSLEN
         BASR  R14,R15
         L     R3,60(R13)
         AHI   R13,-72
         LHI   R4,5
         SR    R4,R3
         ST    R4,64(R13)
         L     R5,56(R9)   CURLINE
         LA    R14,500(R5)   HCPCSAPC
         ST    R14,68(R13)
         ST    R8,72(R13)
         L     R15,16(R11)   DMNSOVR
         BASR  R14,R15
* v9.0 flags not to be used for NON-OPPS - blank out / reset line outp
*S292: if( claim->Bits->Nopps ) then {
         TM    3004(R9),1   NOPPS
         JE    AAM00617
*S293: StatusIndicator :=" ";
         L     R6,92(R12)   STATUSINDICATOR
         ST    R6,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S294: PaymentIndicator :=0;
         L     R7,96(R12)   PAYMENTINDICATOR
         XC    0(4,R7),0(R7)   PAYMENTINDICATOR
*S295: DiscountingFactor :=0;
         L     R8,100(R12)   DISCOUNTINGFACTOR
         XC    0(4,R8),0(R8)   DISCOUNTINGFACTOR
*S296: LineDenialFlag :=0;
         L     R2,104(R12)   LINEDENIALFLAG
         XC    0(4,R2),0(R2)   LINEDENIALFLAG
*S297: PackagingFlag :=0;
         L     R3,108(R12)   PACKAGINGFLAG
         XC    0(4,R3),0(R3)   PACKAGINGFLAG
*S298: PayAdjFlag :=0;
         L     R4,112(R12)   PAYADJFLAG
         XC    0(4,R4),0(R4)   PAYADJFLAG
* NOTE: We check the pay meth flag instead of a bit because we don't w
* on the line if we abort early.
*V20.1. If we have a Z here we need to keep it and not blank it out.
*V21.0 Added Y
*S303: if (base->curLine->PayMethFlag = "Z") then PayMethFlag := "Z";
         L     R5,56(R9)   CURLINE
         LA    R14,208(R5)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,48(R11)   Z
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R6,60(R13)
         LTR   R6,R6
         JNE   AAM00607
         L     R7,116(R12)   PAYMETHFLAG
         ST    R7,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,48(R11)   Z
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00616
*S304: else if (base->curLine->PayMethFlag = "Y") then PayMethFlag :=
AAM00607 L     R2,56(R9)   CURLINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,49(R11)   Y
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAM00608
         L     R4,116(R12)   PAYMETHFLAG
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,49(R11)   Y
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00615
*S305: else if (base->curLine->PayMethFlag = "X") then PayMethFlag :=
AAM00608 L     R2,56(R9)   CURLINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAM00609
         L     R4,116(R12)   PAYMETHFLAG
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,50(R11)   X
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00614
*S306: else if (base->curLine->PayMethFlag = "W") then PayMethFlag :=
AAM00609 L     R2,56(R9)   CURLINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,51(R11)   W
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAM00610
         L     R4,116(R12)   PAYMETHFLAG
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,51(R11)   W
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00613
*S307: else if (base->curLine->PayMethFlag = "V") then PayMethFlag :=
AAM00610 L     R2,56(R9)   CURLINE
         LA    R14,208(R2)   PAYMETHFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R3,60(R13)
         LTR   R3,R3
         JNE   AAM00611
         L     R4,116(R12)   PAYMETHFLAG
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,52(R11)   V
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00612
*S308: else PayMethFlag :=" ";
AAM00611 L     R2,116(R12)   PAYMETHFLAG
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S309: ActionFlagOutput :=" ";%V15.3, FQHC
AAM00612 EQU   *
AAM00613 EQU   *
AAM00614 EQU   *
AAM00615 EQU   *
AAM00616 L     R2,124(R12)   ACTIONFLAGOUTPUT
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S310: CompAdjFlag :=" ";
         L     R3,128(R12)   COMPADJFLAG
         ST    R3,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*HCPCSPayerModifier01 :="  ";
*S312: HCPCSPayerModifier02 :="  ";
         L     R4,136(R12)   HCPCSPAYERMODIFIER02
         ST    R4,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,53(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),40(R11)   2
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
         J     AAM00620
*S313: }
*S314: else{
*S315: StatusIndicator :=base->curLine->StatusIndicator;
AAM00617 L     R2,92(R12)   STATUSINDICATOR
         L     R3,56(R9)   CURLINE
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,180(R3)   STATUSINDICATOR
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S316: PaymentIndicator :=base->curLine->PaymentIndicator;
         L     R4,96(R12)   PAYMENTINDICATOR
         L     R5,56(R9)   CURLINE
         L     R6,204(R5)   PAYMENTINDICATOR
         ST    R6,0(R4)   PAYMENTINDICATOR
*S317: DiscountingFactor :=base->curLine->DiscountingFactor;
         L     R7,100(R12)   DISCOUNTINGFACTOR
         L     R8,56(R9)   CURLINE
         L     R2,536(R8)   DISCOUNTINGFACTOR
         ST    R2,0(R7)   DISCOUNTINGFACTOR
*S318: LineDenialFlag :=base->curLine->DenialFlag;
         L     R3,104(R12)   LINEDENIALFLAG
         L     R4,56(R9)   CURLINE
         L     R5,548(R4)   DENIALFLAG
         ST    R5,0(R3)   LINEDENIALFLAG
*S319: PackagingFlag :=base->curLine->PackagingFlag;
         L     R6,108(R12)   PACKAGINGFLAG
         L     R7,56(R9)   CURLINE
         L     R8,540(R7)   PACKAGINGFLAG
         ST    R8,0(R6)   PACKAGINGFLAG
*S320: PayAdjFlag :=base->curLine->PayAdjFlag;
         L     R2,112(R12)   PAYADJFLAG
         L     R3,56(R9)   CURLINE
         L     R4,544(R3)   PAYADJFLAG
         ST    R4,0(R2)   PAYADJFLAG
*S321: PayMethFlag :=base->curLine->PayMethFlag;
         L     R5,116(R12)   PAYMETHFLAG
         L     R6,56(R9)   CURLINE
         ST    R5,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,208(R6)   PAYMETHFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*ServiceUnitsOutput  :=base->curLine->ServiceUnitsInput;   %new-really
*V15.3, FQHC
*S324: ActionFlagOutput :=( base->curLine->ActionFlagInput=" " and bas
         L     R7,124(R12)   ACTIONFLAGOUTPUT
         L     R8,56(R9)   CURLINE
         LA    R14,168(R8)   ACTIONFLAGINPUT
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,47(R11)
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R2,60(R13)
         LTR   R2,R2
         JNE   AAM00618
         L     R3,56(R9)   CURLINE
         LA    R14,156(R3)   ACTIONFLAG
         ST    R14,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,55(R11)   0
         ST    R14,64(R13)
         MVC   70(2,R13),38(R11)   1
         L     R15,20(R11)   DMNSCMP
         BASR  R14,R15
         L     R4,60(R13)
         LTR   R4,R4
         JNE   AAM00618
         LA    R14,47(R11)
         ST    R14,168(R12)
         MVC   172(2,R12),38(R11)   1
         MVC   174(2,R12),38(R11)   1
         XC    176(4,R12),176(R12)
         LA    R3,168(R12)
         J     AAM00619
AAM00618 L     R2,56(R9)   CURLINE
         LA    R3,156(R2)   ACTIONFLAG
AAM00619 ST    R7,60(R13)
         XC    68(2,R13),68(R13)
         ST    R3,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S325: CompAdjFlag :=base->curLine->CompAdjFlag;%v10.0
         L     R2,128(R12)   COMPADJFLAG
         L     R4,56(R9)   CURLINE
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,272(R4)   COMPADJFLAG
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S326: HCPCSPayerModifier01 :=base->curLine->HCPCSPayerModifier01;
         L     R5,132(R12)   HCPCSPAYERMODIFIER01
         L     R6,56(R9)   CURLINE
         ST    R5,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,284(R6)   HCPCSPAYERMODIFIER01
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S327: HCPCSPayerModifier02 :=base->curLine->HCPCSPayerModifier02;
         L     R8,136(R12)   HCPCSPAYERMODIFIER02
         L     R7,56(R9)   CURLINE
         ST    R8,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,296(R7)   HCPCSPAYERMODIFIER02
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S328: }
*S329: ServiceUnitsOutput :=base->curLine->ServiceUnitsInput;%new-real
AAM00620 L     R2,120(R12)   SERVICEUNITSOUTPUT
         L     R3,56(R9)   CURLINE
         ST    R2,60(R13)
         XC    68(2,R13),68(R13)
         LA    R14,232(R3)   SERVICEUNITSINPUT
         ST    R14,64(R13)
         XC    70(2,R13),70(R13)
         L     R15,8(R11)   DMNSCPY
         BASR  R14,R15
*S331: return 0;
         L     R4,60(R12)
         XC    0(4,R4),0(R4)
AAM00621 LA    R6,140(R12)
         ST    R6,60(R13)
         L     R15,32(R11)   DMNFREE
         BASR  R14,R15
         MVC   48(4,R10),160(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),180(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GAPCC138
**************************
GAPCC138 CSECT
GAPCC138 AMODE ANY
GAPCC138 RMODE ANY
*XREF - GAPCC138 GAPC.VarClose (gateway)
*  R11 + 0000 Literals        (16 bytes)
*  R12 + 0000 Saved registers (60 bytes)
*  R12 + 0060 Arguments       (4 bytes)
*        0060(R12)-> Void len 0 (frame return)
*  R12 + 0064 Locals & temps  (8 bytes)
*        0064(R12)-> Integer len 4 (_attribute table save_)
*        0068(R12)-> Unknown ()
*        0068(R12)-> Integer len 4 (_class number save_)
*  R13 + 0000 Stack           (R12 + 72)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,72  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,AAM00702
         DC    A(GAPCCCLS)
         DC    F'4260'  CLASS SIZE
         DC    CL8'GAPCCCLS'   CLASS NAME
         DC    A(DMNSETR9)
AAM00702 MVC   60(16,R13),0(R11)
         L     R15,16(R11)   DMNSETR9
         BASR  R14,R15
         L     R9,60(R13)
         CNOP  0,4
         BRAS  R11,AAM00703
         DC    A(GAPCC110) @00000
         DC    A(GAPCC100) @00004
         DC    A(GAPCCATT) @00008
         DC    A(DMNCNUM) @00012
AAM00703 XC    64(4,R12),64(R12)
         MVC   64(4,R12),48(R10)
         MVC   48(4,R10),8(R11)   GAPCCATT
         MVC   68(4,R12),100(R10)
         LA    R14,100(R10)
         ST    R14,60(R13)
         MVC   64(4,R13),8(R11)   GAPCCATT
         L     R15,12(R11)   DMNCNUM
         BASR  R14,R15
*S336: do GAPC.close();
         L     R15,0(R11)   GAPCC110
         BASR  R14,R15
*S337: do GAPC.OceInit();
         L     R15,4(R11)   GAPCC100
         BASR  R14,R15
AAM00706 MVC   48(4,R10),64(R12)   _ATTRIBUTE TABLE SAVE_
         MVC   100(4,R10),68(R12)   _CLASS NUMBER SAVE_
         LM    R0,R14,0(R12)
         BR    R14
*#**
*#**  TOOOLS VERSION 1.00.042.0 Build 6
*#**
**************************
*    DMNATFD
**************************
DMNATFD  CSECT
DMNATFD  AMODE ANY
DMNATFD  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         AHI   R13,72        END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,ATFD0000
         DC    A(DMNALC)       0
         DC    A(DMNATCH)      4
         DC    A(DMNINIT)      8
         XC    16(0,R4),16(R4) 12
*
ATFD0000 DS    0H
         L     R2,60(R12)    R2 -> CODE ADDRESS
         LTR   R2,R2         MUST HAVE CODE
         JNZ   ATFD0050
         XR    R7,R7         WILL CREATE SOC4 IN CALLER
         J     ATFD0950
*
ATFD0050 DS    0H
         XR    R3,R3
         TM    65(R12),X'02' Class Attribute?
         JNO   ATFD0060
         L     R3,100(R10)   Component Number
         SLL   R3,16         ...in high order bits
ATFD0060 DS    0H
         ICM   R3,3,64(R12)  R3 = Attribute number
         L     R4,20(R2)     R4 -> current attribute
*
ATFD0100 DS    0H
         LTR   R4,R4
         JZ    ATFD0300      NOT THERE - CREATE IT
         C     R3,8(R4)      Check number
         JE    ATFD0900      ATTRIBUTE NUMBER MATCHES
         JL    ATFD0200      MUST GO BACKWARDS
*
ATFD0150 DS    0H            FORWARD SEARCH LOOP
         C     R3,8(R4)
         JE    ATFD0900
         L     R4,0(R4)
         LTR   R4,R4
         JZ    ATFD0300
         J     ATFD0150
*
ATFD0200 DS    0H            BACKWARD SEARCH LOOP
         C     R3,8(R4)
         JE    ATFD0900
         L     R4,4(R4)
         LTR   R4,R4
         JNZ   ATFD0200
*
ATFD0300 DS    0H            NOT FOUND - CREATE
         L     R5,16(R2)          List this code in
         LH    R6,66(R12)         Data length
         LA    R6,16(R6)          + 16 bytes overhead
         ST    R6,60(R13)         Total size attribute block
         MVC   64(4,R13),12(R5)   POOL
         L     R15,0(R11)         DMNALC
         BASR  R14,R15
*
         L     R4,60(R13)         New Attrib Address
         ST    R3,8(R4)           Attribute Number
         LH    R14,66(R12)        Attribute length
         ST    R14,12(R4)
         LA    R14,20(R2)         Place to link this
         ST    R14,64(R13)
         L     R15,4(R11)         DMNATCH
         BASR  R14,R15            Stores R4 in 20(R2)
*
*        Call routine which will initialize the attribute
         SLL   R3,16             Done with component number
         SRL   R3,16             ...erase it
         L     R9,48(R10)        R9->initialization table
         LTR   R9,R9
         JZ    ATFD0800          No table
         LR    R8,R9
ATFD0400 L     R15,0(R8)         Attribute number
         LTR   R15,R15
         JZ    ATFD0800          End of table
         CR    R3,R15            Attribute number
         JE    ATFD0500
         LA    R8,8(R8)          Next table row
         J     ATFD0400
*
ATFD0500 DS    0H                Initialization found
         A     R9,4(R8)          Initialization array
         ST    R9,60(R13)
         LA    R7,16(R4)         R7->the actual data
         MVC   64(4,R13),12(R5)  POOL
         ST    R7,68(R13)
         L     R15,8(R11)        DMNINIT
         BASR  R14,R15
         J     ATFD0900
*
ATFD0800 DS    0H                No other initialization
         L     R6,12(R4)         Data length
         BCTR  R6,0
         EX    R6,12(R11)        Zero the data
*
ATFD0900 DS    0H            FOUND...
         ST    R4,20(R2)     Last accessed
         LA    R7,16(R4)     Point to the actual data
ATFD0950 DS    0H
         ST    R7,60(R12)    Return pointer to data
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNATCH
**************************
DMNATCH  CSECT
DMNATCH  AMODE ANY
DMNATCH  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         AHI   R13,72        END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R2,60(R12)    R2 -> ATTRIBUTE
         L     R3,64(R12)    R3 -> ATTRIBUTE LIST LINK
         L     R4,0(R3)      R4 -> CURRENT ATTR
*
         LTR   R4,R4
         JNZ   ATCH0100
         XC    0(8,R2),0(R2) Only code. Both pointers zero
         J     ATCH0900
*
ATCH0100 DS    0H
         CLC   8(4,R2),8(R4)  New : Old
         JL    ATCH0200       Go backwards
ATCH0110 L     R5,0(R4)       R5->next higher code
         LTR   R5,R5
         JZ    ATCH0120       Put new code on end of list
         CLC   8(4,R2),8(R5)
         JNH   ATCH0130       Put new code between R4 and R5
         LR    R4,R5
         J     ATCH0110
*
ATCH0120 DS    0H             Put new code on end of list
         XC    0(4,R2),0(R2)  Points forward to nothing
         ST    R4,4(R2)       Points back to end
         ST    R2,0(R4)
         J     ATCH0900
*
ATCH0130 DS    0H             Put new code between R4 and R5
         ST    R5,0(R2)
         ST    R4,4(R2)
         ST    R2,4(R5)
         ST    R2,0(R4)
         J     ATCH0900
*
ATCH0200 L     R5,4(R4)       R5->next lower code
         LTR   R5,R5
         JZ    ATCH0220       Put new code at beginning of list
         CLC   8(4,R2),8(R5)
         JNL   ATCH0230       Put new code between R5 and R4
         LR    R4,R5
         J     ATCH0200
*
ATCH0220 DS    0H             Put new code at beginning of list
         XC    4(4,R2),4(R2)  Points backward to nothing
         ST    R4,0(R2)       Points forward to beginning
         ST    R2,4(R4)
         J     ATCH0900
*
ATCH0230 DS    0H             Put new code between R5 and R4
         ST    R4,0(R2)
         ST    R5,4(R2)
         ST    R2,4(R4)
         ST    R2,0(R5)
         J     ATCH0900
*
ATCH0900 DS    0H
         ST    R2,0(R3)     New Attribute current one
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNARA
**************************
DMNARA   CSECT
DMNARA   AMODE ANY
DMNARA   RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,64          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,ARA000
         DC    A(DMNRLSE)
         DC    A(DMNINDL)
*
ARA000   DS    0H
         L     R2,60(R12)       CODE
         LTR   R2,R2
         JZ    ARA0999
         L     R8,16(R2)        LIST
         L     R8,12(R8)        R8->POOL
*
ARA0100  DS    0H
         L     R3,20(R2)        R3->attribute
         LTR   R3,R3
         JZ    ARA0900
*
ARA0200  DS    0H
         L     R14,8(R3)       LOAD ATTRIBUTE
         SRL   R14,16          COMPONENT #
         LTR   R14,R14
         JNZ   ARA0202
         LHI   R14,1
ARA0202  DS    0H
         XR    R15,R15         COUNTER
         LA    R1,104(R10)     COMPONENT CHAIN
ARA0204  DS    0H
         L     R1,0(R1)
         LTR   R1,R1
         JZ    ARA0250         NO TABLE
         AHI   R15,1
         CR    R15,R14         COUNTER - COMPONENT NUMBER
         JNE   ARA0204
*
         L     R4,8(R1)
         LTR   R4,R4
         JZ    ARA0250         NO TABLE
         LR    R5,R4
ARA0210  DS    0H
         L     R15,0(R5)       ATTRIBUTE NUMBER
         LTR   R15,R15
         JZ    ARA0250         END OF TABLE
         CH    R15,10(R3)      COMPARE ATTRIBUTES W/O COMPONENT #
         JE    ARA0220         TABLE ENTRY FOUND
         LA    R5,8(R5)
         J     ARA0210
*
ARA0220  DS    0H
         A     R4,4(R5)        INITIALIZATION ARRAY
         ST    R4,60(R13)
         ST    R8,64(R13)      POOL
         LA    R15,16(R3)
         ST    R15,68(R13)     DATA
         L     R15,4(R11)      DMNINDL
         BASR  R14,R15
*
ARA0250  DS    0H
         LM    R4,R5,0(R3)     Save pointers
         L     R6,12(R3)
         LA    R6,16(R6)       Add overhead
         ST    R3,60(R13)      ->attribute
         ST    R6,64(R13)      length
         ST    R8,68(R13)      POOL
         L     R15,0(R11)      DMNRLSE
         BASR  R14,R15
*
* Do more attributes
         LTR   R5,R5           Attributes before this one
         JZ    ARA0500         NO
         ST    R4,0(R5)        Save pointer after
         LTR   R4,R4
         JZ    ARA0300
         ST    R5,4(R4)        Fix linkage
ARA0300  LR    R3,R5           Process previous
         J     ARA0200
*
ARA0500  LTR   R4,R4
         JZ    ARA0900
         ST    R5,4(R4)        Zero previous pointer
         LR    R3,R4           Process next
         J     ARA0200
*
ARA0900  DS    0H
         XC    20(4,R2),20(R2) No more attributes
ARA0999  LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNATNM
**************************
DMNATNM  CSECT
DMNATNM  AMODE ANY
DMNATNM  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         AHI   R13,72        END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ATNM0100
ATNM000  EQU   *
ATNMSCPY DC    A(DMNSCPY)
*
         USING ATNM000,R11
ATNM0100 DS    0H
         LM    R2,R4,60(R12) R2->CODE, R3=0/4, R4->SCB
         LTR   R2,R2
         JZ    ATNM0800
*
         L     R5,0(R2)      R5->NAME
         LH    R6,4(R2)      R6 = Length
         LTR   R5,R5
         JZ    ATNM0800      No name - null return
         LTR   R6,R6
         JZ    ATNM0800      No length - null return
*
         LTR   R3,R3
         JZ    ATNM0500      NAME
*
ATNM0200 DS    0H            Find CNAME
         CLI   0(R5),C'.'
         JE    ATNM0250
         LA    R5,1(R5)
         BRCT  R6,ATNM0200
* No dot - use full name
         L     R5,0(R2)
         LH    R6,4(R2)
         J     ATNM0500
*
ATNM0250 DS    0H
         LA    R5,1(R5)       Bypass the dot
         BCTR  R6,0
*
ATNM0500 DS    0H
         ST    R5,64(R13)     Source addr
         STH   R6,70(R13)     Source length
         LTR   R6,R6
         JZ    ATNM0800
         ST    R4,60(R13)     Target SCB
         XC    68(2,R13),68(R13)
         L     R15,ATNMSCPY   DMNSCPY
         BASR  R14,R15
         J     ATNM0900
*
ATNM0800 DS    0H
         XC    4(2,R4),4(R4)  No length
ATNM0900 DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    ATCPLOCL
**************************
ATCPLOCL DSECT
ATCPREGS DS    15F            SAVED REGISTERS
ATCPATTR DS    F              ATTRIBUTE ADDRESS
ATCPPOOL DS    F              POOL FOR NEW ATTRIBUTE
ATCPLINK DS    F              ->PLACE TO LINK IT TO
*
         DS    0D
ATCPLGTH EQU   *-ATCPLOCL
*
ATCPRTRN ORG   ATCPATTR       RETURN ADDRESS OF NEW ATTRIBUTE
**************************
*    DMNATCP
**************************
DMNATCP  CSECT
DMNATCP  AMODE ANY
DMNATCP  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ATCPLGTH(R13)  END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ATCP0100
ATCP000  EQU   *
DMNALC3  DC    A(DMNALC)
DMNATCH3 DC    A(DMNATCH)
DMNINAT3 DC    A(DMNINAT)
MVCDATA  MVC   16(0,R4),16(R2)
*
         USING ATCP000,R11
         USING ATCPLOCL,R12
ATCP0100 DS    0H
         L     R2,ATCPATTR      R2 -> ATTRIBUTE TO COPY
         L     R1,12(R2)        DATA LENGTH
         AHI   R1,16            16 BYTES OVERHEAD
         ST    R1,60(R13)
         MVC   64(4,R13),ATCPPOOL   POOL FOR NEW ATTRIBUTE
         L     R15,DMNALC3
         BASR  R14,R15
*
         L     R4,60(R13)       R4 -> NEW ATTRIBUTE
         MVC   8(8,R4),8(R2)    COPY ATTR NUM AND LENGTH
         MVC   64(4,R13),ATCPLINK  PLACE TO LINK IT
         L     R15,DMNATCH3
         BASR  R14,R15          ATTACH ATTRIBUTE TO ELEMENT
*
         L     R9,48(R10)       R9 -> INITIALIZATION TABLE
         LTR   R9,R9
         JZ    ATCP0800         NO TABLE
         LR    R8,R9
*
ATCP0200 DS    0H
         L     R1,0(R8)         Att no. from table
         LTR   R1,R1
         JZ    ATCP0800         END OF TABLE
         CH    R1,10(R4)        Att no. sans comp no.
         JE    ATCP0250
         LA    R8,8(R8)         NEXT TABLE ROW
         J     ATCP0200
*
ATCP0250 DS    0H               INITIALIZATION FOUND
         A     R9,4(R8)         INITIALIZATION ARRAY
         ST    R9,60(R13)
         MVC   64(4,R13),ATCPPOOL POOL FOR NEW ATTRIBUTE
         LA    R5,16(R4)        TARGET DATA
         ST    R5,68(R13)
         LA    R5,16(R2)        SOURCE DATA
         ST    R5,72(R13)
         L     R15,DMNINAT3
         BASR  R14,R15
         J     ATCP0900
*
ATCP0800 DS    0H                NO OTHER INITIALIZATION
         L     R6,12(R4)         DATA LENGTH
         BCTR  R6,0
         EX    R6,MVCDATA        MOVE THE DATA
*
ATCP0900 DS    0H
         ST    R4,ATCPRTRN
         LM    R0,R14,ATCPREGS
         BR    R14
**************************
*    DMNGETI
**************************
DMNGETI  CSECT
DMNGETI  AMODE ANY
DMNGETI  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*  R12 + 0060 ARGUMENTS       (12 BYTES)
*        060(R12)  = INTEGER LEN 4 (FRAME RETURN)
*        0064(R12) = REFERENCE TO (STR)
*        0068(R12) = INTEGER LEN 4 (LEN)
*  R12 + 0072 LOCALS & TEMPS  (4 BYTES)
*      + 0076 SLACK BYTES     (4 BYTES)
*  R13 + 0000 STACK           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R15,64(R10)
         XC    16(4,R15),16(R15)    INITIALIZE LASTERROR
*
L00100   MVI   72(R12),0    MINUS
         XR    R7,R7        N
         L     R3,68(R12)   LEN
         L     R5,64(R12)   STR
*
         LTR   R3,R3        LEN > 0
         JNH   L00990E4
*
L00101   DS    0H
         CLI   0(R5),C' '
         JE    L00102
         CLI   0(R5),C'+'
         JE    L00103
         CLI   0(R5),C'-'
         JNE   L00104
         MVI   72(R12),X'01'
         JE    L00103
*
L00102   DS    0H
         LA    R5,1(R5)
         BRCT  R3,L00101
         J     L00990E1     ONLY WHITESPACE...
*
L00103   DS    0H
         LA    R5,1(R5)
         AHI   R3,-1
         JNP   L00990E1     ONLY SIGN...
*
L00104   DS    0H
         CLI   0(R5),C'0'   *STR < '0'
         JL    L00990E1
         CLI   0(R5),C'9'   *STR > '9'
         JH    L00990E1
*
         MHI   R7,10        N = 10*N + (*STR-'0')
         XR    R14,R14
         IC    R14,0(R5)
         AHI   R14,-E0
         AR    R7,R14
*
L00106   LA    R5,1(R5)     STR+=1
         AHI   R3,-1        LEN-=1
         JP    L00104
*
L00107   DS    0H
         CLI   72(R12),0   MINUS
         JE    L00109
         XR    R3,R3
         SR    R3,R7
         LR    R7,R3
         J     L00109
*
L00990E1 DS    0H
         LHI   R1,1
         J     L00990
*
L00990E4 DS    0H
         LHI   R1,4
*
L00990   DS    0H
         L     R15,64(R10)
         ST    R1,16(R15)        LASTERROR
         XR    R7,R7             RETURN ZERO ON ERROR
*
L00109   ST    R7,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNPUTI
**************************
DMNPUTI  CSECT
DMNPUTI  AMODE ANY
DMNPUTI  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*  R12 + 0060 ARGUMENTS       (16 BYTES)
*        0060(R12) = INTEGER LEN 4 (VAL) - R2
*        0064(R12) = REFERENCE TO STRING - R3
*        0068(R12) = 0 if want blank fill, nonzero for zero fill
*        0070(R12) = INTEGER LEN 2 (LEN) - R4
*        0072(R12) = WORK AREA (8 BYTES ON DW BOUNDARY)
*
*  R13 + 0000 STACK           (R12 + 80)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,L00200
L002X1   UNPK  0(0,R3),72(8,R12)
*
         USING L002X1,R11
L00200   DS    0H
         LM    R2,R3,60(R12)
         LH    R4,70(R12)
         LTR   R4,R4         IF LENGTH <= 0
         JNH   L00203
*
         CVD   R2,72(R12)
         OI    79(R12),X'0F'  FIX SIGN FOR PROPER UNPACK
         LR    R5,R4        LENGTH
         BCTR  R5,0         DECREMENT FOR EXECUTE
         SLA   R5,4(R0)     SHIFT LEFT HALF OF A BYTE
         EX    R5,L002X1
*
         CLI   69(R12),0    Keep the zeros?
         JNE   L00203       Yes,done
*
L00201   DS    0H
         CLI   0(R3),C'0'   IF LEADING ZERO
         JNE   L00202
         MVI   0(R3),C' '      REPLACE WITH BLANK
         LA    R3,1(R3)
         BRCT  R4,L00201
*
         BCTR  R3,0         EVERYTHING IS ZERO
         MVI   0(R3),C'0'   ...PUT OUT ONE ZERO
*
L00202   DS    0H
         LTR   R2,R2        IF VALUE IS LESS THAN ZERO
         JNL   L00203
         BCTR  R3,0         BACK UP ONE BYTE
         MVI   0(R3),C'-'      INDICATE NEGATIVE NUMBER
*
L00203   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    GETFLOCL
**************************
GETFLOCL DSECT
GETFREGS DS    15F        Saved general registers
         DS    F          Slack space
GETFINPT DS    F          -> Input string
GETFILEN DS    F          Input length
*
* Local variables
GETFFPST DS    4D         Saved fp registers
GETFINTS DS    F          -> Integral start
GETFINTL DS    F          Integral length
GETFFRAS DS    F          -> Fractional start
GETFFRAL DS    F          Fractional length
GETFEXP  DS    F          Exponential value
GETFFLAG DS    XL1        Flags
         DS    0D
GETFLGTH EQU   *-GETFLOCL
*
         ORG   GETFINPT
GETFRTRN DS    D          Return FP
**************************
*    DMNGETF
**************************
DMNGETF  CSECT
DMNGETF  AMODE ANY
DMNGETF  RMODE ANY
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,GETFLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,GETF100
GETF000  EQU   *
GETFFP1  DC    DB'1'
GETFFP10 DC    DB'10'
GETFGETI DC    A(DMNGETI)
GETF15   DC    F'15'   (0000000F)
*
         USING GETF000,R11
         USING GETFLOCL,R12
GETF100  DS    0H
         STD   F0,GETFFPST         Save fp registers
         STD   F2,GETFFPST+8
         STD   F4,GETFFPST+16
         STD   F6,GETFFPST+24
         L     R15,64(R10)
         XC    16(4,R15),16(R15)   Initialize LastError
         L     R2,GETFINPT         R2 -> Input string
         L     R3,GETFILEN         R3 =  Input length
         XC    GETFFLAG,GETFFLAG   Clear flags
*
         LTR   R3,R3               Any input?
         JZ    GETF9994            ...LastError = 4
*
* Bypass white space
GETF200  DS    0H
         CLI   0(R2),C' '          White space?
         JE    GETF250
         CLI   0(R2),C'$'          Currency sign?
         JNE   GETF300
GETF250  DS    0H
         LA    R2,1(R2)
         BRCT  R3,GETF200
         J     GETF9991            LastError = 1 (Whitespace only)
*
* Get Sign
GETF300  DS    0H
         CLI   0(R2),C'+'
         JE    GETF350
         CLI   0(R2),C'-'
         JNE   GETF400
         OI    GETFFLAG,GETFNEG    Negative number
*
GETF350  DS    0H
         LA    R2,1(R2)
         AHI   R3,-1               Reduce length
         JNP   GETF9991            LastError = 1 (Sign only)
*
* Parse input string
GETF400  DS    0H
         XC    GETFINTL,GETFINTL   Clear lengths
         XC    GETFFRAL,GETFFRAL
         XC    GETFEXP,GETFEXP     ...and exponential value
* Get integral digits
         ST    R2,GETFINTS         Start of integral portion
         BRAS  R14,GETFDIGS
         ST    R4,GETFINTL         Length of integral portion
* Get fractional digits
         LTR   R3,R3
         JNH   GETF500
         CLI   0(R2),C'.'
         JNE   GETF420
         LA    R2,1(R2)
         AHI   R3,-1
         ST    R2,GETFFRAS         Start of fractional portion
         BRAS  R14,GETFDIGS
         ST    R4,GETFFRAL         Length of fractional portion
* Get exponential number
GETF420  DS    0H
         LTR   R3,R3
         JNH   GETF500
         CLI   0(R2),C'E'
         JE    GETF440
         CLI   0(R2),C'e'
         JNE   GETF9991            Bad character
GETF440  DS    0H
         LA    R2,1(R2)
         AHI   R3,-1
         JZ    GETF500
*
         ST    R2,64(R13)
         ST    R3,68(R13)
         L     R15,GETFGETI        DMNGETI
         BASR  R14,R15
         L     R15,64(R10)         Check LastError
         L     R1,16(R15)
         LTR   R1,R1
         JNZ   GETF9997
         MVC   GETFEXP,60(R13)
*
* Move pieces to fp format and assemble
GETF500  DS    0H
         LZDR  F0
         LD    F2,GETFFP10         F2 = 10
* Move integral
         L     R3,GETFINTL         R3 =  Integral length
         LTR   R3,R3
         JNH   GETF520
         L     R2,GETFINTS         R2 -> Integral
GETF505  DS    0H
         IC    R4,0(R2)
         N     R4,GETF15
         CDFBR F4,R4
         MDBR  F0,F2
         ADBR  F0,F4               F0 = Integral part
         LA    R2,1(R2)
         BRCT  R3,GETF505
* Move fractional
GETF520  DS    0H
         LZDR  F6
         L     R3,GETFFRAL         R3 =  Fractional length
         LTR   R3,R3
         JNH   GETF540
         L     R2,GETFFRAS         R2 -> Fraction
GETF525  DS    0H
         IC    R4,0(R2)
         N     R4,GETF15
         CDFBR F4,R4
         MDBR  F6,F2
         ADBR  F6,F4               F6 = Fractional part
         LA    R2,1(R2)
         BRCT  R3,GETF525
*
         L     R4,GETFFRAL
         LD    F4,GETFFP1
GETF526  DS    0H
         MDBR  F4,F2
         BRCT  R4,GETF526
*
         DDBR  F6,F4               Make fractional
         ADBR  F0,F6               F0 = Integral + Fractional
* Deal with exponent
GETF540  DS    0H
         LD    F4,GETFFP1
         L     R4,GETFEXP
         LTR   R4,R4
         JZ    GETF600
         JP    GETF545
         OI    GETFFLAG,GETFNEGX
         LHI   R15,-1
         MR    R4,R15
*
GETF545  DS    0H
         MDBR  F4,F2
         BRCT  R4,GETF545
*
         TM    GETFFLAG,GETFNEGX   Negative exponent?
         JO    GETF560
         MDBR  F0,F4
         J     GETF600
GETF560  DS    0H
         DDBR  F0,F4
*
* Process sign
GETF600  DS    0H
         TM    GETFFLAG,GETFNEG
         JNO   GETF650
         LNDBR F0,F0
GETF650  DS    0H
         STD   F0,GETFRTRN
         J     GETF9999
*
* Error conditions
GETF9991 DS    0H
         LHI   R1,1
         J     GETF9997
*
GETF9994 DS    0H
         LHI   R1,4
*
GETF9997 DS    0H
         L     R15,64(R10)
         ST    R1,16(R15)          Set LastError
         XC    GETFRTRN,GETFRTRN
         J     GETF9999
*
GETF9999 DS    0H
         LD    F0,GETFFPST
         LD    F2,GETFFPST+8
         LD    F4,GETFFPST+16
         LD    F6,GETFFPST+24
         LM    R0,R14,GETFREGS
         BR    R14
***************
*  SUBROUTINES
***************
GETFDIGS DS    0H
         XR    R4,R4               R4 - Accumulator
GETFDIG1 DS    0H
         CLI   0(R2),C'0'
         JL    GETFDIGX
         CLI   0(R2),C'9'
         JH    GETFDIGX
         LA    R2,1(R2)
         LA    R4,1(R4)
         BRCT  R3,GETFDIG1
*
GETFDIGX DS    0H
         BR    R14
**************************
*    PUTFLOCL
**************************
PUTFLOCL DSECT
PUTFREGS DS    15F         SAVED REGISTERS
PUTFPREC DS    F           Precision
PUTFINFP DS    D           Input Floating Point
PUTFSTR  DS    F           String result
* Program variables
PUTFFLAG DS    XL1         Flags
PUTFSVFR DS    4D          Save FP registers
PUTFWORK DS    PL8         Work area on DB boundary
PUTFIPTN DS    PL16
         DS    0D
PUTFLGTH EQU   *-PUTFLOCL
*
         ORG   PUTFPREC
PUTFRSLT DS    F
**************************
*    V40PUTF
**************************
V40PUTF  CSECT
V40PUTF  AMODE ANY
V40PUTF  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13               FRAME
         AHI   R13,PUTFLGTH          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,PUTF0100
PUTF0000 EQU   *
PUTFB1   DC    DB'1'
PUTFB10  DC    DB'10'
PUTFBMAX DC    DB'2147483647'
PUTFROUN DC    A(DMNROUN)
PUTFPMAX DC    P'2147483647'
PUTFP0   DC    P'0'
*
         USING PUTF0000,R11
         USING PUTFLOCL,R12
PUTF0100 DS    0H
         STD   F0,PUTFSVFR           Save FP registers
         STD   F2,PUTFSVFR+8
         STD   F4,PUTFSVFR+16
         STD   F6,PUTFSVFR+24
*
         XC    PUTFFLAG,PUTFFLAG
*
         ZAP   PUTFIPTN,PUTFP0
         ZAP   PUTFWORK,PUTFP0
*
         L     R8,PUTFSTR
         MVI   0(R8),C'0'            Move zeros into string
         MVC   1(63,R8),0(R8)
*
         L     R2,PUTFPREC           R2 = Precision
         LTR   R2,R2
         JNL   PUTF0120
         OI    PUTFFLAG,PUTFNOPC
*
PUTF0120 DS    0H
         LD    F0,PUTFINFP           F0 = Input number
         LTDBR F0,F0
         JNL   PUTF0150
         MVI   0(R8),C'-'            Number is negative
         LPDBR F0,F0                 Force positive
*
PUTF0150 DS    0H
         TM    PUTFFLAG,PUTFNOPC     Don't round on
         JO    PUTF0200              ...unspecified precision
         ST    R2,60(R13)            Round to correct precision
         STD   F0,64(R13)
         L     R15,PUTFROUN          DMNROUN
         BASR  R14,R15
         LD    F0,64(R13)
*
* Fetch the integral portion
PUTF0200 DS    0H
         CDB   F0,PUTFBMAX           Accumulate maximums
         JL    PUTF0250
         LTDBR F4,F0
         DDB   F4,PUTFBMAX
         CFDBR R3,5,F4
         CVD   R3,PUTFWORK
         ZAP   PUTFIPTN,PUTFPMAX
         MP    PUTFIPTN,PUTFWORK
*
         FIDBR F4,5,F4
         MDB   F4,PUTFBMAX
         SDBR  F0,F4
*
PUTF0250 DS    0H
         CFDBR R3,5,F0               Convert and truncate
         CDFBR F2,R3                 Convert back to fp
         SDBR  F0,F2                 ...and remove integral of fp
         CVD   R3,PUTFWORK
         AP    PUTFIPTN,PUTFWORK
*
         LA    R6,1(R8)
         LA    R7,PUTFIPTN
         BRAS  R14,PUTF5000          Unpack the result
         MVI   32(R8),C'.'           Insert decimal
*
         TM    PUTFFLAG,PUTFNOPC     Don't round on
         JO    PUTF0300              ...unspecified precision
         ST    R2,60(R13)            Remove noise
         STD   F0,64(R13)
         L     R15,PUTFROUN          DMNROUN
         BASR  R14,R15
         LD    F0,64(R13)
*
* Fetch the fractional portion
PUTF0300 DS    0H
         ZAP   PUTFIPTN,PUTFP0
         TM    PUTFFLAG,PUTFNOPC     No precision specified
         JNO   PUTF0319
         LR    R14,R8                Start significance search
PUTF0310 DS    0H
         AHI   R14,1
         CLI   0(R14),C'0'           Significant digit?
         JE    PUTF0310
         S     R14,PUTFSTR           Number non-significant digits
         LHI   R15,32
         SR    R15,R14
         LHI   R2,14
         SR    R2,R15
*
PUTF0319 DS    0H
         LR    R3,R2
PUTF0320 DS    0H
         CHI   R3,0                  Any precision left?
         JNH   PUTF0400
         LR    R4,R3
         LD    F2,PUTFB1
         CHI   R3,9                  Max 9 digits at a time
         JNH   PUTF0340
         LHI   R4,9
*
PUTF0340 DS    0H
         LR    R5,R4                 Save # of digits this round
PUTF0350 DS    0H
         MDB   F2,PUTFB10
         NI    PUTFIPTN,X'0F'        Remove digit to avoid S0CA
         SRP   PUTFIPTN,1,0
         BRCT  R4,PUTF0350
*
         ST    R3,60(R13)            Remove noise
         STD   F0,64(R13)
         L     R15,PUTFROUN          DMNROUN
         BASR  R14,R15
         LD    F0,64(R13)
*
         MDBR  F0,F2
         CFDBR R6,1,F0
         CDFBR F2,R6
         SDBR  F0,F2
         CVD   R6,PUTFWORK
         AP    PUTFIPTN,PUTFWORK
         SR    R3,R5
         J     PUTF0320
*
PUTF0400 DS    0H
         LHI   R3,31
         SR    R3,R2
         JNP   PUTF0500
*
PUTF0450 DS    0H
         NI    PUTFIPTN,X'0F'        Remove digit to avoid S0CA
         SRP   PUTFIPTN,1,0          Move result left for unpack
         BRCT  R3,PUTF0450
*
PUTF0500 DS    0H
         LA    R6,33(R8)
         LA    R7,PUTFIPTN
         BRAS  R14,PUTF5000          Unpack fractional portion
*
PUTF0900 DS    0H
         LD    F0,PUTFSVFR
         LD    F2,PUTFSVFR+8
         LD    F4,PUTFSVFR+16
         LD    F6,PUTFSVFR+24
         LM    R0,R14,PUTFREGS
         BR    R14
         DROP  R11
         DROP  R12
**
** Long (31 bytes) unpack routine
PUTF5000 DS    0H
         UNPK  0(15,R6),0(8,R7)
         OI    14(R6),X'F0'
         XC    0(7,R7),0(R7)         Remove digits to avoid S0CA
         NI    7(R7),X'0F'
         SRP   0(16,R7),15,0
         UNPK  15(15,R6),0(8,R7)
         OI    29(R6),X'F0'
         XC    0(7,R7),0(R7)         Remove digits to avoid S0CA
         NI    7(R7),X'0F'
         SRP   0(16,R7),15,0
         UNPK  30(1,R6),0(1,R7)
         OI    30(R6),X'F0'
         BR    R14
**************************
*    GDTELOCL
**************************
GDTELOCL DSECT
GDTEREGS DS    15F           SAVED REGISTERS
GDTEPART DS    F             Part code (0-8)
GDTEDTE  DS    D             Domain date
*
         ORG   GDTEPART
GDTERTRN DS    0F            Return area
GDTEY    DS    F             year
GDTEM    DS    F             month
GDTED    DS    F             day
GDTEH    DS    F             hour
GDTEMN   DS    F             minute
GDTEDW   DS    F             day of week
GDTES    DS    F             second
GDTEMS   DS    F             millisecond
*
* Local stack work areas
GDTEDATE DS    F             date
GDTETIME DS    F             time
GDTEN    DS    F             n
GDTEII   DS    F             ii
GDTEJ    DS    F             j
GDTELL   DS    F             ll
GDTESF0  DS    D             Save area for FP
GDTESF2  DS    D
GDTESF4  DS    D
*
         DS    0D
GDTELGTH EQU   *-GDTELOCL
GDTELGT2 EQU   *-GDTEDATE
**************************
*    DMNGDATX
**************************
DMNGDATX CSECT
DMNGDATX AMODE ANY
DMNGDATX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,GDTELGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DD0100
*
GDTE000  EQU   *
GDTELONG DC    A(DMNLONG)
GDTEMID  DC    F'1440'       Minutes in a day (24*60)
GDTECST1 DC    F'146097'
GDTECST2 DC    F'1461001'
GDTECST3 DC    F'2447393'
GDTECST4 DC    DB'60'
GDTECST5 DC    DB'1000'
*
         USING GDTE000,R11
         USING GDTELOCL,R12
DD0100   DS    0H
         STD   F0,GDTESF0
         STD   F2,GDTESF2
         STD   F4,GDTESF4
         L     R5,GDTEPART   R5 = Part code
         CHI   R5,0
         JL    DD0190
         CHI   R5,8
         JH    DD0190
*
         OI    60(R13),X'80'
         LD    F0,GDTEDTE
         STD   F0,64(R13)
         L     R15,GDTELONG  DMNLONG
         BASR  R14,R15
         L     R6,72(R13)    R6 = Integral part (Y/M/D H:M) of date
*
         LR    R3,R6
         XR    R2,R2
         D     R2,GDTEMID
         ST    R2,GDTETIME
         AL    R3,GDTECST3
         ST    R3,GDTEDATE
*
         XR    R2,R2
         LHI   R3,4
         M     R2,GDTEDATE
         D     R2,GDTECST1
         ST    R3,GDTEN
*
         XR    R2,R2
         L     R3,GDTECST1
         M     R2,GDTEN
         AHI   R3,3
         LHI   R1,4
         DR    R2,R1
         L     R4,GDTEDATE
         SLR   R4,R3
         ST    R4,GDTEDATE
*
         LR    R3,R4
         AHI   R3,1
         MHI   R3,4000
         XR    R2,R2
         D     R2,GDTECST2
         ST    R3,GDTEII
*
         MHI   R3,-1461
         LHI   R1,4
         XR    R2,R2
         LTR   R3,R3
         JNL   DD0110
         BCTR  R2,0
DD0110   DS    0H
         DR    R2,R1
         AHI   R3,31
         AL    R3,GDTEDATE
         ST    R3,GDTEDATE
*
         MHI   R3,80
         LHI   R1,2447
         XR    R2,R2
         DR    R2,R1
         ST    R3,GDTEJ
*
         LHI   R1,11
         XR    R2,R2
         DR    R2,R1
         ST    R3,GDTELL
*
*  CALCULATE RETURN VALUES
*
         LR    R15,R5
         SLL   R15,2
         BRAS  R14,DD0JMP
         J     DD0120     0 - Year
         J     DD0125     1 - Month
         J     DD0130     2 - Day
         J     DD0135     3 - Hour
         J     DD0140     4 - Minute
         J     DD0145     5 - Day of week
         J     DD0155     6 - Second
         J     DD0155     7 - Millisecond
         J     DD0120     8 - All
DD0JMP   B     0(R14,R15)
*
DD0120   DS    0H            Get year
         L     R3,GDTEN
         AHI   R3,-49
         MHI   R3,100
         A     R3,GDTEII
         A     R3,GDTELL
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTEY
*
DD0125   DS    0H            Get month
         L     R3,GDTELL
         MHI   R3,-12
         A     R3,GDTEJ
         AHI   R3,2
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTEM
*
DD0130   DS    0H            Get day
         L     R3,GDTEJ
         MHI   R3,2447
         XR    R2,R2
         LHI   R1,80
         DR    R2,R1
         L     R4,GDTEDATE
         SR    R4,R3
         LR    R3,R4
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTED
*                            Get hour
DD0135   DS    0H
         L     R3,GDTETIME
         LA    R1,60
         XR    R2,R2
         DR    R2,R1
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTEH
*
DD0140   DS    0H            Get minute
         L     R3,GDTETIME
         LA    R1,60
         XR    R2,R2
         DR    R2,R1
         LR    R3,R2
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTEMN
*
DD0145   DS    0H            Get Day of week
         LR    R3,R6         RELOAD ORIGINAL DOMAIN DATE
         XR    R2,R2
         D     R2,GDTEMID
         AHI   R3,1
         LHI   R1,7
         XR    R2,R2
         DR    R2,R1
*   REMAINDER IS 0-6, 0 FOR SUNDAY THROUGH 6 FOR SATURDAY
         LR    R3,R2
         CHI   R5,8
         JNE   DD0195
         ST    R3,GDTEDW
*
DD0155   DS    0H            Get seconds / milliseconds
         LTDBR F2,F0
         FIDBR F4,5,F0
         SDBR  F2,F4
         MDB   F2,GDTECST4
         CFDBR R14,5,F2      R14 = Seconds
         FIDBR F4,5,F2
         SDBR  F2,F4
         MDB   F2,GDTECST5
         CFDBR R15,1,F2      R15 = Milliseconds
         CHI   R15,1000      Adjust for rounding error
         JL    DD0160
         AHI   R15,-1000
         AHI   R14,1
*
DD0160   DS    0H
         CHI   R5,6          Seconds requested?
         JNE   DD0165
         LR    R3,R14
         J     DD0195
*
DD0165   DS    0H
         CHI   R5,7          Milliseconds requested?
         JNE   DD0170
         LR    R3,R15
         J     DD0195
*
DD0170   DS    0H
         ST    R14,GDTES     Must be both
         ST    R15,GDTEMS
         J     DD0195
*
DD0190   DS    0H
         XR    R3,R3         RETURN 0 ON ERROR
DD0195   DS    0H
         CHI   R5,8
         JE    DD0999
         ST    R3,GDTERTRN
*
DD0999   DS    0H
         LD    F0,GDTESF0
         LD    F2,GDTESF2
         LD    F4,GDTESF4
         LM    R0,R14,GDTEREGS
         BR    R14
**************************
*    GETDLOCL
**************************
GETDLOCL DSECT
GETDREGS DS    15F           SAVED REGISTERS
GETDFMT  DS    F             -> Format string
GETDDTE  DS    F             -> Date string
GETDFMTL DS    H             Format string length
GETDDTEL DS    H             Date string length
GETDLEFT DS    F             Bytes left over
*
* Local stack work areas
GETDWORK DS    F             Work area
GETDADDR DS    F             Storage address
GETDFLAG DS    F             Flags
GETDYEAR DS    F             Date component work areas
GETDMNTH DS    F
GETDDAY  DS    F
GETDHOUR DS    F
GETDMIN  DS    F
GETDDOW  DS    F
GETDSEC  DS    F
GETDMSEC DS    F
GETDR14  DS    F             R14 Save area
GETDSTRT DS    F             Date string starting address
*
         DS    0D
GETDLGTH EQU   *-GETDLOCL
GETDLGT2 EQU   *-GETDWORK
*
         ORG   GETDFMT
GETDFILR DS    F             Filler
GETDRTRN DS    D             Return date
**************************
*    DMNGETDX
**************************
DMNGETDX CSECT
DMNGETDX AMODE ANY
DMNGETDX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,GETDLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DG0200
*
GETD000  EQU   *
GETDGETI DC    A(DMNGETI)
GETDJDAT DC    A(DMNJDATX)
GETDGDAT DC    A(DMNGDATX)
GETDALPH DC    A(DMNALPHA)
*
         USING GETD000,R11
         USING GETDLOCL,R12
DG0200   DS    0H
         L     R15,64(R10)
         XC    16(4,R15),16(R15)   CLEAR LASTERROR
         XC    GETDWORK(GETDLGT2),GETDWORK  Clear work area
*
         L     R2,GETDFMT          ADDRESS - FORMAT STRING
         LH    R4,GETDFMTL         LENGTH
         LTR   R4,R4
         JNZ   DG0201
         LH    R4,4(R2)            LENGTH - SCB
         L     R2,0(R2)            POINTER
*
DG0201   DS     0H
         L     R3,GETDDTE          ADDRESS - INPUT STRING
         LH    R5,GETDDTEL         LENGTH
         LTR   R5,R5
         JNZ   DG0202
         LH    R5,4(R3)            LENGTH - SCB
         L     R3,0(R3)            POINTER
*
DG0202   DS    0H
         LTR   R5,R5               Any input?
         JNH   DG0295E4
         LTR   R3,R3               Null input?
         JNH   DG0295E4
         ST    R3,GETDSTRT         Save starting address
         LHI   R1,-1               Initialize year value
         ST    R1,GETDYEAR
*
DG0205   DS    0H
         LTR   R4,R4
         JNH   DG0250              FORMAT STRING DONE
*
         CLI   0(R2),C'%'
         JE    DG0210
         CLC   0(1,R2),0(R3)       CHARACTERS SHOULD BE EQUAL
         JNE   DG0295E3            IF NOT - EXIT WITHOUT SAVING
         LA    R2,1(R2)            MOVE TO NEXT BYTE
         LA    R3,1(R3)
         BCTR  R4,0                REDUCE LENGTHS
         BCTR  R5,0
         J     DG0205              LOOP
*
DG0210   DS    0H
         CLI   1(R2),C's'          Strict flag?
         JNE   DG210Y
         OI    GETDFLAG,GETDFLA1
         J     DG0230
*
DG210Y   DS    0H
         LHI   R7,4                MAX LENGTH FOR YEAR
         LA    R8,GETDYEAR
         ST    R8,GETDADDR         ...STORAGE AREA
         CLI   1(R2),C'Y'          HANDLE YEAR
         JE    DG0220
         CLI   1(R2),C'y'   X'A8'  LOWERCASE 'Y'
         JE    DG0220
*
         LHI   R7,2                MAX LENGTH FOR MONTH
         LA    R8,GETDMNTH
         ST    R8,GETDADDR         ...STORAGE AREA
         CLI   1(R2),C'm'   X'94'  HANDLE MONTH (LOWERCASE 'M')
         JNE   DG0210D
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDMNTH
         J     DG0220
*                                  SAME LENGTH FOR OTHERS
DG0210D  DS    0H
         LA    R8,GETDDAY
         ST    R8,GETDADDR         ...STORAGE AREA (DAY)
         CLI   1(R2),C'd'   X'84'  HANDLE DAY (LOWERCASE 'D')
         JNE   DG0210H
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDDAY
         J     DG0220
*
DG0210H  DS    0H
         LA    R8,GETDHOUR
         ST    R8,GETDADDR         ...STORAGE AREA (HOUR)
         CLI   1(R2),C'H'          HANDLE HOURS
         JNE   DG0210MN
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDHOUR
         J     DG0220
*
DG0210MN DS    0H
         LA    R8,GETDMIN
         ST    R8,GETDADDR         ...STORAGE AREA (MINUTE)
         CLI   1(R2),C'M'          HANDLE MINUTES
         JNE   DG0210S
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDMIN
         J     DG0220
*
DG0210S  DS    0H
         LA    R8,GETDSEC
         ST    R8,GETDADDR         ...STORAGE AREA (SECOND)
         CLI   1(R2),C'C'          HANDLE SECONDS
         JNE   DG0210MS
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDSEC
         J     DG0220
*
DG0210MS DS    0H
         LHI   R7,3                MAX LENGTH FOR MILLISECONDS
         LA    R8,GETDMSEC
         ST    R8,GETDADDR         ...STORAGE AREA (MILLISECONDS)
         CLI   1(R2),C'L'          HANDLE MILLISECONDS
         JNE   DG0295E3            ERROR - EXIT WITHOUT SAVING
         LHI   R1,-1               MAKE SURE IT EXISTS
         ST    R1,GETDMSEC
*
DG0220   DS    0H
         LTR   R5,R5               IF NO MORE ROOM
         JNH   DG0230              ...DON'T MOVE
         BRAS  R14,DG0200P         PARSE AND MOVE
*
         ST    R6,68(R13)          LENGTH
         LA    R6,GETDWORK         POINTER TO STRING
         ST    R6,64(R13)
         L     R15,GETDGETI        DMNGETI
         BASR  R14,R15
         L     R1,60(R13)          CHECK RETURN FOR ERROR
         CHI   R1,-1
         JE    DG0295E3
         L     R6,GETDADDR         POINTER TO STORAGE AREA
         MVC   0(4,R6),60(R13)     STORE INTEGER VALUE
*
DG0230   DS    0H
         LA    R2,2(R2)            MOVE FORMAT STRING
         AHI   R4,-2               ADJUST LENGTH
         J     DG0205              AND LOOP
*
DG0250   DS    0H
         MVC   60(20,R13),GETDYEAR
         MVC   80(8,R13),GETDSEC
         L     R15,GETDJDAT        DMNJDATX
         BASR  R14,R15
*
         MVC   GETDRTRN,64(R13)    MOVE TO OUTPUT AREA
*
         LHI   R2,8
         ST    R2,60(R13)          AND MAKE SURE PARTS MATCH
         L     R15,GETDGDAT        DMNGDATX
         BASR  R14,R15
         CLC   60(4,R13),GETDYEAR  COMPARE YEAR
         JE    DG0260
*
         L     R14,GETDYEAR        CHECK FOR 2 DIGIT YEAR
         CHI   R14,99
         JH    DG0295E3
*                                  ONLY 2 DIGITS...
         XR    R14,R14
         L     R15,GETDYEAR
         LHI   R2,100
         DR    R14,R2              YYYY MOD 100 = YY
         C     R14,GETDYEAR        COMPARE 2 DIGIT YEAR
         JNE   DG0295E3            STILL UNEQUAL
*
DG0260   DS    0H
         CLC   64(16,R13),GETDMNTH COMPARE MDHM
         JNE   DG0295E3
         CLC   84(8,R13),GETDSEC   COMPARE SM
         JE    DG0295
*
DG0295E3 DS    0H
         LHI   R1,3                SET LASTERROR
         J     DG0295E
*
DG0295E4 DS    0H
         LHI   R1,4                LASTERROR = 4 - INPUT EMPTY
         J     DG0295E
*
DG0295E  DS    0H
         L     R15,64(R10)
         ST    R1,16(R15)
         XC    GETDRTRN,GETDRTRN CLEAR OUTPUT ON ERROR
*
DG0295   DS    0H
         L     R4,GETDLEFT
         LTR   R4,R4              Place for left?
         JE    DGDONE
         S     R3,GETDSTRT
         ST    R3,0(R4)           Bytes left over
*
DGDONE   DS    0H
         LM    R0,R14,GETDREGS
         BR    R14
*
* SUBROUTINES...
*
DG0200P  DS    0H
         ST    R14,GETDR14
         LA    R6,GETDWORK         TEXT WORK AREA
         LR    R9,R7               SAVE STARTING LENGTH
         TM    GETDFLAG,GETDFLA1
         JO    DG0250P
*
DG0201P  DS    0H
         CLI   0(R3),C'0'          IGNORE ALL NON-DIGITS
         JL    DG0205P
         CLI   0(R3),C'9'
         JNH   DG0210P
*
DG0205P  DS    0H
         ST    R3,60(R13)
         LHI   R1,1
         ST    R1,64(R13)
         L     R15,GETDALPH        DMNALPHA
         BASR  R14,R15
         L     R1,60(R13)
         LTR   R1,R1               CHECK FOR ALPHA
         JNH   DG0295E3            ...ERROR IF YES
*
         LA    R3,1(R3)            IGNORE ALL BUT ALPHA
         BRCT  R5,DG0201P
*
DG0210P  DS    0H
         LTR   R5,R5
         JNH   DG0299P             INPUT STRING DONE
         LTR   R7,R7
         JNH   DG0299P             MAX LENGTH
         CLI   0(R3),C'0'          MUST ALSO BE DIGIT
         JL    DG0299P
         CLI   0(R3),C'9'
         JH    DG0299P
         MVC   0(1,R6),0(R3)       MOVE CHARACTER
         LA    R6,1(R6)
         BCTR  R7,0                DECREMENT MAX LENGTH
         LA    R3,1(R3)
         BRCT  R5,DG0210P
         J     DG0299P
*
* Strict interpretation
DG0250P  DS    0H
         CLI   0(R3),C' '          Ignore leading space(s)
         JNE   DG0255P
         AHI   R3,1
         AHI   R5,-1
         BRCT  R7,DG0250P
         JNP   DG0299P
         J     DG0295E3            Error - nothing but spaces
*
DG0255P  DS    0H
         CLI   0(R3),C'0'
         JL    DG0295E3
         CLI   0(R3),C'9'
         JH    DG0295E3
         MVC   0(1,R6),0(R3)       MOVE CHARACTER
         AHI   R6,1
         AHI   R3,1
         AHI   R5,-1
         JNP   DG0266P
         BRCT  R7,DG0255P
         J     DG0299P
*
DG0266P  DS    0H
         AHI   R7,-1
         JNZ   DG0295E3
*
DG0299P  DS    0H
         LA    R1,GETDWORK         RELOAD STRING START
         SR    R6,R1               R6=NUMBER OF DIGITS
         L     R14,GETDR14
         BR    R14
**************************
*    JDATLOCL
**************************
JDATLOCL DSECT
JDATREGS DS    15F           SAVED REGISTERS
JDATYEAR DS    F             Year
JDATMNTH DS    F             Month
JDATDAY  DS    F             Day
JDATHOUR DS    F             Hour
JDATMIN  DS    F             Minute
JDATSEC  DS    F             Second
JDATMSEC DS    F             Millisecond
* Local stack work areas
JDATWORK DS    CL16          Time Storage
JDATSF0  DS    D
JDATSF2  DS    D
*
         DS    0D
JDATLGTH EQU   *-JDATLOCL
*
         ORG   JDATYEAR
JDATFILR DS    F             Slack FW
JDATRTRN DS    D             Return date (FW or DW)
**************************
*    DMNJDATX
**************************
DMNJDATX CSECT
DMNJDATX AMODE ANY
DMNJDATX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,96      END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,JD000
JDAT000  EQU   *
JDATCST1 DC    F'-32075'
JDATCST2 DC    F'68569'
JDATCST3 DC    F'2447393'
JDATTIME DC    A(DMNTIME)
JDATCST4 DC    DB'60'
JDATCST5 DC    DB'60000'
*
         USING JDAT000,R11
         USING JDATLOCL,R12
JD000    DS    0H
         STD   F0,JDATSF0
         STD   F2,JDATSF2
         OC    JDATYEAR(28),JDATYEAR    IF ALL DATE COMPONENTS = 0
         JZ    JD0295                   ...RETURN 0,
*  NORMALIZE YEAR
JD0100   DS    0H
         L     R2,JDATYEAR         GET YEAR VALUE
         LTR   R2,R2               IF NO YEAR ENTERED
         JL    JD0295              ...RETURN ZERO - ERROR
         CHI   R2,99               IF MORE THAN TWO DIGITS
         JH    JD0200              ...PROCESS AS ENTERED
*
         L     R15,JDATTIME        DMNTIME
         BASR  R14,R15
         MVC   JDATWORK,60(R13)    RETURNED TIME VALUE
         MVI   JDATWORK+7,X'0C'       USE 8 BYTES AS PACKED WORK AREA
         MVO   JDATWORK(8),JDATWORK+8(2) PACK YEAR
         CVB   R5,JDATWORK         CONVERT TO BINARY
         LR    R7,R5
         XR    R4,R4
         LA    R1,100
         DR    R4,R1               DIVIDE BY 100
         MHI   R5,100              ...THEN MULTIPLY = CENTURY
* SLIDING YEAR CALCULATIONS
         AR    R2,R5
         LR    R6,R7
         AHI   R6,-90
         CR    R2,R6
         JH    JD0120
         AHI   R2,100
         J     JD0200
*
JD0120   DS    0H
         LR    R6,R7
         AHI   R6,10
         CR    R2,R6
         JNH   JD0200
         AHI   R2,-100
*  DATE CALCULATIONS
JD0200   DS    0H
         ST    R2,JDATYEAR         STORE NORMALIZED YEAR
         XR    R8,R8
         L     R9,JDATMNTH
         AHI   R9,-14
         JNL   JD0210
         BCTR  R8,0                PROPOGATE SIGN
JD0210   DS    0H
         LHI   R1,12
         DR    R8,R1
*
         XR    R2,R2
         L     R3,JDATYEAR
         AHI   R3,4800
         AR    R3,R9
         MHI   R3,1461
         LHI   R1,4
         DR    R2,R1
*
         XR    R4,R4
         LR    R5,R9
         MHI   R5,12
         LCR   R5,R5
         AHI   R5,-2
         A     R5,JDATMNTH
         MHI   R5,367
         LTR   R5,R5
         JNL   JD0220
         BCTR  R4,0
JD0220   DS    0H
         LA    R1,12
         DR    R4,R1
*
         XR    R6,R6
         L     R7,JDATYEAR
         AHI   R7,4900
         AR    R7,R9
         LA    R1,100
         DR    R6,R1
         XR    R6,R6
         MHI   R7,-3
         LTR   R7,R7
         JNL   JD0230
         BCTR  R6,0
JD0230   DS    0H
         LA    R1,4
         DR    R6,R1
*
         L     R2,JDATDAY
         A     R2,JDATCST1
         AR    R2,R3
         AR    R2,R5
         AR    R2,R7
         A     R2,JDATCST2
*
         C     R2,JDATCST3
         JH    JD0240
         XR    R2,R2
         J     JD0250
*
JD0240   DS    0H
         S     R2,JDATCST3
*
JD0250   DS    0H
         MHI   R2,1440
*
         L     R3,JDATHOUR
         MHI   R3,60
         A     R3,JDATMIN
         AR    R2,R3
         L     R3,JDATSEC      Convert seconds to fraction of minutes
         CDFBR F0,R3
         DDB   F0,JDATCST4
         L     R3,JDATMSEC     Add on milliseconds
         CDFBR F2,R3
         DDB   F2,JDATCST5
         ADBR  F0,F2
         CDFBR F2,R2           Add integral portion
         ADBR  F0,F2
         STD   F0,JDATRTRN
*
JD0295   DS    0H
         LD    F0,JDATSF0
         LD    F2,JDATSF2
         LM    R0,R14,JDATREGS
         BR    R14
**************************
*    PUTDLOCL
**************************
PUTDLOCL DSECT
PUTDREGS DS    15F          Saved registers
PUTDFILR DS    F            Filler
PUTDDATE DS    D            Input Domain Date
PUTDFMT  DS    F            -> Format string
PUTDSTR  DS    F            -> Output date string / SCB
PUTDFMTL DS    H            Format string length
PUTDSTRL DS    H            Output date string length
PUTDWORK DS    F
PUTDCNTR DS    F
PUTDBULD DS    CL48         Build area
*
         DS    0D
PUTDLGTH EQU   *-PUTDLOCL
         ORG   PUTDFILR
PUTDRTRN DS    F            Return unused bytes
**************************
*    DMNPUTDX
**************************
DMNPUTDX CSECT
DMNPUTDX AMODE ANY
DMNPUTDX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,PUTDLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DP0300
DP0000   EQU   *
DPGDATE  DC    A(DMNGDATX)
DPPUTI   DC    A(DMNPUTI)
PUTDSCPY DC    A(DMNSCPY)
PUTDMVC  MVC   0(0,R3),0(R8)
DP03MON  DC    CL3'Jan'
         DC    CL3'Feb'
         DC    CL3'Mar'
         DC    CL3'Apr'
         DC    CL3'May'
         DC    CL3'Jun'
         DC    CL3'Jul'
         DC    CL3'Aug'
         DC    CL3'Sep'
         DC    CL3'Oct'
         DC    CL3'Nov'
         DC    CL3'Dec'
DP03LMN  DC    CL10'7January'
         DC    CL10'8February'
         DC    CL10'5March'
         DC    CL10'5April'
         DC    CL10'3May'
         DC    CL10'4June'
         DC    CL10'4July'
         DC    CL10'6August'
         DC    CL10'9September'
         DC    CL10'7October'
         DC    CL10'8November'
         DC    CL10'8December'
*
         USING DP0000,R11
         USING PUTDLOCL,R12
DP0300   DS    0H
         XC    PUTDCNTR,PUTDCNTR   CLEAR COUNTER
*
         L     R2,PUTDFMT          ADDRESS - FORMAT STRING
         LH    R4,PUTDFMTL         LENGTH
         LA    R3,PUTDBULD         OUTPUT ADDRESS
         LHI   R5,48               LENGTH
         MVI   PUTDBULD,C' '       CLEAR OUTPUT AREA
         MVC   PUTDBULD+1(47),PUTDBULD
*
         LTR   R4,R4               FORMAT INFO SCB?
         JNZ   DP0305              ...no - continue
         LH    R4,4(R2)            LENGTH - FORMAT SCB
         L     R2,0(R2)            ADDRESS
*
DP0305   DS    0H
         LTR   R4,R4
         JNH   DP0350              FORMAT STRING DONE
*
         CLI   0(R2),C'%'
         JE    DP0310
         LTR   R5,R5               IF ANY ROOM LEFT
         JNH   DP0307
         MVC   0(1,R3),0(R2)       MOVE AS IS
*
DP0307   DS    0H
         LA    R2,1(R2)            MOVE TO NEXT BYTE
         LA    R3,1(R3)
         BCTR  R4,0                REDUCE LENGTHS
         BCTR  R5,0
         L     R1,PUTDCNTR         INCREMENT REQUIRED COUNTER
         LA    R1,1(R1)
         ST    R1,PUTDCNTR
         J     DP0305              LOOP
*
DP0310   DS    0H
         XC    60(4,R13),60(R13)   CLEAR AREA - YEAR CODE
         LA    R7,4                LENGTH FOR YEAR
         CLI   1(R2),C'Y'          HANDLE YEAR
         JE    DP0320
         LA    R7,2
         CLI   1(R2),C'y'
         JE    DP0320
*
         MVI   63(R13),X'01'       MONTH CODE
         LA    R7,3                MAX LENGTH FOR LOWER B
         CLI   1(R2),C'b'          HANDLE MONTH (LOWERCASE 'B')
         JE    DP0320
         LA    R7,9                MAX LENGTH FOR UPPER B
         CLI   1(R2),C'B'          HANDLE MONTH
         JE    DP0320
         LA    R7,2                MAX LENGTH FOR NUMERIC MON
         CLI   1(R2),C'm'          HANDLE MONTH
         JE    DP0320
*                            SAME LENGTH FOR OTHERS
         MVI   63(R13),X'02'       DAY CODE
         CLI   1(R2),C'd'          HANDLE DAY
         JE    DP0320
*
         MVI   63(R13),X'03'       HOUR CODE
         CLI   1(R2),C'H'          HANDLE HOURS
         JE    DP0320
*
         MVI   63(R13),X'04'       MINUTE CODE
         CLI   1(R2),C'M'          HANDLE MINUTES
         JE    DP0320
*
         MVI   63(R13),X'06'       SECONDS CODE
         CLI   1(R2),C'C'          HANDLE SECONDS
         JE    DP0320
*
         MVI   63(R13),X'07'       MILLISECONDS CODE
         CLI   1(R2),C'L'          HANDLE MILLISECONDS
         JNE   DP0395              ERROR - EXIT WITHOUT SAVING
*
DP0320   DS    0H
         A     R7,PUTDCNTR         INCREMENT REQUIRED COUNTER
         ST    R7,PUTDCNTR
*
         LTR   R5,R5               IF NO MORE ROOM
         JNH   DP0330              ...DON'T CONVERT AND MOVE
         MVC   64(8,R13),PUTDDATE
         L     R15,DPGDATE
         BASR  R14,R15             DMNGDATX
*
         CLI   1(R2),C'b'          Handle non-numeric months
         JE    DP0340
         CLI   1(R2),C'B'
         JE    DP0345
*
         LA    R1,PUTDWORK         STORE AREA FOR TEXT
         ST    R1,64(R13)
         LA    R1,4                LENGTH OF AREA = 4 BYTES
         STH   R1,70(R13)
         LHI   R1,1
         STH   R1,68(R13)          ZERO FILL
         L     R15,DPPUTI
         BASR  R14,R15             DMNPUTI
*
         LA    R7,2                Default to 2 digits of significance
         LA    R8,PUTDWORK+2       TEXT AREA
         CLI   1(R2),C'Y'          Large Y uses 4
         JNE   DP0324
         LA    R7,4
         LA    R8,PUTDWORK
DP0324   DS    0H
         CLI   1(R2),C'L'          Milliseconds?
         JNE   DP0325              ...No - continue
         LA    R7,3                else - use 3 digits
         LA    R8,PUTDWORK+1
DP0325   DS    0H
         LTR   R5,R5
         JNH   DP0330
         BCTR  R7,0                Decrement for EX
         EX    R7,PUTDMVC
         AHI   R7,1                Restore length
         AR    R3,R7               Move pointer
         SR    R5,R7               Adjust remaining length
*
DP0330   DS    0H
         LA    R2,2(R2)
         AHI   R4,-2
         J     DP0305
*
DP0340   DS    0H    Non numeric month
         L     R1,60(R13)   Month from Gdate
         BCTR  R1,0         Make 0-11
         MHI   R1,3
         LA    R8,DP03MON
         AR    R8,R1        R1->Month name
         LA    R7,3
         J     DP0325
*
DP0345   DS    0H
         L     R1,60(R13)   Month from Gdate
         BCTR  R1,0         Make 0-11
         MHI   R1,10
         LA    R8,DP03LMN
         AR    R8,R1        R1->Month length
         IC    R7,0(R8)
         LA    R8,1(R8)     R8->Month
         LHI   R15,15       mask
         NR    R7,R15       just the length left
         J     DP0325
*
DP0350   DS    0H
         ST    R5,PUTDRTRN        Return unused bytes
         MVC   60(4,R13),PUTDSTR
         MVC   68(2,R13),PUTDSTRL
         LA    R14,PUTDBULD
         ST    R14,64(R13)
         LHI   R14,48
         SR    R14,R5
         STH   R14,70(R13)
         L     R15,PUTDSCPY       DMNSCPY
         BASR  R14,R15
*
DP0395   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    BTWNLOCL
**************************
BTWNLOCL DSECT
BTWNREGS DS    15F            SAVED REGISTERS
BTWNFILR DS    F
BTWNDTE1 DS    D              DATE 1
BTWNDTE2 DS    D              DATE 2
BTWNINDX DS    F              INDEX VALUE
*
BTWNSV14 DS    F
BTWNSF0  DS    D
BTWNSF2  DS    D
BTWNSF4  DS    D
BTWNDXA1 DS    F              INDEX 1 (Year / Seconds)
BTWNDXA2 DS    F
BTWNDXB1 DS    F                    2 (Month / Milliseconds)
BTWNDXB2 DS    F
BTWNDXC1 DS    F                    3 (Days)
BTWNDXC2 DS    F
         DS    0D
BTWNLGTH EQU   *-BTWNLOCL
*
         ORG   BTWNFILR
BTWNRTRN DS    F              RETURN VALUE
**************************
*    DMNBTWNX
**************************
DMNBTWNX CSECT
DMNBTWNX AMODE ANY
DMNBTWNX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         LA    R13,BTWNLGTH(R13)
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,BTWN0100
BTWN000  EQU   *
BTWNGDAT DC    A(DMNGDATX)
BTWNLONG DC    A(DMNLONG)
BTWNMINH DC    F'60'
BTWNMIND DC    F'1440'
BTWNMINW DC    F'10080'
*
         USING BTWN000,R11
         USING BTWNLOCL,R12
BTWN0100 DS    0H
         STD   F0,BTWNSF0
         STD   F2,BTWNSF2
         STD   F4,BTWNSF4
*  LOAD DATE #1
         LD    F0,BTWNDTE1          F0 = Date 1
         OI    60(R13),X'80'        Make nonzero
         STD   F0,64(R13)
         L     R15,BTWNLONG         DMNLONG
         BASR  R14,R15
         L     R2,72(R13)           R2 = Date 1
*  LOAD DATE #2
         LD    F2,BTWNDTE2          F2 = Date 2
         OI    60(R13),X'80'        Make nonzero
         STD   F2,64(R13)
         L     R15,BTWNLONG         DMNLONG
         BASR  R14,R15
         L     R3,72(R13)           R3 = Date 2
*
*
*  LOWEST DATE IN F0
BTWN0150 DS    0H
         CDBR  F0,F2
         JNH   BTWN0155
         LTDBR F4,F0
         LTDBR F0,F2
         LTDBR F2,F4
         LR    R4,R2
         LR    R2,R3
         LR    R3,R4
BTWN0155 DS    0H
         L     R4,BTWNINDX        R4 = Index (Part code)
         XR    R5,R5              RETURN ZERO ON ERROR
         CHI   R4,0               INDEX >= 0
         JL    BTWN0900
         CHI   R4,7               INDEX <= 7
         JH    BTWN0900
         LR    R15,R4
         SLL   R15,2
         BRAS  R14,BTWN0199
         J     BTWN0200           Years
         J     BTWN0300           Months
         J     BTWN0400           Days
         J     BTWN0500           Hours
         J     BTWN0600           Minutes
         J     BTWN0700           Weeks
         J     BTWN0800           Seconds
         J     BTWN0850           Milliseconds
BTWN0199 B     0(R15,R14)
*
*   YEARS BETWEEN
BTWN0200 DS    0H
         XR    R7,R7
         BRAS  R14,BTWNGDTE
         L     R5,BTWNDXA2
         S     R5,BTWNDXA1
         CLC   BTWNDXB2,BTWNDXB1
         JL    BTWN0220
         JNE   BTWN0900
         CLC   BTWNDXC2,BTWNDXC1
         JNL   BTWN0900
*
BTWN0220 DS    0H
         BCTR  R5,0
         J     BTWN0900
*
*   MONTHS BETWEEN
BTWN0300 DS    0H
         XR    R7,R7
         BRAS  R14,BTWNGDTE
         L     R5,BTWNDXA2
         S     R5,BTWNDXA1
         MHI   R5,12
         A     R5,BTWNDXB2
         S     R5,BTWNDXB1
         CLC   BTWNDXC2,BTWNDXC1
         JNL   BTWN0900
         BCTR  R5,0
         J     BTWN0900
*
*   DAYS BETWEEN
BTWN0400 DS    0H
         LR    R5,R3
         SR    R5,R2
         XR    R4,R4
         D     R4,BTWNMIND
         J     BTWN0900
*
*   HOURS BETWEEN
BTWN0500 DS    0H
         LR    R5,R3
         SR    R5,R2
         XR    R4,R4
         D     R4,BTWNMINH
         J     BTWN0900
*
*   MINUTES BETWEEN
BTWN0600 DS    0H
         LR    R5,R3
         SR    R5,R2
         J     BTWN0900
*
*   WEEKS BETWEEN
BTWN0700 DS    0H
         LR    R5,R3
         SR    R5,R2
         XR    R4,R4
         D     R4,BTWNMINW
         J     BTWN0900
*
*   SECONDS BETWEEN
BTWN0800 DS    0H
         LHI   R7,6
         BRAS  R14,BTWNGDTE         Get seconds, milliseconds
         LR    R5,R3                Calculate minutes
         SR    R5,R2
         MHI   R5,60                Convert to seconds
         A     R5,BTWNDXA2          Add difference in seconds
         S     R5,BTWNDXA1
         CLC   BTWNDXB2,BTWNDXB1
         JNL   BTWN0900
         BCTR  R5,0                 Decrement if not full second
         J     BTWN0900
*
*   MILLISECONDS BETWEEN
BTWN0850 DS    0H
         LHI   R7,6
         BRAS  R14,BTWNGDTE         Get seconds, milliseconds
         LR    R5,R3                Calculate minutes
         SR    R5,R2
         MHI   R5,1000              Milliseconds in seconds
         MHI   R5,60                Seconds in minutes
         L     R6,BTWNDXA2          Get elapsed seconds
         S     R6,BTWNDXA1
         MHI   R6,1000              Convert seconds to milliseconds
         AR    R5,R6                Add to result
         L     R6,BTWNDXB2          Get elapsed milliseconds
         S     R6,BTWNDXB1
         AR    R5,R6
         J     BTWN0900
*
*   CALCULATE GDATES
BTWNGDTE DS    0H
         ST    R14,BTWNSV14
         LA    R6,BTWNDXA1
*
BTWNGDT1 DS    0H
         CHI   R4,1                 For index 0 and 1
         JH    BTWNGDT2
         CHI   R7,2                 ...do years, months, days
         JH    BTWNGDT9
         J     BTWNGDT3
*
BTWNGDT2 DS    0H
         CHI   R7,7                 For others (6 & 7)
         JH    BTWNGDT9             ...do seconds, milliseconds
*
BTWNGDT3 DS    0H
         ST    R7,60(R13)
         STD   F0,64(R13)
         L     R15,BTWNGDAT         DMNGDATX
         BASR  R14,R15
         MVC   0(4,R6),60(R13)
*
         ST    R7,60(R13)
         STD   F2,64(R13)
         L     R15,BTWNGDAT         DMNGDATX
         BASR  R14,R15
         MVC   4(4,R6),60(R13)
*
         LA    R7,1(R7)
         LA    R6,8(R6)
         J     BTWNGDT1
*
BTWNGDT9 DS    0H
         L     R14,BTWNSV14
         BR    R14
*
*   RETURN
BTWN0900 DS    0H
         ST    R5,BTWNRTRN          RETURN VALUE
         LD    F0,BTWNSF0
         LD    F2,BTWNSF2
         LD    F4,BTWNSF4
         LM    R0,R14,BTWNREGS
         BR    R14
**************************
*    DADDLOCL
**************************
DADDLOCL DSECT
DADDREGS DS    15F            SAVED REGISTERS
DADDINDX DS    F              INDEX VALUE
DADDDTIN DS    D              DATE IN
DADDVALU DS    F              VALUE
*
DADDYEAR DS    F
DADDMNTH DS    F
DADDDAY  DS    F
DADDHOUR DS    F
DADDMIN  DS    F
DADDDOW  DS    F
DADDSEC  DS    F
DADDMSEC DS    F
*
         DS    0D
DADDLGTH EQU   *-DADDLOCL
*
         ORG   DADDDTIN
DADDRTRN DS    D              RETURN DATE
**************************
*    DMNDADDX
**************************
DMNDADDX CSECT
DMNDADDX AMODE ANY
DMNDADDX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         LA    R13,DADDLGTH(R13)
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DADD0100
DADD000  EQU   *
DADDGDAT DC    A(DMNGDATX)
DADDJDAT DC    A(DMNJDATX)
DADDEOM  DC    H'0'
DADDEOM1 DC    H'31'
DADDEOM2 DC    H'28'
DADDEOM3 DC    H'31'
DADDEOM4 DC    H'30'
DADDEOM5 DC    H'31'
DADDEOM6 DC    H'30'
DADDEOM7 DC    H'31'
DADDEOM8 DC    H'31'
DADDEOM9 DC    H'30'
DADDEOMA DC    H'31'
DADDEOMB DC    H'30'
DADDEOMC DC    H'31'
*
         USING DADD000,R11
         USING DADDLOCL,R12
DADD0100 DS    0H
         LHI   R14,8              Get all date components
         ST    R14,60(R13)
         MVC   64(8,R13),DADDDTIN
         L     R15,DADDGDAT       DMNGDATX
         BASR  R14,R15
         MVC   DADDYEAR(32),60(R13)
*
         L     R2,DADDINDX
         CHI   R2,5               Special processing
         JE    DADD0500           ...for weeks
         CHI   R2,1
         JE    DADD0600           ...and for months
         CHI   R2,0               INDEX >= 0
         JL    DADD0800
         CHI   R2,7               INDEX <= 7
         JH    DADD0800
         SLL   R2,2
         LA    R3,DADDYEAR
         AR    R3,R2              R3 -> Date component
         L     R4,DADDVALU
         A     R4,0(R3)
         ST    R4,0(R3)
         J     DADD0900
*
*   ADD WEEKS
DADD0500 DS    0H
         L     R5,DADDVALU
         MHI   R5,7
         A     R5,DADDDAY
         ST    R5,DADDDAY
         J     DADD0900
*
*   ADD MONTHS
DADD0600 DS    0H
         L     R5,DADDVALU
         A     R5,DADDMNTH
         L     R6,DADDYEAR
         L     R7,DADDDAY
DADD0610 DS    0H                 EOM Processing
         CHI   R5,1
         JL    DADD0615
         CHI   R5,12
         JNH   DADD0620
         AHI   R5,-12             Normalize month > 12
         AHI   R6,1
         J     DADD0610
DADD0615 DS    0H                 ...month < 1
         AHI   R5,12
         AHI   R6,-1
         J     DADD0610
DADD0620 DS    0H
         ST    R5,DADDMNTH
         ST    R6,DADDYEAR
*
         LR    R2,R5
         SLL   R2,1
         LA    R3,DADDEOM
         AR    R2,R3
         LH    R4,0(R2)           R4 = EOM
         CHI   R5,2               Are we dealing with February?
         JNE   DADD0630
*                                 Leap year?
         XR    R8,R8
         LR    R9,R6
         LHI   R15,4
         DR    R8,R15
         CHI   R8,0
         JNE   DADD0630           ...no, not divisible by 4
         LR    R9,R6
         LHI   R15,100
         DR    R8,R15
         CHI   R8,0
         JNE   DADD0625           ...yes, not divisible by 100
         LR    R9,R6
         LHI   R15,400
         DR    R8,R15
         CHI   R8,0
         JE    DADD0630           ...yes, divisible by 400
DADD0625 DS    0H
         AHI   R4,1
*
DADD0630 DS    0H
         C     R4,DADDDAY
         JH    DADD0900
         ST    R4,DADDDAY
         J     DADD0900
*
DADD0800 DS    0H
         XC    DADDRTRN,DADDRTRN
         J     DADD0950
*
*   CALCULATE RETURN VALUE AND RETURN
DADD0900 DS    0H
         MVC   60(20,R13),DADDYEAR
         MVC   80(8,R13),DADDSEC
         L     R15,DADDJDAT         DMNJDATX
         BASR  R14,R15
         MVC   DADDRTRN,64(R13)     RETURN VALUE
*
DADD0950 DS    0H
         LM    R0,R14,DADDREGS
         BR    R14
**************************
*    TIMELOCL
**************************
TIMELOCL DSECT
TIMEREGS DS    15F            SAVED REGISTERS
TIMERTRN DS    CL16           RETURN VALUE
         DS    0D
TIMELGTH EQU   *-TIMELOCL
**************************
*    DMNTIME
**************************
DMNTIME  CSECT
DMNTIME  AMODE ANY
DMNTIME  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         LA    R13,TIMELGTH(R13)
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,TIME0100
TIME000  EQU   *
         USING TIME000,R11
         USING TIMELOCL,R12
TIME0100 DS    0H
         TIME  DEC,TIMERTRN,LINKAGE=SYSTEM,DATETYPE=YYYYMMDD
TIME0900 DS    0H
         LM    R0,R14,TIMEREGS
         BR    R14
**************************
*    EADDLOCL
**************************
EADDLOCL DSECT
EADDREGS DS    15F          SAVED REGISTERS
EADDLIST DS    F            ADDR OF LIST
EADDNAME DS    F            ADDR OF NAME
EADDNEXT DS    F            ADDR OF NEXT ELEMENT / 0
EADDNLEN DS    H            NAME LENGTH
         DS    0D
EADDLGTH EQU   *-EADDLOCL
*
         ORG   EADDLIST
EADDRTRN DS    F
**************************
*    DMNEADD
**************************
DMNEADD  CSECT
DMNEADD  AMODE ANY
DMNEADD  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,EADDLGTH(R13)    END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,EADD100
EADD000  EQU   *
DMNENEW1 DC    A(DMNENEW)
DMNECHN1 DC    A(DMNECHN)
*
         USING EADD000,R11
         USING EADDLOCL,R12
EADD100  DS    0H
         XR    R3,R3            Use R3 for LastError
* ENSURE THAT NAME IS NOT EMPTY STRING
         LH    R2,EADDNLEN
         LTR   R2,R2
         JNZ   EADD150
         L     R2,EADDNAME
         LH    R2,4(R2)
         LTR   R2,R2
         JNZ   EADD150
         LHI   R3,4             LastError = KeERR_EMPTYSTR
         XC    EADDRTRN,EADDRTRN
         J     EADDDONE
*
EADD150  DS    0H    ENSURE USING CORRECT LIST
         L     R2,EADDNEXT     R2->NEXT CODE
         LTR   R2,R2
         JZ    EADD200         NONE GIVEN
         MVC   EADDLIST,16(R2) USE ITS LIST
EADD200  MVC   60(4,R13),EADDNAME
         MVC   64(2,R13),EADDNLEN
         MVC   68(4,R13),EADDLIST
         L     R15,DMNENEW1
         BASR  R14,R15
*  NEWLY CREATED ELEMENT ADDRESS NOW AT 60(R13)
         MVC   64(4,R13),EADDNEXT
         MVC   68(4,R13),EADDLIST
         L     R15,DMNECHN1
         BASR  R14,R15
*
         MVC   EADDRTRN,60(R13)    ADDRESS OF NEW ELEMENT
         L     R15,64(R10)
         MVC   0(4,R15),60(R13)     CCP
*
EADDDONE DS    0H
         L     R15,64(R10)
         ST    R3,16(R15)          Store LastError
         LM    R0,R14,EADDREGS
         BR    R14
**************************
*    ENEWLOCL
**************************
ENEWLOCL DSECT
ENEWREGS DS    15F          SAVED REGISTERS
ENEWNAME DS    F            ADDR OF NAME / SCB
ENEWNLEN DS    H            NAME LENGTH / 0
ENEWLIST DS    F            ADDR OF LIST
*
ENEWSCB  DS    3F           SCB FOR NAME
         DS    0D
ENEWLGTH EQU   *-ENEWLOCL
*
         ORG   ENEWNAME
ENEWRTRN DS    F            RETURN (ELEMENT ADDR)
**************************
*    DMNENEW
**************************
DMNENEW  CSECT
DMNENEW  AMODE ANY
DMNENEW  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ENEWLGTH(R13)   END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ENEW100
ENEW000  EQU   *
DMNALC2  DC    A(DMNALC)
DMNSCPY2 DC    A(DMNSCPY)
*
         USING ENEW000,R11
         USING ENEWLOCL,R12
ENEW100  DS    0H
         L     R2,ENEWLIST        R2 -> LIST ADDR
         L     R3,12(R2)          R3 -> POOL ADDR
         LHI   R1,24        SPACE FOR ELEMENT
         ST    R1,60(R13)
         ST    R3,64(R13)
         L     R15,DMNALC2
         BASR  R14,R15
         L     R4,60(R13)         R4 -> ELEMENT
         XC    0(24,R4),0(R4)
*
         LA    R1,ENEWSCB         Temp SCB
         XC    0(8,R1),0(R1)      No string yet
         ST    R3,8(R1)           POOL
         ST    R1,60(R13)         SCB IS TARGET
         MVC   64(4,R13),ENEWNAME
         XC    68(2,R13),68(R13)
         LH    R1,ENEWNLEN
         STH   R1,70(R13)
         L     R15,DMNSCPY2
         BASR  R14,R15
*
         MVC   0(8,R4),ENEWSCB    STORE NAME INFO IN ELEMENT
         ST    R2,16(R4)          STORE LIST ADDR IN ELEMENT
*
         ST    R4,ENEWRTRN
         LM    R0,R14,ENEWREGS
         BR    R14
**************************
*    ECHNLOCL
**************************
ECHNLOCL DSECT
ECHNREGS DS    15F
ECHNELEM DS    F
ECHNNEXT DS    F   IF 0 then put at end
ECHNLIST DS    F
         DS    0D
ECHNLGTH EQU   *-ECHNLOCL
**************************
*    DMNECHN
**************************
DMNECHN  CSECT
DMNECHN  AMODE ANY
DMNECHN  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ECHNLGTH(R13)  END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         USING ECHNLOCL,R12
*  R2 -> ELEMENT : R3 -> NEXT ELEMENT : R4 -> LIST
         LM    R2,R4,ECHNELEM
         ST    R4,16(R2)
*
         LM    R5,R6,0(R4)        1st, last elements
         LTR   R5,R5              IF FIRST IS BLANK
         JNZ   ECHN0100           ...THIS IS ONLY ELEMENT
         ST    R2,0(R4)
         ST    R2,4(R4)
         XC    8(8,R2),8(R2)
         J     ECHN0900
*
ECHN0100 DS    0H
         LTR   R3,R3              IF NEXT IS ZERO
         JNZ   ECHN0200           ...PUT AT END OF CHAIN
         XC    8(4,R2),8(R2)      Pointer forward null
         ST    R6,12(R2)          Element points back to prev end
         ST    R2,8(R6)           Old end points forward to new one
         ST    R2,4(R4)           New last
         J     ECHN0900
*
ECHN0200 DS    0H
         L     R7,12(R3)          R7 before, R3 after
         ST    R3,8(R2)           Forward to identified
         ST    R7,12(R2)          Back to previous
         ST    R2,12(R3)          Identified points back
         LTR   R7,R7
         JNZ   ECHN0300           Element is new first
         ST    R2,0(R4)           New first
         J     ECHN0900
*
ECHN0300 ST    R2,8(R7)           Previous to new
*
ECHN0900 DS    0H
         L     R1,8(R4)           INCREMENT COUNT
         LA    R1,1(R1)
         ST    R1,8(R4)
*
         LM    R0,R14,ECHNREGS
         BR    R14
**************************
*    ERALOCL
**************************
ERALOCL  DSECT
ERAREGS  DS    15F             SAVED REGISTERS
ERALIST  DS    F               LIST
         DS    0D
ERALGTH  EQU   *-ERALOCL
**************************
*    DMNERA
**************************
DMNERA   CSECT
DMNERA   AMODE ANY
DMNERA   RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ERALGTH(R13) END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ERA0100
ERA000   EQU   *
DMNARA4  DC    A(DMNARA)
DMNERLS4 DC    A(DMNERLS)
*
         USING ERA000,R11
         USING ERALOCL,R12
ERA0100  DS    0H
         L     R2,ERALIST         LIST ADDR
         L     R3,0(R2)           FIRST ELEMENT
ERA0200  LTR   R3,R3
         JZ    ERA0900
         L     R5,8(R3)           Pointer to next one
*
         L     R15,20(R3)         Any attributes?
         LTR   R15,R15
         JZ    ERA0300
         ST    R3,60(R13)         REMOVE ATTRIBUTES
         L     R15,DMNARA4
         BASR  R14,R15
*
ERA0300  ST    R3,60(R13)
         L     R15,DMNERLS4       FREE STORAGE
         BASR  R14,R15
         LR    R3,R5
         J     ERA0200
*
ERA0900  DS    0H
         XC    0(12,R2),0(R2)
         LM    R0,R14,ERAREGS
         BR    R14
**************************
*    ERLSLOCL
**************************
ERLSLOCL DSECT
ERLSREGS DS    15F          SAVED REGISTIERS
ERLSELEM DS    F            ELEMENT ADDRESS
         DS    0D
ERLSLGTH EQU   *-ERLSLOCL
**************************
*    DMNERLS
**************************
DMNERLS  CSECT
DMNERLS  AMODE ANY
DMNERLS  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ERLSLGTH(R13)   END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ERLS0100
ERLS000  EQU   *
DMNRLSE5 DC    A(DMNRLSE)
*
         USING ERLSLOCL,R12
         USING ERLS000,R11
ERLS0100 DS    0H
         L     R2,ERLSELEM          R2 -> ELEMENT
         LTR   R2,R2
         JZ    ERLS0900
         L     R4,16(R2)            R4 -> LIST
         L     R3,12(R4)            R3 -> POOL
*
         L     R2,ERLSELEM
         MVC   60(4,R13),0(R2)      ADDRESS OF NAME
         LH    R5,6(R2)             SPACE ALLOCATED
         ST    R5,64(R13)
         ST    R3,68(R13)           POOL
         L     R15,DMNRLSE5
         BASR  R14,R15
*
         ST    R2,60(R13)          ELEMENT
         LHI   R5,24               SPACE OCCUPIED
         ST    R5,64(R13)
         ST    R3,68(R13)          POOL
         L     R15,DMNRLSE5        DMNRLSE
         BASR  R14,R15
*
ERLS0900 DS    0H
         LM    R0,R14,ERLSREGS
         BR    R14
**************************
*    ECPYLOCL
**************************
ECPYLOCL DSECT
ECPYREGS DS    15F          SAVED REGISTERS
ECPYELEM DS    F            ELEMENT TO COPY
ECPYLIST DS    F            TARGET LIST
ECPYNEXT DS    F            'NEXT' ELEMENT IN TARGET LIST
ECPYALST DS    F            LIST OF ATTRIBUTES TO COPY
ECPYATTR DS    F            ->COPY OF ATTRIBUTES
         DS    0D
ECPYLGTH EQU   *-ECPYLOCL
*
         ORG   ECPYELEM
ECPYRTRN DS    F
**************************
*    DMNECPY
**************************
DMNECPY  CSECT
DMNECPY  AMODE ANY
DMNECPY  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13       FRAME
         LA    R13,ECPYLGTH(R13)    END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,ECPY0100
ECPY000  EQU   *
DMNEADD7 DC    A(DMNEADD)
DMNATCP7 DC    A(DMNATCP)
         USING ECPY000,R11
         USING ECPYLOCL,R12
*
* COPY ATTRIBUTES FIRST IN CASE TARGET LIST IS AN ATTRIBUTE
ECPY0100 DS    0H
         XC    ECPYATTR,ECPYATTR   NO ATTRIBUTES
         L     R7,ECPYLIST         R7 -> Target List
         L     R2,ECPYELEM         R2 -> SOURCE ELEMENT
         L     R3,20(R2)           R3 -> ATTRIBUTE CHAIN
         LTR   R3,R3
         JZ    ECPY0700            NO ATTRIBUTES
*
ECPY0200 DS    0H                  FIND START OF CHAIN
         L     R4,4(R3)
         LTR   R4,R4
         JZ    ECPY0300
         LR    R3,R4
         J     ECPY0200
*
ECPY0300 DS    0H                  R3->ATTRIBUTE MAYBE TO COPY
         L     R4,ECPYALST         ATTRIBUTE LIST
         LTR   R4,R4               TAKE ALL
         JZ    ECPY0340
ECPY0310 LH    R5,0(R4)            ATTRIBUTE NUMBER ALLOWED
         LTR   R5,R5
         JZ    ECPY0350            NONE ALLOWED
         CH    R5,10(R3)           ALLOWED ATTRIBUTE?
         JE    ECPY0340            YES, COPY IT
         LA    R4,2(R4)            NEXT ATTRIBUTE ON LIST
         J     ECPY0310
*
ECPY0340 ST    R3,60(R13)          ATTR TO COPY
         MVC   64(4,R13),12(R7)    POOL FROM TARGET LIST
         LA    R14,ECPYATTR
         ST    R14,68(R13)         POINTER TO ATTRIBUTES
         L     R15,DMNATCP7
         BASR  R14,R15
ECPY0350 L     R3,0(R3)            NEXT ATTRIBUTE
         LTR   R3,R3
         JNZ   ECPY0300
*
* Attributes copied, now copy the element
ECPY0700 DS    0H
         ST    R7,60(R13)          TARGET LIST
         MVC   64(4,R13),0(R2)     NAME
         MVC   68(4,R13),ECPYNEXT  NEXT ELEMENT
         MVC   72(2,R13),4(R2)     NAME LENGTH
         L     R15,DMNEADD7
         BASR  R14,R15
         L     R9,60(R13)          R9 -> NEW ELEMENT
         MVC   20(4,R9),ECPYATTR   LINK COPIED ATTRIBUTES
         ST    R9,ECPYRTRN
         LM    R0,R14,ECPYREGS
         BR    R14
**************************
*    CLSTLOCL
**************************
CLSTLOCL DSECT
CLSTREGS DS    15F         SAVED REGISTERS
CLSTTRGT DS    F           TARGET LIST
CLSTSRCE DS    F           SOURCE LIST
CLSTHOLD DS    4F          Temporary list
*
         DS    0D
CLSTLGTH EQU   *-CLSTLOCL
**************************
*    DMNCLST
**************************
DMNCLST  CSECT
DMNCLST  AMODE ANY
DMNCLST  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,CLSTLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,CLST0100
CLST000  EQU   *
DMNECPY3 DC    A(DMNECPY)
DMNERA3  DC    A(DMNERA)
         USING CLST000,R11
         USING CLSTLOCL,R12
*
CLST0100 L     R2,CLSTTRGT
         L     R4,CLSTSRCE
         CR    R2,R4
         JZ    CLSTDONE
         ST    R2,60(R13)       GET RID OF PREVIOUS
         L     R15,DMNERA3
         BASR  R14,R15
*
* Build the new list in a temporary in case the target list
*  is in an attribute of the list being copied
*
         LA    R8,CLSTHOLD
         MVC   0(16,8),0(R2)
         L     R7,0(R4)           R7 -> ELEMENT
CLSTLOOP DS    0H
         LTR   R7,R7
         JZ    CLSTKEEP
         ST    R7,60(R13)
         ST    R8,64(R13)
         XC    68(8,R13),68(R13) COPY ALL ATTRIBUTES
         L     R15,DMNECPY3
         BASR  R14,R15
         L     R7,8(R7)           NEXT ELEMENT
         J     CLSTLOOP
*
CLSTKEEP MVC   0(16,R2),0(R8)
         L     R6,0(R2)           FIX POINTER UP
CLSTKLUP LTR   R6,R6
         JZ    CLSTDONE
         ST    R2,16(R6)
         L     R6,8(R6)
         J     CLSTKLUP
*
CLSTDONE LM    R0,R14,CLSTREGS
         BR    R14
**************************
*    FORMLOCL
**************************
FORMLOCL DSECT
FORMREGS DS    15F          Saved registers
FORMSRST DS    F            -> Result String
FORMSFMT DS    F            -> Format String
FORMSLEN DS    H            Format Length / 0
FORMUSED DS    H            Bytes used (starting at 64)
FORMARGS DS    0F           Pointers to Arguments
         DS    0D
FORMLGTH EQU   *-FORMLOCL
**************************
*    FORMLOCV
**************************
FORMLOCV DSECT
FORMSVF0 DS    D
FORMFLGS DS    F            Flags
FORMWID  DS    F            Width
FORMPREC DS    F            Precision
FORMSCB  DS    3F           Intermediate SCB
FORMPOOL DS    2F           Pool
FORMR14  DS    F            R14 Save area
FORMR14A DS    F
FORMGLBF DS    H            Global flags: 80-Extended date/time
FORMWORK DS    0F           Work area
         DS    0D
FORMLOLN EQU   *-FORMLOCV
**************************
*    DMNFORM
**************************
DMNFORM  CSECT
DMNFORM  AMODE ANY
DMNFORM  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         BRAS  R11,FORM100
FORM000  EQU   *
FORMGETI DC    A(DMNGETI)
FORMI2S  DC    A(DMNI2S)
FORMF2S  DC    A(DMNF2S)
FORMSINS DC    A(DMNSINS)
FORMSCPY DC    A(DMNSCPY)
FORMOSTR DC    A(DMNOSTR)
FORMFREE DC    A(DMNFREE)
FORMBLNK DC    A(DMNBLNK)
FORMPUTD DC    A(DMNPUTDX)
FORMATNM DC    A(DMNATNM)
FORMDATL DC    H'8'
FORMTIML DC    H'14'
**FORMTIMX DC    H'20'       NYI due to backward compatibility
FORMMVC  MVC   1(0,R15),0(R15)
FORMTRNS DC    CL16'0123456789ABCDEF'   TRANSLATE TABLE
FORMDATF DC    C'%d %b %Y'
         DC    C' %H:%M'
         DC    C':%C.%L'
FORMDAF1 DC    C'%d %B %Y'
         DC    C' %H:%M'
**         DC    C':%C.%L'   NYI due to backward compatibility
FORMCOMA DC    C','
FORMDOLR DC    C'$'
FORMUSD  DC    CL4'USD '
FORMDEC  DC    C'.'
*
         USING FORM000,R11
         USING FORMLOCL,R12
         USING FORMLOCV,R6
* Set up stack
FORM100  DS    0H
         XR    R1,R1
         TM    FORMUSED,X'80'  Extended format?
         JNO   FORM105
         LHI   R1,1            Signal to turn on global flag
         NI    FORMUSED,X'7F'  Turn off API flag
FORM105  DS    0H
         LA    R13,64(R12)     Used bytes starts at offset 64
         AH    R13,FORMUSED
         LR    R6,R13          R6->Local variables
         AHI   R13,FORMLOLN
         L     R15,88(R10)
         BASR  R14,R15
*
         XC    FORMGLBF,FORMGLBF
         LTR   R1,R1
         JZ    FORM107
         OI    FORMGLBF,X'80'
FORM107  DS    0H
         STD   F0,FORMSVF0     Save F0
         LA    R2,FORMWORK     R2 -> Variable work area
         L     R3,FORMSFMT     R3 -> FORMAT STRING
         LA    R4,FORMARGS     R4 -> ARGUMENT LIST
         LH    R5,FORMSLEN     R5 -> FORMAT STRING LENGTH
*
         XC    FORMSCB(12),FORMSCB     CLEAR SCB
         XC    FORMPOOL(8),FORMPOOL    CLEAR POOL
         LA    R7,FORMPOOL             SET ADDR OF POOL IN SCB
         ST    R7,FORMSCB+8
*
         LTR   R5,R5
         JNZ   FORM110
*
         LR    R1,R3                   FORMAT IS IN SCB
         L     R3,0(R1)                SCB FORMAT POINTER
         LH    R5,4(R1)                SCB LENGTH
         LTR   R5,R5
         JNH   FORM900
*
FORM110  DS    0H
         CLI   0(R3),C'%'
         JNE   FORM800
*
         XC    FORMFLGS,FORMFLGS       CLEAR FLAGS
         XR    R7,R7
         AHI   R7,-1
         ST    R7,FORMWID              SET WIDTH & PRECISION TO -1
         ST    R7,FORMPREC
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
* CHECK FOR FLAGS
FORM120  DS    0H
         CLI   0(R3),C'-'        LEFT JUSTIFY
         JNE   FORM122
         OI    FORMFLGS,X'80'
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM120           GO CHECK FOR ANOTHER FLAG
FORM122  DS    0H
         CLI   0(R3),C'+'        SIGN ON NUMBERS
         JNE   FORM124
         OI    FORMFLGS,X'40'
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM120           GO CHECK FOR ANOTHER FLAG
FORM124  DS    0H
         CLI   0(R3),C' '        BLANK PADDING
         JNE   FORM126
         OI    FORMFLGS,X'20'
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM120           GO CHECK FOR ANOTHER FLAG
FORM126  DS    0H
         CLI   0(R3),C'#'        THIS FLAG IS A VALID CHARACTER
         JNE   FORM130             BUT HAS NO SIGNIFICANCE IN THIS
         LA    R3,1(R3)            APPLICATION.  THEREFORE, IT IS
         AHI   R5,-1               NOT SAVED.
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM120           GO CHECK FOR ANOTHER FLAG
* CHECK FOR WIDTH
FORM130  DS    0H
         LR    R7,R3             SAVE BEGINNING OF WIDTH
         CLI   0(R3),C'*'
         JNE   FORM132
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         L     R7,0(R4)
         LA    R4,4(R4)
         ST    R7,FORMWID        SAVE WIDTH FROM ARG LIST
         J     FORM140
*
FORM132  DS    0H
         CLI   0(R3),C'0'
         JL    FORM135
         CLI   0(R3),C'9'
         JH    FORM135
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM132
*
FORM135  DS    0H
         LR    R8,R3
         SR    R8,R7
         JZ    FORM140           NO WIDTH - CHECK PRECISION
*
         CLI   0(R7),C'0'
         JNE   FORM137
         OI    FORMFLGS+1,X'80'
*
FORM137  DS    0H
         BRAS  R14,FORMCK13
         ST    R7,64(R13)
         ST    R8,68(R13)
         L     R15,FORMGETI      DMNGETI
         BASR  R14,R15
         MVC   FORMWID,60(R13)
* CHECK PRECISION
FORM140  DS    0H
         CLI   0(R3),C'.'
         JNE   FORM149           NO PRECISION
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         LR    R7,R3             SAVE BEGINNING OF PRECISION
         CLI   0(R3),C'*'
         JNE   FORM142
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         L     R7,0(R4)
         LA    R4,4(R4)
         ST    R7,FORMPREC       SAVE PRECISION FROM ARG LIST
         J     FORM149
*
FORM142  DS    0H
         CLI   0(R3),C'0'
         JL    FORM145
         CLI   0(R3),C'9'
         JH    FORM145
         LA    R3,1(R3)
         AHI   R5,-1
         JZ    FORM900           INCOMPLETE FORMAT - EXIT
         J     FORM142
*
FORM145  DS    0H
         LR    R8,R3
         SR    R8,R7
         JZ    FORM149           NO PRECISION - Check for 'l'
*
         CLI   0(R7),C'0'
         JNE   FORM147
         OI    FORMFLGS+1,X'40'
*
FORM147  DS    0H
         BRAS  R14,FORMCK13
         ST    R7,64(R13)
         ST    R8,68(R13)
         L     R15,FORMGETI      DMNGETI
         BASR  R14,R15
         MVC   FORMPREC,60(R13)
*
FORM149  DS    0H
         CLI   0(R3),C'l'
         JNE   FORM150
         OI    FORMFLGS,X'10'    Long format (currency/date/time)
         AHI   R3,1
         AHI   R5,-1
* GET TYPE
FORM150  DS    0H
         CLI   0(R3),C'%'        '%' CHARACTER
         JE    FORM800
         CLI   0(R3),C'i'        INTEGER
         JE    FORMINT
         CLI   0(R3),C'f'        FLOATING POINT
         JE    FORMFLT
         CLI   0(R3),C's'        STRING
         JE    FORMSTR
         CLI   0(R3),C'p'        POINTER (HEX DISPLAY)
         JE    FORMPTR
         CLI   0(R3),C'm'        CURRENCY
         JE    FORMCUR
         CLI   0(R3),C'd'        DATE
         JE    FORMDAT
         CLI   0(R3),C't'        TIME
         JE    FORMTIM
         CLI   0(R3),C'c'        CODE
         JE    FORMCOD
         J     FORM900           INVALID FORMAT STRING - EXIT
*
********************
*  FORMAT AN INTEGER
********************
FORMINT  DS    0H
         L     R8,0(R4)          INTEGER VALUE
         LA    R4,4(R4)
         XR    R9,R9
         C     R9,FORMPREC       EXPLICIT PRECISION OF ZERO
         JNE   FORMINT1
         LTR   R8,R8             INTEGER VALUE = 0
         JNZ   FORMINT1
         MVI   0(R2),C' '        MOVE IN SPACE
         LA    R2,1(R2)
         J     FORM810           ALL DONE
*
FORMINT1 DS    0H
         MVI   FORMFLGS+2,C'+'   DEFAULT SIGN
         LTR   R9,R8
         JNL   FORMINT2
         MVI   FORMFLGS+2,C'-'   NEGATIVE NUMBER
         MHI   R9,-1             MAKE POSITIVE
*
FORMINT2 DS    0H
         BRAS  R14,FORMCK13      MAKE SPACE AVAILABLE
         ST    R9,60(R13)
         LA    R7,FORMSCB        SCB
         ST    R7,64(R13)
         XC    70(2,R13),70(R13) LENGTH = 0
         L     R15,FORMI2S       DMNI2S
         BASR  R14,R15
*
         XR    R9,R9             MINIMUM LENGTH
         C     R9,FORMWID        ...WIDTH
         JH    FORMINT3
         L     R9,FORMWID
*
FORMINT3 DS    0H
         C     R9,FORMPREC       ...PRECISION
         JH    FORMINT4
         L     R9,FORMPREC
*
FORMINT4 DS    0H
         L     R8,FORMPREC       NUMBER OF LEADING ZEROS (PRECISION)
         TM    FORMFLGS+1,X'80'  LEADING ZERO ON WIDTH ?
         JNO   FORMINT5
         C     R8,FORMWID        USE WIDTH IF GREATER
         JH    FORMINT5
         L     R8,FORMWID
*
FORMINT5 DS    0H
         SH    R8,FORMSCB+4      NUMBER OF LEADING ZEROS
         JP    FORMINT6
         XR    R8,R8             MAKE ZERO ON NEGATIVE RESULT
*
FORMINT6 DS    0H
         SR    R9,R8             R9 IS MINIMUM WIDTH
         SH    R9,FORMSCB+4      ...NOW IT'S SPACES NEEDED
         JP    FORMINT7
         XR    R9,R9             ZERO ON NEGATIVE RESULT
*
FORMINT7 DS    0H
         J     FORMCMN           GO TO COMMON NUMBER CODE
*
*********************************
*  FORMAT A FLOATING POINT NUMBER
*********************************
FORMFLT  DS    0H
         BRAS  R14,FORMCK13      MAKE SPACE AVAILABLE
         L     R1,0(R4)
         LA    R4,4(R4)
         MVC   0(8,R13),0(R1)
         LA    R7,0(R13)
         MVI   FORMFLGS+2,C'+'   DEFAULT SIGN
         TM    0(R7),X'80'       IF NEGATIVE
         JNO   FORMFLT1
         MVI   FORMFLGS+2,C'-'   ...SAVE SIGN
         NI    0(R7),X'7F'       ...AND FORCE POSITIVE
*
FORMFLT1 DS    0H
         LA    R14,0(R13)
         AHI   R13,8
         ST    R14,60(R13)       Pointer to float
         LA    R7,FORMSCB        ADDRESS OF SCB
         ST    R7,64(R13)
         L     R7,FORMPREC       PRECISION / -1
         STH   R7,68(R13)
         XC    70(2,R13),70(R13) LENGTH = 0
         L     R15,FORMF2S       DMNF2S
         BASR  R14,R15
         AHI   R13,-8
*
         L     R9,FORMWID        MINIMUM LENGTH
         LTR   R9,R9
         JH    FORMFLT3
         XR    R9,R9
*
FORMFLT3 DS    0H
         SH    R9,FORMSCB+4      NUMBER OF SPACES NEEDED
         JP    FORMFLT4
         XR    R9,R9             ZERO ON NEGATIVE RESULT
*
FORMFLT4 DS    0H
         XR    R8,R8             START WITH NO LEADING ZEROS
         TM    FORMFLGS+1,X'80'  LEADING ZEROS?
         JNO   FORMFLT5
         TM    FORMFLGS,X'80'    LEFT JUSTIFY?
         JO    FORMFLT5
         LR    R8,R9             ALL LEADING ZEROS
         XR    R9,R9             ...WITH NO SPACES
*
FORMFLT5 DS    0H
         J     FORMCMN           EXECUTE COMMON NUMBER CODE
*
**********************************************
*  CODE COMMON TO INTEGERS AND FLOATING POINTS
**********************************************
FORMCMN  DS    0H
         CLI   0(R3),C'm'        Currency?
         JNE   FORMCMN0          ...Yes - insert commas
         LH    R1,FORMSCB+4      Length
         AHI   R1,-3             ...Minus decimal
*
FORMCMNA DS    0H
         CHI   R1,3
         JNH   FORMCMNB
         AHI   R1,-3
         LR    R15,R13
         AHI   R13,16            Adjust stack
         LA    R14,FORMSCB       SCB
         ST    R14,60(R13)
         ST    R1,64(R13)        Position
         LA    R14,FORMCOMA      Address of comma
         ST    R14,0(R15)        Build inserted SCB in stack space
         LHI   R14,1
         STH   R14,4(R15)
         STH   R14,6(R15)
         ST    R15,68(R13)
         L     R15,FORMSINS      DMNSINS
         BASR  R14,R15
         AHI   R13,-16           Return stack to original position
         J     FORMCMNA
*
FORMCMNB DS    0H
         LR    R15,R13
         AHI   R13,16            Adjust stack
         LA    R14,FORMSCB       SCB
         ST    R14,60(R13)
         XC    64(4,R13),64(R13) Position = 0
         LA    R14,FORMDOLR      Address of $
         LHI   R1,1              Length
         TM    FORMFLGS,X'10'    Long format?
         JNO   FORMCMNC
         LA    R14,FORMUSD       Address of USD
         LHI   R1,4              Length
*
FORMCMNC DS    0H
         ST    R14,0(R15)        Build inserted SCB in stack space
         STH   R1,4(R15)
         STH   R1,6(R15)
         ST    R15,68(R13)
         L     R15,FORMSINS      DMNSINS
         BASR  R14,R15
         AHI   R13,-16           Return stack to original position
*
FORMCMN0 DS    0H
         CLI   FORMFLGS+2,C'-'   OUTPUT SIGN NEEDED?
         JE    FORMCMN1
         TM    FORMFLGS,X'40'    OUTPUT SIGN NEEDED?
         JO    FORMCMN1
         TM    FORMFLGS,X'20'    LEADING SPACE NEEDED?
         JNO   FORMCMN2
*
FORMCMN1 DS    0H
         BCTR  R9,0              ALLOW FOR SPACE
*
FORMCMN2 DS    0H
         TM    FORMFLGS,X'80'    '-' FLAG
         JNO   FORMCMN3
         BRAS  R14,FCMNSN        MOVE SIGN, LEADING ZEROS, NUMBER
         BRAS  R14,FCMNSB        MOVE TRAILING BLANKS
         J     FORM810
*
FORMCMN3 DS    0H
         BRAS  R14,FCMNSB        MOVE LEADING SPACES
         BRAS  R14,FCMNSN        MOVE SIGN, LEADING ZEROS, NUMBER
         J     FORM810
*
* NUMBER SUBROUTINES
*
FCMNSN   DS    0H
         ST    R14,FORMR14
         CLI   FORMFLGS+2,C'-'   SIGN NEEDED?
         JE    FCMNSN1
         TM    FORMFLGS,X'40'
         JO    FCMNSN1
         J     FCMNSN2
*
FCMNSN1  DS    0H
         MVC   0(1,R2),FORMFLGS+2
         LA    R2,1(R2)
         J     FCMNSN3
*
FCMNSN2  DS    0H
         TM    FORMFLGS,X'20'    SPACE NEEDED?
         JNO   FCMNSN3
         MVI   0(R2),C' '
         LA    R2,1(R2)
*
FCMNSN3  DS    0H
         LTR   R8,R8
         JNH   FCMNSN4
         MVI   0(R2),C'0'
         LA    R2,1(R2)
         BCTR  R8,0
         J     FCMNSN3
*
FCMNSN4  DS    0H
         LR    R0,R2             Save R2
         AH    R2,FORMSCB+4      Length increased needed
         BRAS  R14,FORMCK13
         LR    R2,R0             Restore R2
         ST    R2,60(R13)        TARGET
         MVC   68(2,R13),FORMSCB+4  LENGTH
         LA    R1,FORMSCB        SCB CONTAINING NUMBER
         ST    R1,64(R13)
         XC    70(2,R13),70(R13) LENGTH
         L     R15,FORMSCPY      DMNSCPY
         BASR  R14,R15
*
         AH    R2,FORMSCB+4
         L     R14,FORMR14
         BR    R14
*
FCMNSB   DS    0H
         ST    R14,FORMR14
         LTR   R9,R9
         JNH   FCMNSB1
*
         LR    R1,R2
         AR    R2,R9
         BRAS  R14,FORMCK13
         LR    R2,R1
*
         ST    R2,60(R13)        TARGET
         ST    R9,64(R13)        LENGTH
         L     R15,FORMBLNK      DMNBLNK
         BASR  R14,R15
*
         AR    R2,R9
FCMNSB1  DS    0H
         L     R14,FORMR14
         BR    R14
*
******************
*  FORMAT A STRING
******************
FORMSTR  DS    0H
         BRAS  R14,FORMCK13
         MVC   64(4,R13),0(R4)   SOURCE STR
         LH    R1,6(R4)
         STH   R1,70(R13)        ...LENGTH
         LA    R4,8(R4)
         LA    R7,FORMSCB
         ST    R7,60(R13)        TARGET SCB
         XC    68(2,R13),68(R13) ...LENGTH
         L     R15,FORMSCPY      DMNSCPY
         BASR  R14,R15
*
FORMSTR0 DS    0H
         L     R7,FORMPREC       R7 = PRECISION (MAX CHARACTERS)
         LTR   R7,R7
         JL    FORMSTR1          STILL NEGATIVE - IGNORE
         CH    R7,FORMSCB+4      IF PRECISION IS LESS THAN DISPLAY
         JL    FORMSTR1
         STH   R7,FORMSCB+4      ...TRUNCATE DISPLAY
*
FORMSTR1 DS    0H
         LH    R7,FORMSCB+4      R7 = DISPLAY CHARACTERS IN STRING
         C     R7,FORMWID        COMPARE WIDTH
         JH    FORMSTR2
         L     R7,FORMWID
*
FORMSTR2 DS    0H
         SH    R7,FORMSCB+4      R7 = NUMBER OF SPACES
         LTR   R9,R7
         JH    FORMSTR3
         XR    R9,R9
*
FORMSTR3 DS    0H
         TM    FORMFLGS,X'80'    '-' FLAG
         JO    FORMSTR5
*
FORMSTR4 DS    0H
         LR    R0,R2
         BRAS  R14,FCMNSB
         TM    FORMFLGS+1,X'80'  Zero fill?
         JNO   FORMSTR5
         LTR   R14,R9
         JNH   FORMSTR5
         LR    R15,R0
         MVI   0(R15),C'0'
         AHI   R14,-2
         JL    FORMSTR5
         EX    R14,FORMMVC       MVC 1(n,R15),0(R15)
*
FORMSTR5 DS    0H
         LH    R1,FORMSCB+4      Intended length
         LTR   R1,R1
         JNH   FORMSTR6
         LR    R8,R2
         AR    R2,R1
         BRAS  R14,FORMCK13
         LR    R2,R8
*
         ST    R2,60(R13)
         LA    R1,FORMSCB
         ST    R1,64(R13)
         MVC   68(2,R13),FORMSCB+4   TARGET IS STRING
         XC    70(2,R13),70(R13) SOURCE IS SCB
         L     R15,FORMSCPY      DMNSCPY
         BASR  R14,R15
         AH    R2,FORMSCB+4
*
FORMSTR6 TM    FORMFLGS,X'80'    '-' FLAG
         JNO   FORMSTR7
*
         BRAS  R14,FCMNSB
*
FORMSTR7 DS    0H
         J     FORM810
*******************
*  FORMAT A POINTER
*******************
FORMPTR  DS    0H
         L     R7,0(R4)
         MVC   FORMFLGS,0(R7)     FLAGS - NOT NEEDED FOR PTRS
         LA    R4,4(R4)
         LA    R7,28             SHIFT BITS
FORMPTRA DS    0H
         L     R9,FORMFLGS
         SRL   R9,0(R7)
         STC   R9,FORMWID        WIDTH - NOT NEEDED FOR PTRS
         NI    FORMWID,X'0F'     TURN OFF HIGH ORDER NIBBLE
         TR    FORMWID(1),FORMTRNS
         MVC   0(1,R2),FORMWID
         LA    R2,1(R2)
         AHI   R7,-4
         JNM   FORMPTRA
         J     FORM810
******************
*  FORMAT CURRENCY
******************
FORMCUR  DS    0H
         LA    R7,2              FORCE PRECISION = 2
         ST    R7,FORMPREC
         J     FORMFLT           PROCESS AS A FLOAT
**************
*  FORMAT DATE
**************
FORMDAT  DS    0H
         LA    R7,FORMDATF       FORMAT
         LH    R8,FORMDATL       FORMAT LENGTH
         TM    FORMFLGS,X'10'
         JNO   FORMDAT1
         LA    R7,FORMDAF1
*
FORMDAT1 DS    0H
         BRAS  R14,FORMCK13
         ST    R7,72(R13)        FORMAT
         STH   R8,80(R13)        FORMAT LENGTH
         LA    R7,FORMSCB        FORMATTED OUTPUT SCB
         ST    R7,76(R13)
         XC    82(2,R13),82(R13) 0 LENGTH INDICATES SCB
         L     R1,0(R4)          POINT R1 TO INPUT FP
         MVC   64(8,R13),0(R1)   INPUT DATE / TIME VALUE
         TM    FORMGLBF,X'80'    IF ALREADY FP FORMAT
         JO    FORMDAT2          ...CONTINUE
         L     R14,0(R4)         ...ELSE
         CDFBR F0,R14            ...CONVERT IT
         STD   F0,64(R13)
FORMDAT2 DS    0H
         LA    R4,4(R4)          INCREMENT POINTER
         L     R15,FORMPUTD      DMNPUTDX
         BASR  R14,R15
*
         J     FORMSTR0          HANDLE AS A SCB
**************
*  FORMAT TIME
**************
FORMTIM  DS    0H
         LA    R7,FORMDATF       FORMAT
         LH    R8,FORMTIML       FORMAT LENGTH
         TM    FORMFLGS,X'10'
         JNO   FORMDAT1
         LA    R7,FORMDAF1
         J     FORMDAT1          SAME LOGIC AS DATE
****************
*  FORMAT A CODE
****************
FORMCOD  DS    0H
         BRAS  R14,FORMCK13
         MVC   60(4,R13),0(R4)   CODE ADDRESS
         LA    R4,4(R4)          INCREMENT ARGUMENT LIST POINTER
         LHI   R15,4
         ST    R15,64(R13)       4 = CNAME
         LA    R15,FORMSCB
         ST    R15,68(R13)
         L     R15,FORMATNM      DMNATNM
         BASR  R14,R15
*
         L     R1,FORMPREC       Load precision
         LHI   R14,-1            Restore to -1 to avoid
         ST    R14,FORMPREC      ...modification past this routine
         LTR   R1,R1
         JNH   FORMCOD9
         CH    R1,FORMSCB+4
         JNL   FORMCOD9
*
         LR    R15,R13
         AHI   R13,16            Adjust stack
         LA    R14,FORMSCB       SCB
         ST    R14,60(R13)
         ST    R1,64(R13)        Position
         LA    R14,FORMDEC       Address of period
         ST    R14,0(R15)        Build inserted SCB in stack space
         LHI   R14,1
         STH   R14,4(R15)
         STH   R14,6(R15)
         ST    R15,68(R13)
         L     R15,FORMSINS      DMNSINS
         BASR  R14,R15
         AHI   R13,-16           Return stack to original position
*
FORMCOD9 DS    0H
         J     FORMSTR0
************************
*  LOOPING AND END LOGIC
************************
FORM800  DS    0H
         MVC   0(1,R2),0(R3)
         LA    R2,1(R2)
FORM810  DS    0H
         LA    R3,1(R3)
         BRCT  R5,FORM110
*
FORM900  DS    0H
         BRAS  R14,FORMCK13
         MVC   60(4,R13),FORMSRST
         LA    R1,FORMWORK        SET R1 TO WORK AREA
         ST    R1,64(R13)         STRING POINTER
         LR    R7,R2
         SR    R7,R1
         ST    R7,68(R13)         LENGTH
         XC    72(8,R13),72(R13)
         L     R15,FORMOSTR       DMNOSTR
         BASR  R14,R15
*
         LA    R7,FORMPOOL        PCB
         BRAS  R14,FORMCK13
         ST    R7,60(R13)
         L     R15,FORMFREE       DMNFREE
         BASR  R14,R15
*
         LD    F0,FORMSVF0
         LM    R0,R14,FORMREGS
         BR    R14
*
*  SUBROUTINE
*
FORMCK13 DS    0H
         ST    R14,FORMR14A
FORMCKA  DS    0H
         CR    R2,R13
         JL    FORMCKX
         AHI   R13,16
         L     R15,88(R10)
         BASR  R14,R15
         J     FORMCKA
FORMCKX  DS    0H
         L     R14,FORMR14A
         BR    R14
**************************
*    IASSLOCL
**************************
IASSLOCL DSECT
IASSREGS DS    15F         SAVED REGISTERS
IASSCNTL DS    F           CONTROL ARRAY ADDRESS
IASSTRGT DS    F           TARGET DATA ADDRESS
IASSSRCE DS    F           SOURCE DATA ADDRESS
*
         DS    0D
IASSLGTH EQU   *-IASSLOCL
*
         ORG   IASSCNTL
IASSENDT DS    F           END OF TARGET
IASSENDS DS    F           END OF SOURCE
**************************
*    DMNIASS
**************************
DMNIASS  CSECT
DMNIASS  AMODE ANY
DMNIASS  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,IASSLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,IASS0100
IASS000  EQU   *
DMNGETI6 DC    A(DMNGETI)
DMNGETF6 DC    A(DMNGETF)
DMNOSTRV DC    A(DMNOSTR)
DMNRLSE6 DC    A(DMNRLSE)
DMNEADD6 DC    A(DMNEADD)
DMNIASS6 DC    A(DMNIASS)
IASSBLNK MVC   1(0,R2),0(R2)
IASSCOPY MVC   0(0,R2),0(R4)
IASSONE  DC    H'1'
IASSZERO DC    H'0'
*
         USING IASS000,R11
         USING IASSLOCL,R12
IASS0100 DS    0H
         L     R2,IASSTRGT       R2 -> TARGET
         L     R4,IASSSRCE       R4 -> SOURCE
         L     R6,IASSCNTL       R6 -> CONTROL ARRAY
*
IASS0200 DS    0H
         XR    R15,R15
         IC    R15,0(R6)         1ST BYTE IS SELECTION
         XR    R8,R8
         IC    R8,1(R6)          2ND BYTE IN R8
         LA    R6,2(R6)          R6 -> NEXT HALFWORD
         BRAS  R14,IASS0210
         J     IASSDONE          00 - DONE
         J     IASSINTG          04 - INTEGER
         J     IASSFSTR          08 - FIXEDSTRING
         J     IASSSCB           12 - VARIABLE STRING
         J     IASSFLT           16 - FLOAT / CURRENCY / EXTDATE
         J     IASSDATE          20 - DATE
         J     IASSCODE          24 - CODE
         J     IASSIGNR          28 - IGNORE
         J     IASSARRA          32 - SMALL ARRAY
         J     IASSARRB          36 - BIG ARRAY
         J     IASSSTRU          40 - STRUCTURE
         J     IASSIGNT          44 - TAKE TOKEN BUT IGNORE
IASS0210 B     0(R15,R14)
*
IASSINTG DS    0H
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3             AT END OF INPUT?
         JNZ   IASS0300
         XC    60(4,R13),60(R13)
         LA    R4,1(R4)
         J     IASS0310
*
IASS0300 LA    R4,1(R4)          R4->INPUT
         ST    R4,64(R13)        ->STRING
         ST    R3,68(R13)        Length
         L     R15,DMNGETI6
         BASR  R14,R15
         AR    R4,R3
IASS0310 BRAS  R14,IASS0320
         J     IASS0330          0 FULLWORD
         J     IASS0340          4 HALFWORD
         J     IASS0350          8 BYTE
IASS0320 B     0(R8,R14)
*
IASS0330 MVC   0(4,R2),60(R13)
         LA    R2,4(R2)
         J     IASS0200
IASS0340 MVC   0(2,R2),62(R13)
         LA    R2,2(R2)
         J     IASS0200
IASS0350 MVC   0(1,R2),63(R13)
         LA    R2,1(R2)
         J     IASS0200
*
IASSFSTR DS    0H                R8 = LENGTH - 1
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3             AT END OF INPUT?
         JNZ   IASS0410
IASS0400 MVI   0(R2),C' '        BLANK IT
         LTR   R8,R8
         JNZ   IASS0405          ALREADY DONE
         LA    R4,1(R4)
         LA    R2,1(R2)
         J     IASS0200
IASS0405 BCTR  R8,0              ONE LESS FOR EX
         EX    R8,IASSBLNK
         LA    R2,2(R2,R8)
         J     IASS0200
*
IASS0410 DS    0H  ASSIGNMENT TO FIXED STRING
         LA    R4,1(R4)          R4->INPUT
         BCTR  R3,0              R3=ACTUAL LEN - 1
         CR    R8,R3
         JH    IASS0430          PADDING REQUIRED
         EX    R8,IASSCOPY
         LA    R4,1(R3,R4)
         LA    R2,1(R8,R2)
         J     IASS0200
*
IASS0430 EX    R3,IASSCOPY       COPY WHAT YOU HAVE
         LA    R4,1(R3,R4)
         LA    R2,1(R3,R2)
         SR    R8,R3             R8=BLANKS NEEDED
         BCTR  R8,0
         J     IASS0400
*
IASSSCB  DS    0H               WRITE TO SCB
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3
         JNZ   IASS0510
         LH    R5,6(R2)         ANY STRING?
         LTR   R5,R5
         JZ    IASS0500
         MVC   60(4,R13),0(R2)  CURRENT STRING
         ST    R5,64(R13)       CURRENT LENGTH
         MVC   68(4,R13),8(R2)  POOL
         L     R15,DMNRLSE6
         BASR  R14,R15
IASS0500 XC    0(8,R2),0(R2)
         LA    R4,1(R4)
         LA    R2,12(R2)
         J     IASS0200
*
IASS0510 LA    R4,1(R4)
         ST    R2,60(R13)       Target SCB
         ST    R4,64(R13)       Source STRING
         ST    R3,68(R13)       Length
         XC    72(8,R13),72(R13)
         L     R15,DMNOSTRV
         BASR  R14,R15
         LA    R2,12(R2)
         AR    R4,R3
         J     IASS0200
*
IASSFLT  DS    0H                OUTPUT IS FLOAT
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3             AT END OF INPUT?
         JNZ   IASS0600
         XC    0(8,R2),0(R2)
         LA    R4,1(R4)
         LA    R2,8(R2)
         J     IASS0200
*
IASS0600 LA    R4,1(R4)          R4->INPUT
         ST    R4,64(R13)        ->STRING
         ST    R3,68(R13)        Length
         L     R15,DMNGETF6
         BASR  R14,R15
         AR    R4,R3
         MVC   0(8,R2),64(R13)
         LA    R2,8(R2)
         J     IASS0200
*
IASSDATE DS    0H          OUTPUT IS DATE
         XR    R8,R8
         J     IASSINTG         PROCESS AS 4-BYTE INTEGER
*
IASSCODE DS    0H               OUTPUT IS CODE
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3             AT END OF INPUT?
         JNZ   IASS0800
         XC    0(4,R2),0(R2)
         LA    R4,1(R4)
         LA    R2,4(R2)
         J     IASS0200
*
IASS0800 LA    R4,1(R4)         R4->INPUT
         MVC   60(4,R13),56(R10)   DEFAULT LIST
         ST    R4,64(R13)          NAME
         XC    68(4,R13),68(R13)   NEXT ELEMENT
         STH   R3,72(R13)          NAME LENGTH
         L     R15,DMNEADD6
         BASR  R14,R15
         MVC   0(4,R2),60(R13)
         LA    R2,4(R2)
         AR    R4,R3
         J     IASS0200
*
IASSIGNT DS    0H              TAKE TOKEN BUT IGNORE
         XR    R3,R3
         IC    R3,0(R4)
         LTR   R3,R3           AT END OF INPUT?
         JZ    IASS0200
         LA    R4,1(R4)        R4->INPUT
         AR    R4,R3           BYPASS
IASSIGNR DS    0H              IGNORE R8 BYTES
         AR    R2,R8
         J     IASS0200
*
IASSARRB DS    0H              BIG ARRAY
         MVC   0(4,R13),0(R6)
         LA    R6,4(R6)
         L     R8,0(R13)
IASSARRA DS    0H              R8=DIM
         CLC   0(2,R4),IASSONE
         JNE   IASS0900
         LA    R4,2(R4)        BYPASS BEGINNING
IASS0900 LA    R14,2(R6)
         ST    R14,60(R13)
         ST    R2,64(R13)
         ST    R4,68(R13)
         L     R15,DMNIASS6
         BASR  R14,R15
         L     R2,60(R13)
         L     R4,64(R13)
         BRCT  R8,IASS0900
         AH    R6,0(R6)
         CLC   0(2,R4),IASSZERO
         JNZ   IASS0200
         LA    R4,2(R4)
         J     IASS0200
*
IASSSTRU DS    0H             STRUCTURE
         LHI   R8,1           DO ONLY ONCE
         J     IASSARRA
*
IASSDONE DS    0H
         ST    R2,IASSENDT
         ST    R4,IASSENDS
         LM    R0,R14,IASSREGS
         BR    R14
**************************
*    DMNCLR
**************************
DMNCLR   CSECT
DMNCLR   AMODE ANY
DMNCLR   RMODE ANY
* 60(R12) -> Space to set to zeros
* 64(R12) = length of space to set to zeros
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72
         L     R15,88(R10)
         BASR  R14,R15
         LM    R2,R3,60(R12)   SPACE AND LENGTH
         LR    R4,R2           Nothing to copy from
         XR    R5,R5           Padding is zero
         MVCL  R2,R4           zero the space
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNBLNK
**************************
DMNBLNK  CSECT
DMNBLNK  AMODE ANY
DMNBLNK  RMODE ANY
* 60(R12) -> Space to set to blanks
* 64(R12) = length of space to set to blanks
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,BLNKBEG
         DC    CL2' '
BLNKBEG  LM    R2,R3,60(R12)   SPACE AND LENGTH
         LR    R4,R2           Nothing to copy from
         IC    R5,0(R11)       Put a blank in R5
         SLL   R5,24(R0)       Move it into high byte
         MVCL  R2,R4           zero the space
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNCOPY
**************************
DMNCOPY  CSECT
DMNCOPY  AMODE ANY
DMNCOPY  RMODE ANY
* 60(R12) -> Destination
* 64(R12) =  Length of destination
* 68(R12) -> Source
* 72(R12) =  Length of source
* 76(1,R12)  Padding byte
* 77(3,R12)  Not used
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80
         L     R15,88(R10)
         BASR  R14,R15
*
         LM    R2,R5,60(R12)   DST,LEN,SRC,LEN
         ICM   R5,8,76(R12)    Insert pad in high order byte
         MVCL  R2,R4           Copy and pad
         JNO   COPYEND         IF NO OVERLAP OCCURED...
*
*  DESTRUCTIVE OVERLAP OCCURED...MOVE BYTE BY BYTE FROM RIGHT
         L     R5,72(R12)
         AR    R2,R3           LAST BYTE OF DESTINATION
         BCTR  R2,0
         AR    R4,R5           LAST BYTE OF SOURCE
         BCTR  R4,0
         SLL   R5,8            ZERO PADDING BYTE
         SRL   R5,8
*
COPYLOOP DS    0H
         LTR   R3,R3
         JNH   COPYEND
         MVC   0(1,R2),0(R4)
         BCTR  R2,0
         BCTR  R3,0
         BCTR  R4,0
         BRCT  R5,COPYLOOP
*
         LTR   R3,R3                LENGTHS ARE THE SAME
         JNH   COPYEND
*
COPYPAD  DS    0H
         MVC   0(1,R2),76(R12)
         BCTR  R2,0
         BRCT  R3,COPYPAD
*
COPYEND  DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNINIT
**************************
DMNINIT  CSECT
DMNINIT  AMODE ANY
DMNINIT  RMODE ANY
* ON INPUT
*  60(R12) -> CONTROL ARRAY
*  64(R12) -> POOL
*  68(R12) -> SPACE TO BE INITIALIZED
*
* ON RETURN
*  60(R12) -> END OF SPACE INITIALIZED
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,INITBEG
         DC    A(DMNCLR)      0
         DC    A(DMNBLNK)     4
         DC    A(DMNINIT)     8
         XC    0(0,R8),0(R8) 12
         MVC   1(0,R8),0(R8) 18
INITBEG  DS    0H
*
         L     R2,60(R12)   CONTROL ARRAY
         L     R8,68(R12)   SPACE TO INITIALIZE
INITLOOP XR    R15,R15
         IC    R15,0(R2)    1st byte is selection
         XR    R3,R3
         IC    R3,1(R2)     2nd byte in R3
         LA    R2,2(R2)     R2->next halfword
         BRAS  R14,INITSW1
         J     INITDONE     0 - done
         J     INITZERO     4 - zero <= 256
         J     INITMVC      8 - blank 1...256
         J     INITPOOL     12 - put pool in
         J     INITITER     16 - iterate
         J     INITBIG      20 - big length
         J     INITMVI      24 - single blank
         J     INITSCB      28 - SCB
         J     INITLIST     32 - LIST
         J     INITTBLE     36 - TABLE
         J     INITCURS     40 - CURSOR
INITSW1  B     0(R15,R14)
*
INITBIG  MVC   0(4,R13),0(R2) Align
         LR    R15,R3         New switch
         L     R3,0(R13)
         LA    R2,4(R2)
         BRAS  R14,INITSW2
         J     INITCLR        20,0 - Clear large
         J     INITBLNK       20,4 - Blank large
         J     INITITER       20,8 - Iterate large
INITSW2  B     0(R15,R14)
*
INITZERO EX    R3,12(R11)     Clear at R8
         LA    R8,1(R3,R8)
         J     INITLOOP
*
INITMVI  MVI   0(R8),C' '
         LA    R8,1(R8)
         J     INITLOOP
*
INITMVC  MVI   0(R8),C' '
         EX    R3,18(R11)
         LA    R8,2(R3,R8)
         J     INITLOOP
*
INITPOOL MVC   0(4,R8),64(R12)
         LA    R8,4(R8)
         J     INITLOOP
*
INITSCB  XC    0(8,R8),0(R8)
         MVC   8(4,R8),64(R12)
         LA    R8,12(R8)
         J     INITLOOP
*
INITLIST DS    0H
         XC    0(12,R8),0(R8)
         MVC   12(4,R8),64(R12)
         LA    R8,16(R8)
         J     INITLOOP
*
INITTBLE DS    0H                    TABLE AND CURSOR IDENTICAL...
INITCURS DS    0H
         XC    0(4,R8),0(R8)
         MVC   4(4,R8),64(R12)
         LA    R8,8(R8)
         J     INITLOOP
*
INITCLR  ST    R8,60(R13)
         ST    R3,64(R13)
         L     R15,0(R11) DMNCLR
         BASR  R14,R15
         AR    R8,R3
         J     INITLOOP
*
INITBLNK ST    R8,60(R13)
         ST    R3,64(R13)
         L     R15,4(R11) DMNBLNK
         BASR  R14,R15
         AR    R8,R3
         J     INITLOOP
*
INITITER LH    R4,0(R2)   BYTES IN SPEC
         LA    R2,2(R2)
INITRECU LTR   R3,R3
         JNH   INITBACK
         BCTR  R3,0
         ST    R2,60(R13)
         MVC   64(4,R13),64(R12)
         ST    R8,68(R13)
         L     R15,8(R11) ME
         BASR  R14,R15
         L     R8,60(R13)
         J     INITRECU
INITBACK AR    R2,R4
         J     INITLOOP
*
INITDONE ST    R8,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    INATLOCL
**************************
INATLOCL DSECT
INATREGS DS    15F         SAVED REGISTERS
INATCNTL DS    F           CONTROL ARRAY ADDRESS
INATPLAD DS    F           POOL ADDRESS
INATTRGT DS    F           TARGET DATA ADDRESS
INATSRCE DS    F           SOURCE DATA ADDRESS
*
         DS    0D
INATLGTH EQU   *-INATLOCL
*
         ORG   INATCNTL
INATENDT DS    F           END OF TARGET
INATENDS DS    F           END OF SOURCE
**************************
*    DMNINAT
**************************
DMNINAT  CSECT
DMNINAT  AMODE ANY
DMNINAT  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,INATLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,INAT0100
INAT000  EQU   *
DMNINAT1 DC    A(DMNINAT)
DMNSCPY1 DC    A(DMNSCPY)
DMNECPY1 DC    A(DMNECPY)
DMNALCV  DC    A(DMNALC)
DMNCOPYV DC    A(DMNCOPY)
*
         USING INAT000,R11
         USING INATLOCL,R12
INAT0100 DS    0H
         XR    R3,R3             BYTE COUNTER
         L     R2,INATTRGT       R2 -> TARGET
         L     R4,INATSRCE       R4 -> SOURCE
         L     R6,INATCNTL       R6 -> CONTROL ARRAY
*
INAT0200 DS    0H
         XR    R15,R15
         IC    R15,0(R6)         1ST BYTE IS SELECTION
         XR    R9,R9
         IC    R9,1(R6)          2ND BYTE IN R9
         LA    R6,2(R6)          R6 -> NEXT HALFWORD
         BRAS  R14,INAT0210
         J     INATDONE          00 - DONE
         J     INATINCR          04 - ZERO <= 256
         J     INATINC2          08 - BLANK 1...256
         J     INATPOOL          12 - PUT POOL IN
         J     INATITER          16 - ITERATE
         J     INATBIG           20 - BIG LENGTH
         J     INATINC1          24 - SINGLE BLANK
         J     INATSCB           28 - SCB
         J     INATLIST          32 - LIST
         J     INATTBLE          36 - TABLE OVERHEAD
         J     INATCURS          40 - CURSOR
INAT0210 B     0(R15,R14)
*~
INATINCR DS    0H
         LA    R3,1(R3,R9)       INCREMENT COUNTER
         J     INAT0200
*
INATINC1 DS    0H
         LA    R3,1(R3)          INCREMENT COUNTER
         J     INAT0200
*
INATINC2 DS    0H
         LA    R3,2(R3,R9)       INCREMENT COUNTER
         J     INAT0200
*
INATBIG  DS    0H
         LR    R15,R9            SAVE SWITCH
         ICM   R9,15,0(R6)       LOAD NEW LENGTH
         LA    R6,4(R6)
         CHI   R15,8
         JE    INATITER          20,8 - ITERATE
         AR    R3,R9             INCREMENT COUNTER (LARGE)
         J     INAT0200
*
INATPOOL DS    0H
         BRAS  R14,INATADD
         MVC   0(4,R2),INATPLAD
         LA    R2,4(R2)
         LA    R4,4(R4)
         J     INAT0200
*
INATSCB  DS    0H
         BRAS  R14,INATADD
         XC    0(8,R2),0(R2)
         MVC   8(4,R2),INATPLAD
         L     R15,0(R4)   ANY STRING?
         LTR   R15,R15
         JZ    INATSCBX
         ST    R2,60(R13)
         ST    R4,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,DMNSCPY1
         BASR  R14,R15
INATSCBX AHI   R2,12
         AHI   R4,12
         J     INAT0200
*
INATLIST DS    0H
         BRAS  R14,INATADD
         XC    0(12,R2),0(R2)
         MVC   12(4,R2),64(R12)   POOL
         L     R7,0(R4)           R7 -> ELEMENT
INATLIS1 DS    0H
         LTR   R7,R7
         JZ    INATLIS9
         ST    R7,60(R13)
         ST    R2,64(R13)
         XC    68(8,R13),68(R13)  ALL ATTRIBUTES
         L     R15,DMNECPY1
         BASR  R14,R15
         L     R7,8(R7)           NEXT ELEMENT
         J     INATLIS1
INATLIS9 DS    0H
         AHI   R2,16
         AHI   R4,16
         J     INAT0200
*
INATTBLE DS    0H
         BRAS  R14,INATADD
         XC    0(4,R2),0(R2)
         MVC   4(4,R2),64(R12)   POOL
         L     R7,0(R4)
         LTR   R7,R7
         JZ    INATTBLX
         LH    R7,0(R7)
         MHI   R7,4
         AHI   R7,48
         ST    R7,60(R13)
         MVC   64(4,R13),64(R12)
         L     R15,DMNALCV
         BASR  R14,R15
         MVC   0(4,R2),60(R13)
*
         MVC   60(4,R13),0(R2)
         MVC   68(4,R13),0(R4)
         ST    R7,64(R13)
         ST    R7,72(R13)
         XC    76(4,R13),76(R13)
         L     R15,DMNCOPYV
         BASR  R14,R15
         L     R7,0(R2)
         MVC   12(4,R7),64(R12)
*
INATTBLX AHI   R2,8
         AHI   R4,8
         J     INAT0200
*
INATCURS DS    0H
         BRAS  R14,INATADD
         XC    0(4,R2),0(R2)
         MVC   4(4,R2),64(R12)   POOL
         L     R7,0(R4)
         LTR   R7,R7
         JZ    INATCURX
         LHI   R15,12
         ST    R15,60(R13)
         MVC   64(4,R13),64(R12)
         L     R15,DMNALCV
         BASR  R14,R15
         L     R14,60(R13)
         ST    R14,0(R2)
         MVC   0(12,R14),0(R7)    COPY CURSOR INFORMATION
INATCURX AHI   R2,8
         AHI   R4,8
         J     INAT0200
*
INATITER DS    0H
         BRAS  R14,INATADD
         LH    R7,0(R6)
         LA    R6,2(R6)
INATITE1 DS    0H
         LTR   R9,R9
         JNH   INATITE9
         BCTR  R9,0
         ST    R6,60(R13)        SUB-CONTROL ARRAY
         MVC   64(4,R13),64(R12)
         ST    R2,68(R13)        TARGET
         ST    R4,72(R13)        SOURCE
         L     R15,DMNINAT1
         BASR  R14,R15
         L     R2,60(R13)
         L     R4,64(R13)
         J     INATITE1
INATITE9 DS    0H
         AR    R6,R7
         J     INAT0200
*
INATADD  DS    0H
         LTR   R5,R3
         BZR   R14
         MVCL  R2,R4
         BR    R14
*
INATDONE DS    0H
         BRAS  R14,INATADD
         ST    R2,INATENDT
         ST    R4,INATENDS
         LM    R0,R14,INATREGS
         BR    R14
**************************
*    INDLLOCL
**************************
INDLLOCL DSECT
INDLREGS DS    15F         SAVED REGISTERS
INDLCNTL DS    F           CONTROL ARRAY ADDRESS
INDLPLAD DS    F           POOL ADDRESS
INDLDATA DS    F           DATA ADDRESS
*
         DS    0D
INDLLGTH EQU   *-INDLLOCL
*
         ORG   INDLCNTL
INDLRTRN DS    F           END OF DATA
**************************
*    DMNINDL
**************************
DMNINDL  CSECT
DMNINDL  AMODE ANY
DMNINDL  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,INDLLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,INDL0100
INDL000  EQU   *
DMNINDL2 DC    A(DMNINDL)
DMNRLSE2 DC    A(DMNRLSE)
DMNERA2  DC    A(DMNERA)
*
         USING INDL000,R11
         USING INDLLOCL,R12
INDL0100 DS    0H
         L     R2,INDLCNTL       R2 -> CONTROL ARRAY
         L     R3,INDLDATA       R3 -> DATA
*
INDL0200 DS    0H
         XR    R15,R15
         IC    R15,0(R2)         1ST BYTE IS SELECTION
         XR    R9,R9
         IC    R9,1(R2)          2ND BYTE IN R9
         LA    R2,2(R2)          R6 -> NEXT HALFWORD
         BRAS  R14,INDL0210
         J     INDLDONE          00 - DONE
         J     INDLINCR          04 - ZERO <= 256
         J     INDLINC2          08 - BLANK 1...256
         J     INDLPOOL          12 - PUT POOL IN
         J     INDLITER          16 - ITERATE
         J     INDLBIG           20 - BIG LENGTH
         J     INDLINC1          24 - SINGLE BLANK
         J     INDLSCB           28 - SCB
         J     INDLLIST          32 - LIST
         J     INDLTBLE          36 - TABLE OVERHEAD
         J     INDLCURS          40 - CURSOR
INDL0210 B     0(R15,R14)
*
INDLINCR DS    0H
         LA    R3,1(R3,R9)
         J     INDL0200
*
INDLINC1 DS    0H
         LA    R3,1(R3)
         J     INDL0200
*
INDLINC2 DS    0H
         LA    R3,2(R3,R9)
         J     INDL0200
*
INDLBIG  DS    0H
         LR    R15,R9            SAVE SWITCH
         ICM   R9,15,0(R2)       LOAD NEW LENGTH
         LA    R2,4(R2)
         CHI   R15,8
         JE    INDLITER          20,8 - ITERATE
         AR    R3,R9             INCREMENT ADDRESS (LARGE)
         J     INDL0200
*
INDLPOOL DS    0H
         AHI   R3,4
         J     INDL0200
*
INDLSCB  DS    0H
         LH    R5,6(R3)                SPACE ALLOCATED
         LTR   R5,R5
         JZ    INDLSCBX
         ST    R5,64(R13)
         MVC   60(4,R13),0(R3)
         MVC   68(4,R13),INDLPLAD
         L     R15,DMNRLSE2
         BASR  R14,R15
INDLSCBX AHI   R3,12
         J     INDL0200
*
INDLLIST DS    0H
         ST    R3,60(R13)
         L     R15,DMNERA2
         BASR  R14,R15
         AHI   R3,16
         J     INDL0200
*
INDLITER DS    0H
         LH    R5,0(R2)
         LA    R2,2(R2)
INDLITE1 DS    0H
         LTR   R9,R9
         JNH   INDLITE9
         BCTR  R9,0
         ST    R2,60(R13)        SUB-CONTROL ARRAY
         MVC   64(4,R13),64(R12)
         ST    R3,68(R13)        SOURCE
         L     R15,DMNINDL2
         BASR  R14,R15
         L     R3,60(R13)
         J     INDLITE1
INDLITE9 DS    0H
         AR    R2,R5
         J     INDL0200
*
INDLTBLE DS    0H
         L     R5,0(R3)
         LTR   R5,R5
         JZ    INDLTBLX
         LH    R7,0(R5)
         MHI   R7,4
         AHI   R7,48
         ST    R5,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),4(R3)
         L     R15,DMNRLSE2
         BASR  R14,R15
INDLTBLX AHI   R3,8
         J     INDL0200
*
INDLCURS DS    0H
         L     R14,0(R3)
         LTR   R14,R14
         JZ    INDLCURX
         ST    R14,60(R13)
         LHI   R15,12
         ST    R15,64(R13)
         MVC   68(4,R13),4(R3)
         L     R15,DMNRLSE2
         BASR  R14,R15
INDLCURX AHI   R3,8
         J     INDL0200
*
INDLDONE DS    0H
         ST    R3,INDLRTRN
         LM    R0,R14,INDLREGS
         BR    R14
**************************
*    RPLCLOCL
**************************
RPLCLOCL DSECT
RPLCREGS DS    15F         SAVED REGISTERS
RPLCCNTL DS    F           CONTROL ARRAY ADDRESS
RPLCTRGT DS    F           TARGET DATA ADDRESS
RPLCSRCE DS    F           SOURCE DATA ADDRESS
*
         DS    0D
RPLCLGTH EQU   *-RPLCLOCL
*
         ORG   RPLCCNTL
RPLCENDT DS    F           END OF TARGET
RPLCENDS DS    F           END OF SOURCE
**************************
*    DMNRPLC
**************************
DMNRPLC  CSECT
DMNRPLC  AMODE ANY
DMNRPLC  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,RPLCLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,RPLC0100
RPLC000  EQU   *
DMNRPLC3 DC    A(DMNRPLC)
DMNSCPY3 DC    A(DMNSCPY)
DMNALCA  DC    A(DMNALC)
DMNCOPY3 DC    A(DMNCOPY)
DMNRLSE3 DC    A(DMNRLSE)
DMNCLST3 DC    A(DMNCLST)
*
         USING RPLC000,R11
         USING RPLCLOCL,R12
RPLC0100 DS    0H
         XR    R3,R3             BYTE COUNTER
         L     R2,RPLCTRGT       R2 -> TARGET
         L     R4,RPLCSRCE       R4 -> SOURCE
         L     R6,RPLCCNTL       R6 -> CONTROL ARRAY
*
RPLC0200 DS    0H
         XR    R15,R15
         IC    R15,0(R6)         1ST BYTE IS SELECTION
         XR    R9,R9
         IC    R9,1(R6)          2ND BYTE IN R9
         LA    R6,2(R6)          R6 -> NEXT HALFWORD
         BRAS  R14,RPLC0210
         J     RPLCDONE          00 - DONE
         J     RPLCINCR          04 - ZERO <= 256
         J     RPLCINC2          08 - BLANK 1...256
         J     RPLCPOOL          12 - PUT POOL IN
         J     RPLCITER          16 - ITERATE
         J     RPLCBIG           20 - BIG LENGTH
         J     RPLCINC1          24 - SINGLE BLANK
         J     RPLCSCB           28 - SCB
         J     RPLCLIST          32 - LIST
         J     RPLCTBLE          36 - TABLE OVERHEAD
         J     RPLCCURS          40 - CURSOR
RPLC0210 B     0(R15,R14)
*
RPLCINCR DS    0H
         LA    R3,1(R3,R9)       INCREMENT COUNTER
         J     RPLC0200
*
RPLCINC1 DS    0H
         LA    R3,1(R3)          INCREMENT COUNTER
         J     RPLC0200
*
RPLCINC2 DS    0H
         LA    R3,2(R3,R9)       INCREMENT COUNTER
         J     RPLC0200
*
RPLCBIG  DS    0H
         LR    R15,R9            SAVE SWITCH
         ICM   R9,15,0(R6)       LOAD NEW LENGTH
         LA    R6,4(R6)
         CHI   R15,8
         JE    RPLCITER          20,8 - ITERATE
         AR    R3,R9             INCREMENT COUNTER (LARGE)
         J     RPLC0200
*
RPLCPOOL DS    0H
         BRAS  R14,RPLCADD
         LA    R2,4(R2)
         LA    R4,4(R4)
         J     RPLC0200
*
RPLCSCB  DS    0H
         BRAS  R14,RPLCADD
         ST    R2,60(R13)       Target SCB
         ST    R4,64(R13)       Source SCB
         XC    68(4,R13),68(R13)
         L     R15,DMNSCPY3
         BASR  R14,R15
RPLCSCBX AHI   R2,12
         AHI   R4,12
         J     RPLC0200
*
RPLCLIST DS    0H
         BRAS  R14,RPLCADD
         ST    R2,60(R13)
         ST    R4,64(R13)
         L     R15,DMNCLST3
         BASR  R14,R15
         AHI   R2,16
         AHI   R4,16
         J     RPLC0200
*
RPLCTBLE DS    0H
         BRAS  R14,RPLCADD
         L     R5,0(R2)
         LTR   R5,R5
         JZ    RPLCTBLA
         LH    R7,0(R5)
         MHI   R7,4
         AHI   R7,48
         ST    R5,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),4(R2)
         L     R15,DMNRLSE3
         BASR  R14,R15
RPLCTBLA L     R7,0(R4)
         LTR   R7,R7
         JZ    RPLCTBLX
         LH    R7,0(R7)
         MHI   R7,4
         AHI   R7,48
         ST    R7,60(R13)
         MVC   64(4,R13),4(R4)
         L     R15,DMNALCA
         BASR  R14,R15
         MVC   0(4,R2),60(R13)
*
         MVC   60(4,R13),0(R2)
         MVC   68(4,R13),0(R4)
         ST    R7,64(R13)
         ST    R7,72(R13)
         XC    76(4,R13),76(R13)
         L     R15,DMNCOPY3
         BASR  R14,R15
         L     R7,0(R2)
         MVC   12(4,R7),64(R12)
*
RPLCTBLX AHI   R2,8
         AHI   R4,8
         J     RPLC0200
*
RPLCCURS DS    0H
         BRAS  R14,RPLCADD
         L     R14,0(R2)
         LTR   R14,R14
         JZ    RPLCCURA
         ST    R14,60(R13)
         LHI   R15,12
         ST    R15,64(R13)
         MVC   68(4,R13),4(R3)
         L     R15,DMNRLSE3
         BASR  R14,R15
RPLCCURA L     R7,0(R4)
         LTR   R7,R7
         JZ    RPLCCURX
         LHI   R15,12
         ST    R15,60(R13)
         MVC   64(4,R13),64(R12)
         L     R15,DMNALCA
         BASR  R14,R15
         L     R14,60(R13)
         ST    R14,0(R2)
         MVC   0(12,R14),0(R7)    COPY CURSOR INFORMATION
RPLCCURX AHI   R2,8
         AHI   R4,8
         J     RPLC0200
*
RPLCITER DS    0H
         BRAS  R14,RPLCADD
         LH    R7,0(R6)
         LA    R6,2(R6)
RPLCITE1 DS    0H
         LTR   R9,R9
         JNH   RPLCITE9
         BCTR  R9,0
         ST    R6,60(R13)        SUB-CONTROL ARRAY
         ST    R2,64(R13)        TARGET
         ST    R4,68(R13)        SOURCE
         L     R15,DMNRPLC3
         BASR  R14,R15
         L     R2,60(R13)
         L     R4,64(R13)
         J     RPLCITE1
RPLCITE9 DS    0H
         AR    R6,R7
         J     RPLC0200
*
RPLCADD  DS    0H
         LTR   R5,R3
         BZR   R14
         MVCL  R2,R4
         BR    R14
*
RPLCDONE DS    0H
         BRAS  R14,RPLCADD
         ST    R2,RPLCENDT
         ST    R4,RPLCENDS
         LM    R0,R14,RPLCREGS
         BR    R14
**************************
*    RSETLOCL
**************************
RSETLOCL DSECT
RSETREGS DS    15F         SAVED REGISTERS
RSETCNTL DS    F           CONTROL ARRAY ADDRESS
RSETTRGT DS    F           DATA ADDRESS
*
         DS    0D
RSETLGTH EQU   *-RSETLOCL
*
         ORG   RSETCNTL
RSETENDT DS    F           END OF TARGET
**************************
*    DMNRESET
**************************
DMNRESET CSECT
DMNRESET AMODE ANY
DMNRESET RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,RSETLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,RSET0100
RSET000  EQU   *
DMNRSET5 DC    A(DMNRESET)
DMNERA5  DC    A(DMNERA)
DMNRLSEV DC    A(DMNRLSE)
DMNCLR5  DC    A(DMNCLR)
DMNBLNK5 DC    A(DMNBLNK)
RSETCLR  XC    0(0,R2),0(R2)
RSETBLNK MVC   1(0,R2),0(R2)
*
         USING RSET000,R11
         USING RSETLOCL,R12
RSET0100 DS    0H
         XR    R3,R3             BYTE COUNTER
         L     R2,RSETTRGT       R2 -> TARGET
         L     R6,RSETCNTL       R6 -> CONTROL ARRAY
*
RSET0200 DS    0H
         XR    R15,R15
         IC    R15,0(R6)         1ST BYTE IS SELECTION
         XR    R9,R9
         IC    R9,1(R6)          2ND BYTE IN R9
         LA    R6,2(R6)          R6 -> NEXT HALFWORD
         BRAS  R14,RSET0210
         J     RSETDONE          00 - DONE
         J     RSETINCR          04 - ZERO <= 256
         J     RSETINC2          08 - BLANK 1...256
         J     RSETPOOL          12 - PUT POOL IN
         J     RSETITER          16 - ITERATE
         J     RSETBIG           20 - BIG LENGTH
         J     RSETINC1          24 - SINGLE BLANK
         J     RSETSCB           28 - SCB
         J     RSETLIST          32 - LIST
         J     RSETTBLE          36 - TABLE OVERHEAD
         J     RSETCURS          40 - CURSOR
RSET0210 B     0(R15,R14)
*
RSETINCR DS    0H
         EX    R9,RSETCLR
         LA    R2,1(R2,R9)
         J     RSET0200
*
RSETINC1 DS    0H
         MVI   0(R2),C' '
         LA    R2,1(R2)
         J     RSET0200
*
RSETINC2 DS    0H
         MVI   0(R2),C' '
         EX    R9,RSETBLNK
         LA    R2,2(R2,R9)
         J     RSET0200
*
RSETBIG  DS    0H
         LR    R15,R9            SAVE SWITCH
         ICM   R9,15,0(R6)       LOAD NEW LENGTH
         LA    R6,4(R6)
         CHI   R15,8
         JE    RSETITER          20,8 - ITERATE
         ST    R2,60(R13)
         ST    R9,64(R13)
         L     R15,DMNCLR5       DMNCLR
         BASR  R14,R15
         AR    R2,R9             INCREMENT COUNTER (LARGE)
         J     RSET0200
*
RSETPOOL DS    0H
         LA    R2,4(R2)
         J     RSET0200
*
RSETSCB  DS    0H
         LH    R5,6(R2)         ANY STRING?
         LTR   R5,R5
         JZ    RSETSCBX
         MVC   60(4,R13),0(R2)
         ST    R5,64(R13)
         MVC   68(4,R13),8(R2)
         L     R15,DMNRLSEV
         BASR  R14,R15
         XC    0(8,R2),0(R2)
RSETSCBX AHI   R2,12
         J     RSET0200
*
RSETLIST DS    0H
         L     R5,0(R2)
         LTR   R5,R5
         JZ    RSETLISX
         ST    R2,60(R13)
         L     R15,DMNERA5
         BASR  R14,R15
         XC    0(12,R2),0(R2)
RSETLISX AHI   R2,16
         J     RSET0200
*
RSETTBLE DS    0H
         L     R5,0(R2)
         LTR   R5,R5
         JZ    RSETTBLX
         LH    R7,0(R5)
         MHI   R7,4
         AHI   R7,48
         ST    R5,60(R13)
         ST    R7,64(R13)
         MVC   68(4,R13),4(R2)
         L     R15,DMNRLSEV
         BASR  R14,R15
         XC    0(4,R2),0(R2)
RSETTBLX AHI   R2,8
         J     RSET0200
*
RSETCURS DS    0H
         L     R14,0(R2)
         LTR   R14,R14
         JZ    RSETCURX
         ST    R14,60(R13)
         LHI   R15,12
         ST    R15,64(R13)
         MVC   68(4,R13),4(R2)
         L     R15,DMNRLSEV
         BASR  R14,R15
         XC    0(4,R2),0(R2)
RSETCURX AHI   R2,8
         J     RSET0200
*
RSETITER DS    0H
         LH    R7,0(R6)
         LA    R6,2(R6)
RSETITE1 DS    0H
         LTR   R9,R9
         JNH   RSETITE9
         BCTR  R9,0
         ST    R6,60(R13)        SUB-CONTROL ARRAY
         ST    R2,64(R13)        TARGET
         L     R15,DMNRSET5
         BASR  R14,R15
         L     R2,60(R13)
         J     RSETITE1
RSETITE9 DS    0H
         AR    R6,R7
         J     RSET0200
*
RSETDONE DS    0H
         ST    R2,RSETENDT
         LM    R0,R14,RSETREGS
         BR    R14
**************************
*    DMNLOAD
**************************
DMNLOAD  CSECT
DMNLOAD  AMODE ANY
DMNLOAD  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 ARGUMENTS
*      + 0060 CODE / RETURN CODE
*      + 0062 ---- / RETURN CODE
*      + 0064 CURSOR POINTER
*      + 0068 DEPENDANT ON CODE
*      + 0080 R14 SUBROUTINE SAVE AREA
*      + 0084 ANOTHER R14 SUBROUTINE SAVE AREA
*      + 0088 CURSOR CONTROL BLOCK ON PGM ENTRY
*      + 0100 TAG ADDR
*      + 0104 TAG LENGTH
*      + 0106 FLAGS
*      + 0112 ADDR OF CURSOR CONTROL BLOCK
*      + 0116 STILL ANOTHER R14 SAVE AREA
*      + 0120 LDSECTX R14 SAVE AREA
*      + 0124 Save area for R4
*      + 0128 Save area for R5
*      + 0132 slack
*      + 0136 SIZE OF WORK AREA
*     ** R13 WILL INCREASE FURTHER IF LDUPPERC IS USED **
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,136         END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         J     LDALIGN         ALIGN CONSTANTS
LDALIGN  DS    0F
         BRAS  R11,LD000
         DC    A(DMNALC)               0
         DC    A(DMNRLSE)              4
         DC    A(DMNSCPY)              8
         DC    A(DMNDREF)             12
         DC    A(DMNSUPP)             16
         DC    A(DMNECNB)             20
         DC    A(DMNFREF)             24
         CLC   0(0,R4),0(R7)          28
         CLC   0(0,R6),0(R1)          34
         MVC   0(0,R9),0(R4)          40
*
LD000    DS    0H
         XC    88(12,R12),88(R12)     SAVED CCB
         XC    112(4,R12),112(R12)    SAVED CURSOR ADDR
         L     R3,64(R12)
         L     R3,0(R3)               ->CCB
         ST    R3,112(R12)
         LTR   R3,R3
         JZ    LD007
         MVC   88(12,R12),0(R3)        SAVE CCB EXCEPT FLAGS
*
LD007    DS    0H
         XC    106(2,R12),106(R12)     FLAGS
         LA    R2,5                    PRELOAD - INVALID CODE
         LH    R3,60(R12)
         LTR   R3,R3
         JNH   LD9990                  INVALID CODE
         CHI   R3,14
         JH    LD9990                  INVALID CODE
*
         CHI   R3,1
         JE    LD010
         CHI   R3,14
         JE    LD010
         L     R14,64(R12)             Check for valid cursor
         L     R15,0(R14)
         LTR   R15,R15
         JNZ   LD010
*
         LHI   R2,113                  Error code - no cursor
         L     R1,64(R10)
         LA    R1,28(R1)
         CR    R1,R14                  Default cursor?
         JNE   LD9990                  ...error if no
*
         ST    R1,64(R13)              Cursor address
         LHI   R14,1
         STH   R14,60(R13)             Code = open
         BRAS  R14,DMNLOAD             Call recursively
*
LD010    DS    0H
         XR    R2,R2                   CLEAR RC
         LR    R15,R3
         BCTR  R15,0
         SLL   R15,2
         BRAS  R14,LD020
         J     LD100
         J     LD200
         J     LD300
         J     LD400
         J     LD500
         J     LD600
         J     LD700
         J     LD800
         J     LD900
         J     LD1000
         J     LD1100
         J     LD1200
         J     LD1300
         J     LD100
LD020    B     0(R14,R15)
*
*********************
*  OPEN
*********************
LD100    DS    0H
         L     R9,64(R12)              Check for valid cursor
         L     R14,0(R9)
         LTR   R14,R14
         JZ    LD105
         LHI   R2,113                  ...error if there
         J     LD9990
*
LD105    DS    0H
         LA    R15,16
         ST    R15,60(R13)
         MVC   64(4,R13),4(R9)
         L     R15,0(R11)              DMNALC
         BASR  R14,R15
         L     R1,60(R13)
         ST    R1,112(R12)
         XC    0(16,R1),0(R1)          CLEAR NEW CCB
         XC    88(12,R12),88(R12)      CLEAR CCB SAVE AREA
         MVC   0(4,R9),60(R13)
         L     R14,60(R12)             Reload Code
         CHI   R14,14
         JE    LD1400                  Finish STORE OPEN
         J     LD9902
*
*********************
*  CLOSE
*********************
LD200    DS    0H
         L     R3,64(R12)
         L     R4,0(R3)
         LTR   R4,R4
         JZ    LD9902
         XC    0(4,R3),0(R3)           REMAKE IF NEEDED
*
         ST    R4,60(R13)              ADDR OF CURSOR CONTROL
         LA    R5,12                   LENGTH OF CC
         ST    R5,64(R13)
         MVC   68(4,R13),4(R3)         ADDR OF CC POOL
         L     R15,4(R11)              DMNRLSE
         BASR  R14,R15
         J     LD9902
*********************
*  RESET
*********************
LD300    DS    0H
         L     R3,64(R12)
         L     R4,0(R3)
         LTR   R4,R4
         JZ    LD9902
         XC    0(16,R4),0(R4)          Clear CCB and flags
         J     LD9902
*********************
*  FIND TAG
*********************
LD400    DS    0H
         L     R1,64(R12)
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
*
         LH    R0,76(R12)              R0 -> LENGTH
         L     R1,68(R12)              R1 -> ADDR SCB / STR
         BRAS  R14,LDGSTR              GET THE REAL STRING ADDR
         LR    R4,R1                   R4 -> STR ADDR
         LR    R5,R0                   R5 -> STR LENGTH
*
         LTR   R4,R4
         JZ    LD450
*
         BRAS  R14,LDUPPERC
*
         LR    R6,R4                   R6 -> PATH ADDR
         AR    R6,R5                   POINT TO END
         BCTR  R6,0                    POINT TO LAST BYTE
         XR    R7,R7                   CLEAR REG
*
LD405    DS    0H                    Searching backwards for delimiter
         CLI   0(R6),C'/'              DELIMITER
         JE    LD410
         BCTR  R6,0
         LA    R7,1(R7)
         CR    R5,R7                   COMPARE WITH ORIGINAL LENGTH
         JH    LD405
*
LD410    DS    0H
         LA    R6,1(R6)
         ST    R6,100(R12)             SAVE TAG ADDR
         STH   R7,104(R12)             SAVE TAG LENGTH
         SR    R5,R7                   SUBTRACT TAG LENGTH FROM PATH
         BCTR  R5,0                    REMOVE TRAILING '/'
*
         BRAS  R14,LDLOCS              LOCATE SECTION SUBROUTINE
         LTR   R2,R2
         JNZ   LD9990
*
*  LOCATE THE TAG
LD450    DS    0H
         L     R6,4(R3)                GET THE SECTION
         LTR   R6,R6
         JZ    LD482
         BRAS  R14,LD1TAG              Find the tags
         LA    R6,1(R6)                Bypass null
*
LD460    DS    0H
         BRAS  R14,LDTAGF              LOCATE TAG SUBROUTINE
         LTR   R2,R2
         JNZ   LD9990
*
         LH    R5,104(R12)             Tag length
         CR    R5,R7                   SAME LENGTH AS SAVED?
         JNE   LD470                   GO GET NEXT...
         BCTR  R5,0
         L     R1,100(R12)
         EX    R5,34(R11)              COMPARE FOUND VS SAVED
         JE    LD480
*
LD470    DS    0H
         AR    R6,R7                   INCREMENT BEGINNING ADDR
         AR    R6,R9
         LA    R6,2(R6)                ...FOR BOTH HEX ZEROS
         J     LD460
*
LD480    DS    0H
         ST    R6,8(R3)                STORE ADDR IN CCB
         L     R4,72(R12)
         LTR   R4,R4
         JZ    LD9990                  JUST RETURN RC
         J     LD485
*
* No section - error 106
LD482    DS    0H
         LA    R2,106
         J     LD9990
*
* Copy tag for all tag retrieval codes
*
LD485    DS    0H
         LTR   R9,R9
         JH    LD490                   If length not positive
         XR    R8,R8                   ...source address = 0
LD490    DS    0H
         MVC   60(4,R13),72(R12)       TARGET ADDR
         ST    R8,64(R13)              SOURCE ADDR
         MVC   68(2,R13),78(R12)       TARGET LEN
         STH   R9,70(R13)
         L     R15,8(R11)              DMNSCPY
         BASR  R14,R15
         J     LD9990
*********************
*  FIND SECTION
*********************
LD500    DS    0H
         L     R1,64(R12)
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
*
         LH    R0,76(R12)              R0 -> LENGTH
         L     R1,68(R12)              R1 -> ADDR SCB / STR
         BRAS  R14,LDGSTR              GET THE REAL STRING ADDR
         LTR   R4,R1                   R4 -> STR ADDR
         JZ    LD590                   ...search unnecessary on 0
         LTR   R5,R0                   R5 -> STR LENGTH
         JZ    LD590                   ...search unnecessary on 0
*
         BRAS  R14,LDUPPERC
         BRAS  R14,LDLOCS              LOCATE SECTION SUBROUTINE
         J     LD9990
*
LD590    DS    0H
         LHI   R2,108                  Section not found
         J     LD9990
*********************
*  FIRST TAG
*********************
LD600    DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD694
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6
         JZ    LD694
*
         BRAS  R14,LD1TAG              Find the tags
         LA    R6,1(R6)                Bypass the null
         BRAS  R14,LDTAGF
         LTR   R2,R2
         JNZ   LD9990
*
*  RETURN LOGIC FOR CODE 6, 8, 10, 12
*
LD610    DS    0H
         ST    R6,8(R3)                STORE ADDR IN CCB
         XR    R4,R4
         C     R4,68(R12)              IF NAME SPACE PROVIDED
         JE    LD620
*
         MVC   60(4,R13),68(R12)       TARGET ADDR
         ST    R6,64(R13)              SOURCE ADDR
         MVC   68(2,R13),76(R12)       TARGET LEN
         STH   R7,70(R13)              SOURCE LEN
         L     R15,8(R11)              DMNSCPY
         BASR  R14,R15
*
LD620    DS    0H
         C     R4,72(R12)              IF VALUE SPACE PROVIDED
         JE    LD695
         J     LD485                   Copy the tag
*
LD694    DS    0H
         LA    R2,106                  TAG NOT FOUND
*
LD695    DS    0H
         J     LD9990
*********************
*  FIRST SECTION
*********************
LD700    DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD794
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6                   MUST HAVE CURRENT SECTION
         JZ    LD794
*
         MVI   108(R12),C':'
         LA    R4,108(R12)             : IS PATH INPUT
         LA    R5,1                    LENGTH IS 1
*
         BRAS  R14,LDLOCS
*
*  RETURN LOGIC FOR CODE 7, 9, 11, 13
*
LD710    DS    0H
         XC    8(4,R3),8(R3)           Clear tag address
         L     R6,68(R12)
         LTR   R6,R6                   IF NAME SPACE PROVIDED
         JZ    LD795
*
         MVC   60(4,R13),68(R12)       TARGET ADDR
         L     R4,4(R3)
         LR    R5,R4
LD711    CLI   0(R5),0
         JE    LD712
         LA    R5,1(R5)
         J     LD711
LD712    SR    R5,R4
         ST    R4,64(R13)              SOURCE ADDR
         MVC   68(2,R13),76(R12)       TARGET LENGTH
         STH   R5,70(R13)              SOURCE LENGTH
         L     R15,8(R11)              DMNSCPY
         BASR  R14,R15
         J     LD795
*
LD794    DS    0H
         LA    R2,108                  SECTION NOT FOUND
*
LD795    DS    0H
         J     LD9990
*********************
*  LAST TAG
*********************
LD800    DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD894
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6
         JZ    LD894
*
         BRAS  R14,LD1TAG              Find the tags
         AR    R6,R5                   R6->byte after tags
         BCTR  R6,0                    R6->null at end
*
         BRAS  R14,LDTAGB
         LTR   R2,R2
         JNZ   LD9990
*
         J     LD610
*
LD894    DS    0H
         LA    R2,106                  TAG NOT FOUND
*
LD895    DS    0H
         J     LD9990
*********************
*  LAST SECTION
*********************
LD900    DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD994
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6                   MUST HAVE CURRENT SECTION
         JZ    LD994
*
         MVI   108(R12),C'>'
         MVI   109(R12),C'>'
         LA    R4,108(R12)             >> IS PATH INPUT
         LA    R5,2                    LENGTH IS 2
*
         BRAS  R14,LDLOCS
*
         J     LD710
*
LD994    DS    0H
         LA    R2,108                  SECTION NOT FOUND
*
LD995    DS    0H
         J     LD9990
*********************
*  NEXT TAG
*********************
LD1000   DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD1094
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,8(R3)
         LTR   R6,R6                   Current tag
         JZ    LD600                   Get 1st tag if no current
*
         BRAS  R14,LDTAGF              POSITION REGS ON CURRENT TAG
         LTR   R2,R2
         JNZ   LD9990
*
         LR    R6,R8
         AR    R6,R9
         LA    R6,1(R6)
         BRAS  R14,LDTAGF              FIND NEXT TAG
         LTR   R2,R2
         JNZ   LD9990
*
         J     LD610
*
LD1094   DS    0H
         LA    R2,106                  TAG NOT FOUND
*
LD1095   DS    0H
         J     LD9990
*********************
*  NEXT SECTION
*********************
LD1100   DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD1194
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6                   MUST HAVE CURRENT SECTION
         JZ    LD1194
*
         MVI   108(R12),C'>'
         LA    R4,108(R12)             > IS PATH INPUT
         LA    R5,1                    LENGTH IS 1
*
         BRAS  R14,LDLOCS
*
         J     LD710
*
LD1194   DS    0H
         LA    R2,108                  SECTION NOT FOUND
*
LD1195   DS    0H
         J     LD9990
*********************
*  PREVIOUS TAG
*********************
LD1200   DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD1294
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,8(R3)
         LTR   R6,R6
         JZ    LD1294
*
         BRAS  R14,LDTAGB
         LTR   R2,R2
         JNZ   LD9990
*
         J     LD610
*
LD1294   DS    0H
         LA    R2,106                  TAG NOT FOUND
*
LD1295   DS    0H
         J     LD9990
*********************
*  PREVIOUS SECTION
*********************
LD1300   DS    0H
         L     R1,64(R12)
         LTR   R1,R1                   IF CCB NONEXISTANT
         JZ    LD1394
*
         L     R3,0(R1)                R3 -> CURSOR CONTROL BLOCK
         L     R6,4(R3)
         LTR   R6,R6                   MUST HAVE CURRENT SECTION
         JZ    LD1394
*
         MVI   108(R12),C'<'
         LA    R4,108(R12)             < IS PATH INPUT
         LA    R5,1                    LENGTH IS 1
*
         BRAS  R14,LDLOCS
*
         J     LD710
*
LD1394   DS    0H
         LA    R2,108                  SECTION NOT FOUND
*
LD1395   DS    0H
         J     LD9990
*********************
*  STORE OPEN
*********************
LD1400   DS    0H
         L     R3,64(R12)
         L     R3,0(R3)                LOAD CCB
         OI    12(R3),X'80'            SET READ/WRITE FLAG
         J     LD9902
*
*********************
*  CLOSING LOGIC
*********************
LD9902   DS    0H                      Come here to make R2=0
         XR    R2,R2
LD9990   ST    R2,60(R12)
         LTR   R2,R2
         JZ    LD9995
         L     R3,112(R12)
         LTR   R3,R3
         JZ    LD9995
         L     R3,64(R12)
         L     R3,0(R3)
         MVC   0(12,R3),88(R12)      RESTORE ORIGINAL CCB EXCEPT FLAGS
*
LD9995   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
*********************
*  SUBROUTINES
*********************
LDUPPERC DS    0H
         ST    R14,80(R12)
         LTR   R1,R5                   LENGTH TO WORK REGISTER
         JNH   LDUPPERX
         AHI   R1,8                    INCREASE BY 8
         SRL   R1,3                    KNOCK OFF 3 LOW-ORDER BITS
         SLL   R1,3                    ...ALIGNS ON DW BOUNDARY
         LR    R9,R13                  SAVE ORIGINAL R13
         AR    R13,R1
         L     R15,88(R10)
         BASR  R14,R15
*
         BCTR  R5,0
         EX    R5,40(R11)
         LA    R5,1(R5)
*
         ST    R9,60(R13)
         STH   R5,64(R13)
         L     R15,16(R11)             DMNSUPP
         BASR  R14,R15
         LR    R4,R9
*
LDUPPERX DS    0H
         L     R14,80(R12)
         BR    R14
********************************
LDGSTR   DS    0H
         LTR   R0,R0
         JNZ   LDGSTRE
*
         LH    R0,4(R1)
         L     R1,0(R1)
*
LDGSTRE  DS    0H
         BR    R14
***********************************************
* LDECNUM - Processes EcNUMBER
*    Call: R1->EcNUMBER
*  Return: 60(R13) = EcNUMBER value
*          64(R13) -> byte after EcNUMBER
***********************************************
LDECNUM  DS    0H
         ST    R1,60(R13)
         L     R15,20(R11)  DMNECNB
         BR    R15
***********************************************
* LD1TAG - find the first tag
* Assumes R6-> beginning of section.
*    Sets R6->null before first tag
*         R5->size of tag section
**********************************************
LD1TAG   DS    0H
         ST    R14,80(R12)
LD1TAG1  CLI   0(R6),0
         JZ    LD1TAG2
         LA    R6,1(R6)
         J     LD1TAG1
LD1TAG2  LA    R1,1(R6)                Bypass the Null
         BRAS  R14,LDECNUM              Table reference
         L     R1,64(R13)
         BRAS  R14,LDECNUM              Length of tags
         LM    R5,R6,60(R13)
         L     R14,80(R12)
         BR    R14
********************************
*   POSITION TO THE MAIN ROOT
*   REGS:  R3 - CCB
*          R7 - RETURN INDEX ADDR
********************************
LDROOTX  DS    0H
         ST    R14,116(R12)
         L     R1,0(R3)                LOAD BASE ADDR
         ST    R1,60(R13)
         LA    R1,8(R1)
         ST    R1,64(R13)
         L     R15,12(R11)             DMNDREF
         BASR  R14,R15
         L     R7,60(R13)
         L     R14,116(R12)
         BR    R14
********************************
*   POSITION TO A FRAME INDEX
*   REGS:  R3 - CCB
*          R7 - RETURN INDEX ADDR
********************************
LDSECTX  DS    0H
         ST    R14,120(R12)
         L     R7,4(R3)                LOAD FRAME ADDR
LDSECX1  CLI   0(R7),0
         JZ    LDSECX2
         LA    R7,1(R7)
         J     LDSECX1
LDSECX2  LA    R1,1(R7)                Bypass the Null
         BRAS  R14,LDECNUM              Table reference
         L     R1,64(R13)
         BRAS  R14,LDECNUM              Length of tags
         L     R7,64(R13)              Addr of tags
         A     R7,60(R13)              + length of tags
         L     R14,120(R12)
         BR    R14
********************************
*  LOCATE SECTION
*  REGS:  R4 -> PATH
*         R5 -> PATH LENGTH
********************************
LDLOCS   DS    0H
         ST    R14,80(R12)
*
         STM   R4,R5,124(R12)          INITIAL SAVE OF PATH,LENGTH
         LTR   R5,R5                   NO PATH
         JNH   LDLOCS98                USE WHATEVER'S CURRENT
         CLI   0(R4),C'/'              ROOT?
         JNE   LDLOCS10
         XC    0(12,R3),0(R3)          CLEAR CCB EXCEPT FLAGS
         LA    R4,1(R4)
         BCTR  R5,0
         LTR   R5,R5
         JNH   LDLOCS97
         STM   R4,R5,124(R12)
*
LDLOCS10 DS    0H
         L     R7,0(R3)                BASE ADDR EXISTS?
         LTR   R7,R7
         JZ    LDLOCS20
         OI    106(R12),X'80'          NOT ROOT
         J     LDLOCS30
*
LDLOCS20 DS    0H
         L     R7,40(R10)              R7 -> POINTER TO BASE
         XC    4(4,R3),4(R3)           NO SECTION ADDR
*
LDLOCS30 DS    0H
         LM    R4,R5,124(R12)          Restore path,length
         LTR   R7,R7
         JZ    LDLOCS97
*
         ST    R7,0(R3)                STORE BASE ADDR IN CCB
         L     R7,4(R3)
         LTR   R7,R7
         JNZ   LDLOCS40
         BRAS  R14,LDROOTX             LOAD R7 WITH FRAME START
         J     LDLOCS50
*
LDLOCS40 DS    0H
         ST    R7,4(R3)
         BRAS  R14,LDSECTX
*
LDLOCS50 DS    0H
         BRAS  R14,LDINDX              NAVIGATE THE INDEX
*
         LTR   R2,R2                   ERROR?
         JZ    LDLOCS99
         CHI   R2,108                  SECTION NOT FOUND?
         JNE   LDLOCS99
*
         TM    106(R12),X'80'
         JO    LDLOCS99
         L     R7,0(R3)                RELOAD AT TOP
         L     R7,0(R7)
         J     LDLOCS30
*
LDLOCS97 DS    0H
         LA    R2,108
         J     LDLOCS99
*
LDLOCS98 DS    0H
         XR    R2,R2
*
LDLOCS99 DS    0H
         L     R14,80(R12)
         BR    R14
********************************
*   LOCATE NEXT TAG FORWARD
*   REGS:  R6 -> STARTING POINT
*          R6 -> RETURN TAG ADDR
*          R7 -> RETURN TAG LEN
*          R8 -> RETURN VALUE ADDR
*          R9 -> RETURN VALUE LEN
********************************
LDTAGF   DS    0H
         LR    R7,R6
         XR    R8,R8
         XR    R9,R9
*
         CLI   0(R7),X'00'             END OF TAGS?
         JE    LDTAGF97
*
LDTAGF10 DS    0H
         CLI   0(R7),X'00'
         JE    LDTAGF15
         LA    R7,1(R7)
         J     LDTAGF10
*
LDTAGF15 DS    0H
         LR    R8,R7
         SR    R7,R6                   R7 = TAG LENGTH
*
         LA    R8,1(R8)                R8 -> VALUE
         LR    R9,R8
*
LDTAGF20 DS    0H
         CLI   0(R9),X'00'
         JE    LDTAGF25
         LA    R9,1(R9)
         J     LDTAGF20
*
LDTAGF25 DS    0H
         SR    R9,R8                   R9 = VALUE LENGTH
         J     LDTAGF98
*
LDTAGF97 DS    0H
         LA    R2,106                  TAG NOT FOUND
         J     LDTAGF99
*
LDTAGF98 DS    0H
         XR    R2,R2
*
LDTAGF99 DS    0H
         BR    R14
********************************
*   LOCATE PREVIOUS TAG BACK
*   REGS:  R3 -> CCB
*          R6 -> STARTING POINT
*          R6 -> RETURN TAG ADDR
*          R7 -> RETURN TAG LEN
*          R8 -> RETURN VALUE ADDR
*          R9 -> RETURN VALUE LEN
********************************
LDTAGB   DS    0H
         ST    R14,120(R12)
         L     R4,4(R3)                LOAD CURRENT SECTION
         LTR   R4,R4
         JZ    LDTAGB97
*
LDTAGB01 CLI   0(R4),0
         JE    LDTAGB02
         LA    R4,1(R4)
         J     LDTAGB01
LDTAGB02 LA    R1,1(R4)
         BRAS  R14,LDECNUM
         L     R1,64(R13)
         BRAS  R14,LDECNUM
         L     R4,64(R13)
         LA    R4,1(R4)
         CR    R4,R6
         JNL   LDTAGB97                POSITIONED AT FIRST TAG
*
         AHI   R6,-2                   LAST BYTE OF VALUE PREV TAG
         XR    R7,R7
         LR    R8,R6
         LR    R9,R6
*
LDTAGB10 DS    0H
         CLI   0(R8),X'00'
         JE    LDTAGB15
         BCTR  R8,0
         J     LDTAGB10
*
LDTAGB15 DS    0H
         SR    R9,R8                   R9 = VALUE LENGTH
         LA    R8,1(R8)                R8 -> VALUE
*
         LR    R7,R8
         AHI   R7,-2                   LAST BYTE OF TAG NAME
         LR    R6,R7
*
LDTAGB20 DS    0H
         CLI   0(R6),X'00'
         JE    LDTAGB25
         BCTR  R6,0
         J     LDTAGB20
*
LDTAGB25 DS    0H
         SR    R7,R6                   R7 = NAME LENGTH
         LA    R6,1(R6)                R6 -> NAME
         J     LDTAGB98
*
LDTAGB97 DS    0H
         LA    R2,106                  TAG NOT FOUND
         J     LDTAGB99
*
LDTAGB98 DS    0H
         XR    R2,R2
*
LDTAGB99 DS    0H
         L     R14,120(R12)
         BR    R14
********************************
* LDINDX: Apply an index
*  Input:  R7->index
*          R4->section name
*          R3->cursor
*  Return: R2 = return code
*          4(R3) -> new section
*          R7    -> new section
********************************
LDINDX   DS    0H
         ST    R14,84(R12)             SAVE RETURN
*
LDINDX01 DS    0H
         XR    R2,R2                   CLEAR RC
         LHI   R8,-1                   ALLOW FOR INITIAL INCREMENT
*
LDINDX05 DS    0H
         LA    R7,1(R7)
         LA    R8,1(R8)
         CLI   0(R7),X'02'             NO INITIAL MATCH
         JE    LDINDX30
         CLI   0(R7),X'03'
         JE    LDINDX55
         CLI   0(R7),X'00'
         JE    LDINDX97                SECTION NOT FOUND
         CLC   0(1,R4),0(R7)
         JE    LDINDX10
         JL    LDINDX97                SECTION NOT FOUND
         J     LDINDX05
*
LDINDX10 DS    0H
         LA    R4,1(R4)
         AHI   R5,-1
         JM    LDINDX97
*
LDINDX15 DS    0H
         LA    R7,1(R7)
         CLI   0(R7),X'00'
         JNE   LDINDX15
*
         LA    R7,1(R7)                SKIP '00' BYTE
LDINDX20 DS    0H
         LTR   R8,R8
         JZ    LDINDX25
         CLI   0(R7),X'01'             SIBLING
         JNE   LDINDX96
         LA    R1,1(R7)                Bypass 01
         BRAS  R14,LDECNUM              Sibling length
         L     R7,64(R13)              After length
         A     R7,60(R13)              After sibling
         BCTR  R8,0
         J     LDINDX20
*
LDINDX25 DS    0H
         CLI   0(R7),X'01'             SIBLING
         JNE   LDINDX30
         LA    R1,1(R7)                Bypass 01
         BRAS  R14,LDECNUM              Sibling length
         L     R7,64(R13)              After length
*
LDINDX30 DS    0H
         CLI   0(R7),X'02'             COMBINED
         JNE   LDINDX50
         LA    R7,1(R7)
         LR    R8,R7
*
LDINDX35 DS    0H
         CLI   0(R8),X'00'
         JE    LDINDX45
         CLI   0(R8),X'03'
         JE    LDINDX45
*
LDINDX40 DS    0H
         LA    R8,1(R8)
         J     LDINDX35
*
LDINDX45 DS    0H
         SR    R8,R7
         LR    R9,R5                   R9 -> REMAINING INPUT LENGTH
         SR    R9,R8
         JM    LDINDX97
         BCTR  R8,0
         LTR   R8,R8
         JL    LDINDX96                NOTHING TO MATCH - BADFORMAT
         EX    R8,28(R11)
         JNE   LDINDX97                SECTION NOT FOUND HERE
         AR    R4,R8
         LA    R4,1(R4)                MAKE UP FOR EX DECREMENT
         LR    R5,R9                   RESTORE LENGTH
*
         AR    R7,R8                   MOVE INDEX POINTER
         LA    R7,1(R7)                MAKE UP FOR DECREMENT
*
LDINDX50 DS    0H
         CLI   0(R7),X'03'
         JE    LDINDX55
         CLI   0(R7),X'00'
         JE    LDINDX01
         BCTR  R7,0                    TO ALLOW FOR UNWANTED INCREMENT
         J     LDINDX01
*
LDINDX55 DS    0H
         CLI   0(R4),C'/'              ADDITIONAL CHARACTERS TO MATCH
         JNE   LDINDX60
         LA    R4,1(R4)
         BCTR  R5,0
         J     LDINDX65
*
LDINDX60 DS    0H                      03 found
         LTR   R5,R5
         JZ    LDINDX65
         LA    R1,1(R7)                Bypass 03
         BRAS  R14,LDECNUM
         L     R7,64(R13)              After frame ID
         BCTR  R7,0                    Back up for initial increment
         J     LDINDX01                MORE MATCHING NEEDED
*
LDINDX65 DS    0H
         OI    106(R12),X'80'          SECTION MATCH - TURN ON FLAG
         LA    R1,1(R7)                Bypass 03
         BRAS  R14,LDECNUM
         L     R1,60(R13)              Frame offset
         MVC   60(4,R13),0(R3)
         ST    R1,64(R13)
         L     R15,24(R11)             DMNFREF
         BASR  R14,R15
         L     R7,60(R13)
*
         LTR   R5,R5                   LENGTH
         JNH   LDINDX70                JUMP IF DONE
         ST    R7,4(R3)                TOP OF FRAME ADDR TO CCB
         BRAS  R14,LDSECTX             GET SECTION INDEX
         J     LDINDX01
*
LDINDX70 DS    0H
         ST    R7,4(R3)                STORE FRAME ADDRESS
         J     LDINDX98
*
LDINDX96 DS    0H
         LA    R2,101                  PARSEBADFORMAT
         J     LDINDX99
*
LDINDX97 DS    0H
         LA    R2,108                  SECTIONNOTFOUND
         J     LDINDX99
*
LDINDX98 DS    0H
         XR    R2,R2                   GOOD RETURN
*
LDINDX99 DS    0H
         L     R14,84(R12)             RESTORE RETURN ADDR
         BR    R14
**************************
*    DMNAPAGE
**************************
DMNAPAGE CSECT
DMNAPAGE AMODE ANY
DMNAPAGE RMODE ANY
*
* In all of the following routines, a free block
* has the following form
*    BLK+00 Pointer to next block in list (nextblk)
*    BLK+04 Size of block in bytes (size)
*    BLK+08 Bytes of block in use (used)
*    BLK+12 Pointer to list of free spaces in block (freelist)
*
*  Input arguments
*        60(R12) = Bytes needed
*                  Assumed to be already rounded to factor-of-8
*  Output results
*        60(R12)-> Page allocated or NULL if no page available
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,64  Only arguments
         L     R15,88(R10)
         BASR  R14,R15
* Keep track of highest advance of stack
         C     R13,28(R10) STKMAX
         JNH   APAG03
         ST    R13,28(R10)
*
* See if a page of adequate size already exists in page list
*        R8 is lag, R9 is blk, R7 is needed
*
APAG03   XR    R8,R8        reset lag pointer
         L     R7,60(R12)   R7 = bytes needed
* loop (blk := poolpages; blk; blk := blk->nextblk)
         L     R9,32(R10)   pool pages
APAG04   LTR   R9,R9        end of chain?
         JE    APAG10       Found nothing
* if (needed <= (size-16)) then break;
         L     R3,4(R9)     page->size
         AHI   R3,-16       page->size-16
         CR    R7,R3        needed <= (size-16)
         JNH   APAG07       yes, found one
*  move to the next block on the list
         LR    R8,R9        lag := blk
         L     R9,0(R9)     blk := blk->nextblk
         J     APAG04
*
* Found a block - relink around it
*
APAG07   LTR   R8,R8            lag?
         JE    APAG08           no, first one
         MVC   0(4,R8),0(R9)    lag->nextblk := blk->nextblk
         J     APAG19
APAG08   MVC   32(4,R10),0(R9)  poolpages := blk->nextblk
         J     APAG19           size stays as is
*
* No existing page of adequate size found
*
APAG10   AHI   R7,16            request additional 16 for control
* if (needed < pagesize) then needed := pagesize;
         C     R7,80(R10)
         JNL   APAG11
         L     R7,80(R10)
*
* use lowpage-needed if it fits
*
APAG11   L     R9,36(R10)      lowpage
         SR    R9,R7            - needed
* if blk >= r10->tos then can use it
         CR    R9,R13          top of stack
         JL    APAG90          can't do it
         ST    R9,36(R10)      new lowpage
         ST    R7,4(R9)        size = needed
*
* Arrive here when R9->answer block
*
APAG19   XC    0(4,R9),0(R9) reset nextblk
         LHI   R14,16        used = 16
         XR    R15,R15       freelist = NULL
         STM   R14,R15,8(R9)
         L     R6,4(R9)      size of block
         A     R6,20(R10)    memory inuse
         ST    R6,20(R10)
         C     R6,24(R10)    high water mark
         JL    APAG20
         ST    R6,24(R10)
*
APAG20   ST    R9,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
*
APAG90   DS    0H
         LHI   R15,-1             RC = -1 (out of memory)
         L     R1,84(R10)
         LM    R11,R14,8(R1)
         BR    R14                exit forever
**************************
*    DMNALC
**************************
DMNALC   CSECT
DMNALC   AMODE ANY
DMNALC   RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12) = Bytes needed  (Kept in R8)
*        64(R12)-> Pool          (Kept in R9)
*  Output results
*        60(R12)-> Space allocated
*  Temporaries
*        64(R12)-> best_blk
*        68(R12)-> best_lag
*        72(R12)=  best_size
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80  END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,ALC001
         DC    A(DMNAPAGE)
*
** Ensure R8 (needed) is multiple of 8
*
ALC001   LM    R8,R9,60(R12)  needed, pool
         LTR   R8,R8
         JH    ALC003
         XC    60(4,R12),60(R12)  Zero out return addr
         J     ALC024
*
ALC003   DS    0H
         AHI   R8,7
         SRL   R8,3
         SLL   R8,3
*
* search for a page with enough space
*   R7->page, R5->free block lag, R4->free block
*
*loop (page := pcb->firstpage; page; page := page->nextblk)
ALC006   L     R7,0(R9)   pool->firstpage
ALC007   LTR   R7,R7
         JE    ALC021
*  if (needed > (page->size - used)) then continue;
         L     R4,4(R7)   page->size
         S     R4,8(R7)   page->size - page->used
         CR    R8,R4      needed > result?
         JH    ALC020     yes, nothing in block we can use
* block may have free space big enough
*   zero out lag, best_lag, best_size
ALC008   XR    R5,R5
         ST    R5,68(R12)  best_lag
         ST    R5,72(R12)  best_size
* loop (blk := page->freeblks; blk; blk := blk->nextblk)
         L     R4,12(R7)    blk := page->freeblks
ALC009   LTR   R4,R4
         JE    ALC016
* if (needed <= blk->size) then consider block
         C     R8,4(R4)    needed <= blk->size
         JH    ALC014      keep looking
* if needed = size then perfect fit, take it
         JL    ALC012      look for smallest one
*
** exact fit - take block and link around it
*
         LR    R14,R8      page->used += needed
         A     R14,8(R7)
         ST    R14,8(R7)
* if lag then lag->nextblk := blk->nextblk;
*        else page->freeblks := blk->nextblk;
         LTR   R5,R5
         JE    ALC010
         MVC   0(4,R5),0(R4)
         J     ALC011
ALC010   MVC   12(4,R7),0(R4)
* return blk;
ALC011   ST    R4,60(R12)
         J     ALC024
*
** Free block larger than needed, find the largest one
*
* if size > best_size then save blk and lag
ALC012   L     R6,4(R4)   blk->size
         C     R6,72(R12) best_size
         JL    ALC014
         STM   R4,R6,64(R12)  best_blk, best_lag, best_size
* continue looking at blocks
ALC014   LR    R5,R4      lag := blk
         L     R4,0(R4)   blk := blk->nextblk
         J     ALC009
*
** Come here if no block matched exactly - take the smallest one
*
* ensure ((best_size - needed) >= 8)
ALC016   L     R14,72(R12)   best_size
         SR    R14,R8        - needed
         CHI   R14,8
         JL    ALC020        no leftover less than 8 bytes
* page->used += needed
         LR    R14,R8        needed
         A     R14,8(R7)     + page->used
         ST    R14,8(R7)
* R3 = leftover block = best_blk + needed;
         LM    R4,R5,64(R12) best_blk, best_lag
         LR    R3,R4
         AR    R3,R8        R3->area to free
* if best_lag then best_lag->nextblk := blk;
*             else page->freeblks := blk;
         LTR   R5,R5
         JE    ALC017
         ST    R3,0(R5)
         J     ALC018
ALC017   ST    R3,12(R7)     page->freeblks
*
ALC018   MVC   0(4,R3),0(R4) blk->nextblk := best_blk->nextblk
         L     R14,72(R12)   blk->size := best_size - needed
         SR    R14,R8
         ST    R14,4(R3)
* return best_blk;
         ST    R4,60(R12)
         J     ALC024
*
**  Next page if no free space large enough in current page
*
ALC020   L     R7,0(R7)    page->nextblk
         J     ALC007
*
**  No page has space for request
*
* page := do dmn.apage(needed+16);
ALC021   LR    R14,R8     needed
         AHI   R14,16
         ST    R14,60(R13)
         L     R15,0(R11)   DMNAPAGE
         BASR  R14,R15
         L     R7,60(R13) ->new page
* if not page then return page;
         LTR   R7,R7
         JNE   ALC022
         ST    R7,60(R12)   return zero
         J     ALC024
*
* Got a new page
*      - link it to chain of pool's pages
*
ALC022   MVC   0(4,R7),0(R9) page->next = pool->firstpage
         ST    R7,0(R9)      pool->firstpage = page
* Make one big free block
         LA    R6,16(R7)     blk := page + 16
         ST    R6,12(R7)     page->freeblks := blk;
* Zero blk->nextblk, set size
         XC    0(4,R6),0(R6)
         L     R14,4(R7)     blk->size := page->size - 16;
         AHI   R14,-16
         ST    R14,4(R6)
         J     ALC006        Try again to allocate in page
*
ALC024   LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNRLSE
**************************
DMNRLSE  CSECT
DMNRLSE  AMODE ANY
DMNRLSE  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input Arguments
*        60(R12)-> Space to be released  (R7)
*        64(R12) = Length of space       (R8)
*        68(R12)-> Pool                  (R9)
*  Local Variables
*        72(R12) = Space to be released (if multiple blocks)
*        76(R12) = Length of space
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,RLSE01
         DC    A(DMNRPAGE)   0
         DC    A(DMNRLSE)    4 (Recursive calls)
*
** Ensure R8 (needed) is multiple of 8
*
RLSE01   DS    0H
         XC    72(8,R12),72(R12)
         LM    R7,R9,60(R12)
         LTR   R8,R8
         JNH   RLSE24
         AHI   R8,7
         SRL   R8,3
         SLL   R8,3
*
** Search for the page containing the free space
**    R5->page, R6->lagging page, R4 = Size of page
**    R7->block to release, R8=its size, R9->POOL
*
RLSE05   XR    R6,R6
         XR    R4,R4
* loop (page := pool->firstpage; page; page := page->nextblk) {
         L     R5,0(R9)     page := pool->firstpage
RLSE06   LTR   R5,R5
         JE    RLSE24       shouldn't happen
         L     R4,4(R5)     size := page->size
* if (blk > page) and (blk < (page + size)) then break;
         CR    R7,R5
         JL    RLSE07       block below this page
         LR    R14,R5
         AR    R14,R4       page + size
         CR    R7,R14
         JL    RLSE08A      block in this page
RLSE07   LR    R6,R5        lag := page
         L     R5,0(R5)     page := page->nextblk
         J     RLSE06
*
** Found page containing block
** Run free chain, check for overlapping, and revise as needed
*
RLSE08A  DS    0H
         L     R1,12(R5)   R1->Low memory of freed chain
         LR    R3,R7       R3->Low memory of block to free
         LR    R4,R3
         AR    R4,R8       R4->High memory of block to free
*
RLSE08B  DS    0H
         LTR   R1,R1
         JZ    RLSE10
         LR    R2,R1
         A     R2,4(R1)    R2->High memory of freed block
*
         CR    R1,R3
         JH    RLSE08CA    free block before chain
         CR    R2,R3
         JH    RLSE08DA    oVERLAP AT END OF FREE BLOCK
         L     R1,0(R1)
         J     RLSE08B
*
RLSE08CA DS    0H
         CR    R1,R4
         JNL   RLSE10
         LR    R14,R1      overlap at end of block
         SR    R14,R4
         SR    R8,R14      NEW SIZE W/O OVERLAP
RLSE08CB DS    0H
         CR    R2,R4
         JNL   RLSE10
         ST    R3,72(R12)
         LR    R14,R2
         SR    R14,R4
         ST    R14,76(R12)
         J     RLSE10
*
RLSE08DA DS    0H
         LR    R7,R2       BEGIN AT END OF FREE BLOCK
         LR    R14,R4
         SR    R14,R2
         LR    R8,R14      SIZE
*
         L     R1,0(R1)
         LTR   R1,R1
         JZ    RLSE10
         LR    R2,R1
         A     R2,4(R1)    R2->High memory of freed block
         J     RLSE08CB
*********
*********
RLSE10   L     R3,8(R5)    page used
         SR    R3,R8       used - length of freed blk
         ST    R3,8(R5)    save it
* if page->used <= 16 then entire page can be freed
         LHI   R1,16
         CR    R3,R1
         JH    RLSE13
* if lag then lag->nextblk := page->nextblk
*        else pool->firstpage := page->nextblk
         LTR   R6,R6
         JE    RLSE11
         MVC   0(4,R6),0(R5)
         J     RLSE12
RLSE11   MVC   0(4,R9),0(R5)
RLSE12   XC    0(4,R5),0(R5)  zero page->nextblk for DMNRPAGE
*
** Call DMNRPAGE to release the entire page
*
         ST    R5,60(R13)
         L     R15,0(R11)   DMNRPAGE
         BASR  R14,R15
         J     RLSE24
*
** Still some used space in page - put block on free list
**   R6->free block, R4 = free block lag, R3 = free blk size
*
RLSE13   XR    R4,R4
*   loop (free := page->freeblks; free; free := next_blk)
         L     R6,12(R5)
RLSE14   LTR   R6,R6
         JE    RLSE20
         L     R3,4(R6)     free block size
* if (blk < free) then see if it can attach to front
         CR    R7,R6
         JNL   RLSE16
* if ((blk + length) = free) then can coalesce
         LR    R14,R7
         AR    R14,R8       blk + length
         CR    R14,R6
         JNE   RLSE20       if not, search no more
* blk->nextblk := free->nextblk;
         MVC   0(4,R7),0(R6)
* blk->size := length + size;
         AR    R3,R8
         ST    R3,4(R7)
* blk takes free's space in the chain
         LTR   R4,R4
         JE    RLSE15
         ST    R7,0(R4)
         J     RLSE24       return
RLSE15   ST    R7,12(R5)
         J     RLSE24       return
*
** blk > free, see if can attach to back
*
RLSE16   LR    R14,R6
         AR    R14,R3       free + free->size
         CR    R14,R7       is it our block?
         JNE   RLSE18       next free
* free->size += length;
         AR    R3,R8        free->size + length
         ST    R3,4(R6)     new free->size
* see if we can attach to the next block
         LR    R2,R3
         AR    R2,R6        R2->space after expanded free
         C     R2,0(R6)     is it next free block?
         JNE   RLSE24       no, done
* free->nextblk := blk->nextblk;
         MVC   0(4,R6),0(R2)
**S42: free->size += blk->size;
         A     R3,4(R2)
         ST    R3,4(R6)
         J     RLSE24       return
*
** Go on to next free block
RLSE18   LR    R4,R6
         L     R6,0(R6)
         J     RLSE14
*
** Fall out of loop thru free blocks - link this one in
*
RLSE20   ST    R8,4(R7)
         LTR   R4,R4
         JE    RLSE21
         MVC   0(4,R7),0(R4)
         ST    R7,0(R4)
         J     RLSE24
RLSE21   MVC   0(4,R7),12(R5)
         ST    R7,12(R5)
*
RLSE24   DS    0H
         L     R14,72(R12)
         LTR   R14,R14
         JZ    RLSE99
         MVC   60(8,R13),72(R12)
         MVC   68(4,R13),68(R12)
         L     R15,4(R11)
         BASR  R14,R15
RLSE99   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNRPAGE
**************************
DMNRPAGE CSECT
DMNRPAGE AMODE ANY
DMNRPAGE RMODE ANY
*FRAME dmn.rpage layout
*  R12 + 0000 Saved registers (60 bytes)
*        60(R12)-> Page list to free  (R9)
*  Local variables
*        64(R12) = Switch - need to check for low page
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R9,60(R12)      R9 = page to free
         XR    R8,R8           R8 = space released
         MVI   64(R12),0       No need yet to check for low page
*
** Cycle thru entire list of pages, put on R10->poolpage list
RPAG03   LTR   R9,R9
         JE    RPAG04
         A     R8,4(R9)        add size to released
         XC    8(4,R9),8(R9)   blk->used := 0
         L     R7,0(R9)        next block
         MVC   0(4,R9),32(R10) blk->next := r10->poolpages
         ST    R9,32(R10)      R10->poolpages := blk;
         MVI   64(R12),1       Need to check
         LR    R9,R7           next block
         J     RPAG03
*
** R10->inuse -= released
*
RPAG04   L     R14,20(R10)
         SR    R14,R8
         ST    R14,20(R10)
*
** search for blocks which might be low pages
RPAG05   CLI   64(R12),0
         JE    RPAG14
RPAG06   XR    R8,R8           R8 = previous block
* loop (blk := r10->poolpages; blk; blk := next_blk)
         L     R9,32(R10)      R9-> blk
RPAG07   LTR   R9,R9
         JE    RPAG14
         L     R7,0(R9)        R7 -> next block
* if blk != r10->lowpage then keep looking
         C     R9,36(R10)
         JE    RPAG08
         LR    R8,R9            prev = blk
         LR    R9,R7            blk = next block
         J     RPAG07
*
** Page is low page. Update the low page
**    Remove this one from list. Start over.
*
RPAG08   LR    R14,R9          blk
         A     R14,4(R9)          + blk->size
         ST    R14,36(R10)     R10->lowpage
* unlink
         LTR   R8,R8           previous block?
         JE    RPAG09
         ST    R7,0(R8)        yes, prev->nextblk = next block
         J     RPAG06
RPAG09   ST    R7,32(R10)      no, R10->poolpages = next block
         J     RPAG06
* Done
RPAG14   LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNRSET
**************************
DMNRSET  CSECT
DMNRSET  AMODE ANY
DMNRSET  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12) -> String Control Block
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,RSET01
         DC    A(DMNRLSE)
RSET01   L     R5,60(R12)    R5->SCB
         L     R6,0(R5)      R6->String
         LTR   R6,R6
         JZ    RSET02
         LH    R7,6(R5)      R7 = string space
         LTR   R7,R7
         JZ    RSET02
         L     R8,8(R5)      R8 -> Pool
         LTR   R8,R8
         JZ    RSET02
         STM   R6,R8,60(R13)
         L     R15,0(R11)    DMNRLSE
         BASR  R14,R15
RSET02   XC    0(8,R5),0(R5) No string
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNNEW
**************************
DMNNEW   CSECT
DMNNEW   AMODE ANY
DMNNEW   RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12) = item count
*        64(R12) = item size
*        68(R12) -> POOL
*  On return
*        60(R12) -> space allocated (not zeroed)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,NEW001
         DC    A(DMNALC)
NEW001   LM    R7,R9,60(R12) size,count,pool
         MSR   R8,R7        R8 = Total size needed
         AHI   R8,8         double word overhead
         STM   R8,R9,60(R13) space needed, Pool
         L     R15,0(R11)   DMNALC
         BASR  R14,R15
         L     R2,60(R13)
         MVC   0(4,R2),64(R12)   move size,count into overhead
         MVC   4(4,R2),60(R12)
         AHI   R2,8              start of array
         ST    R2,60(R12)        return answer
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNFREE
**************************
DMNFREE  CSECT
DMNFREE  AMODE ANY
DMNFREE  RMODE ANY
*FRAME dmn.free layout
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12)-> Pool
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,64 END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,FREE01
         DC    A(DMNRPAGE)
FREE01   L     R9,60(R12)   R9->POOL
         OC    0(8,R9),0(R9)
         JZ    FREE04
         C     R9,44(R10)   Is this current pool?
         JNE   FREE02
         MVC   44(4,R10),4(R9)
FREE02   L     R8,0(R9)     R8->firstpage
         LTR   R8,R8        Any pages to free?
         JE    FREE04
         ST    R8,60(R13)   First page to free
         L     R15,0(R11)   DMNRPAGE
         BASR  R14,R15
         XC    0(8,R9),0(R9) reset pool->firstpage
FREE04   LM    R0,R14,0(R12)
         BR    R14
**************************
*    LJMPLOCL
**************************
LJMPLOCL DSECT
LJMPREGS DS    15F     Saved registers
LJMPSAVE DS    F       ->Saved R9,R10,R11,R12,R13,R14,44(R10)
*                        from long jump SET statement
LJMPRC   DS    F       Return code for R15
         DS    0D
LJMPLGTH EQU   *-LJMPLOCL
**************************
*    V40LJMP
**************************
V40LJMP  CSECT
V40LJMP  AMODE ANY
V40LJMP  RMODE ANY
*  Input arguments
*        60(R12)-> Saved R9,R10,R11,R12,R13,R14,44(R10)
*                   from long jump SET statement
*        64(R12)-> Return code for R15
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,LJMPLGTH END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,LJMP01
LJMP000  EQU   *
LJMPRPG  DC    A(DMNRPAGE)
*
         USING LJMP000,R11
         USING LJMPLOCL,R12
*
LJMP01   L     R7,LJMPSAVE  Long jump save area
LJMP02   L     R9,44(R10)   Current pool
         C     R9,24(R7)    Get back to here
         JE    LJMP04
         LTR   R9,R9        All gone?
         JE    LJMP04
         MVC   44(4,R10),4(R9)
*
LJMP03   L     R8,0(R9)     R8->firstpage
         LTR   R8,R8        Any pages to free?
         JE    LJMP02
         ST    R8,60(R13)   First page to free
         L     R15,LJMPRPG  DMNRPAGE
         BASR  R14,R15
         J     LJMP02
*
LJMP04   L     R15,LJMPRC
         LM    R9,R14,0(R7)  Restore from 'set exit'
         BR    R14            Return after set exit
**************************
*    DMNOOM
**************************
DMNOOM   CSECT
DMNOOM   AMODE ANY
DMNOOM   RMODE ANY
         C     R13,36(R10)   Stack; low page
         BNHR  R14           OK - return
         LHI   R15,-1        Out of memory - exit with -1
         L     R1,84(R10)
         LM    R12,R14,12(R1)
         BR    R14
**************************
*    DMNS2I
**************************
DMNS2I   CSECT
DMNS2I   AMODE ANY
DMNS2I   RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 ARGUMENTS
*      + 0060 STRING OR SCB / INTEGER RETURN
*      + 0064 STRING LENGTH OR 0 FOR SCB
*      + 0068 TEMP SCB     (12 BYTES)
*      + 0072 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,72          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         J     L00300FW            ALIGN ON FULL WORD
L00300FW DS    0F
         BRAS  R11,L00300
         DC    A(DMNISCB)
         DC    A(DMNGETI)
*
L00300   DS    0H
         MVC   60(8,R13),60(R12)  POINTER TO STRING OR SCB; LENGTH
         LA    R2,68(R12)
         ST    R2,68(R13)
         L     R15,0(R11)
         BASR  R14,R15
*
         L     R2,68(R13)
         L     R3,0(R2)
         ST    R3,64(R13)
         LH    R3,4(R2)
         ST    R3,68(R13)
         L     R15,4(R11)
         BASR  R14,R15
*
         MVC   60(4,R12),60(R13)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNI2S
**************************
DMNI2S   CSECT
DMNI2S   AMODE ANY
DMNI2S   RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 ARGUMENTS
*      + 0060 INTEGER VALUE
*      + 0064 STRING OR SCB POINTER
*      + 0068 LENGTH OR 0 FOR SCB
*      + 0072 WORK AREA (16 BYTES)
*      + 0088 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,88          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         J     L00400FW            ALIGN ON FULL WORD
L00400FW DS    0F
         BRAS  R11,L00400
         DC    A(DMNPUTI)
         DC    A(DMNOSTR)
*
L00400   DS    0H
         LH    R8,70(R12)
         LTR   R8,R8
         JZ    L00402             CONVERT INTO WORK AREA
*
         MVC   64(4,R13),64(R12)  STRING
         ST    R8,68(R13)
         J     L00404
*
L00402   DS    0H
         LA    R2,72(R12)         WORK AREA
         ST    R2,64(R13)
         LA    R2,16              LENGTH OF WORK AREA
         ST    R2,68(R13)
*
L00404   DS    0H
         MVC   60(4,R13),60(R12)  INTEGER VALUE
         L     R15,0(R11)         PUTI
         BASR  R14,R15
*
         LTR   R8,R8
         JNZ   L00495             DONE FOR STRING
*
         LA    R2,72(R12)
         LA    R3,16
L00410   DS    0H                 FIND START OF SIGNIFICANCE
         CLI   0(R2),C' '
         JNE   L00420
         LA    R2,1(R2)
         BRCT  R3,L00410
*
L00420   DS    0H
         MVC   60(4,R13),64(R12)
         ST    R2,64(R13)
         ST    R3,68(R13)
         XC    72(8,R13),72(R13)
         L     R15,4(R11)         DMNOSTR
         BASR  R14,R15
*
L00495   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    F2SLOCL
**************************
F2SLOCL  DSECT
F2SREGS  DS    15F             SAVED REGISTERS
F2SSRC   DS    F               ->Floating point source
F2SDEST  DS    F               ->String destination
F2SPREC  DS    H               Precision
F2SLEN   DS    H               Destination length / 0
* Program variables
F2STSTR  DS    CL64            Temporary string target
         DS    0D
F2SLGTH  EQU   *-F2SREGS
**************************
*    DMNF2S
**************************
DMNF2S   CSECT
DMNF2S   AMODE ANY
DMNF2S   RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,F2SLGTH         END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,F2S100
F2SLITR  EQU   *
F2SPUTF  DC    A(V40PUTF)
F2SSCPY  DC    A(DMNSCPY)
         USING F2SLITR,R11
         USING F2SLOCL,R12
*
F2S100   DS    0H
         LH    R8,F2SPREC
         CHI   R8,31              Max Precision = 31
         JNH   F2S200
         LHI   R8,31
*
F2S200   DS    0H
         ST    R8,60(R13)         Precision
         L     R1,F2SSRC
         MVC   64(8,R13),0(R1)    FP Number
         LA    R1,F2STSTR
         ST    R1,72(R13)         String out location
         L     R15,F2SPUTF        DMNPUTF
         BASR  R14,R15
*
         LA    R2,F2STSTR         -> String result
         CLI   F2STSTR,C'0'
         JE    F2S300
         AHI   R2,1
*
* Find start of significance
F2S300   DS    0H
         CLI   0(R2),C'0'         R2 -> Start of significance
         JNE   F2S350
         AHI   R2,1
         J     F2S300
*
F2S350   DS    0H
         CLI   0(R2),C'.'         If start of signficance = '.'
         JNE   F2S400             ...back up for a leading zero
         AHI   R2,-1
*
* Find decimal
F2S400   DS    0H
         LR    R3,R2
F2S410   DS    0H
         CLI   0(R3),C'.'         R3 -> Decimal point
         JE    F2S500
         AHI   R3,1
         J     F2S410
*
F2S500   DS    0H
         LTR   R7,R8
         JNL   F2S550             If precision < 0
         LHI   R7,15              ...default to 15
*
F2S550   DS    0H
         SR    R3,R2              R3 = Length to decimal
         AHI   R3,1               Allow for decimal
         AR    R3,R7              Add precision
*
* Set sign
         CLI   F2STSTR,C'-'
         JNE   F2S600
         AHI   R2,-1
         AHI   R3,1
         MVI   0(R2),C'-'
*
* Remove extraneous zeros if precision not specified
F2S600   DS    0H
         LR    R5,R2
         AR    R5,R3
         AHI   R5,-1              R5 -> Last digit
         LTR   R8,R8
         JNL   F2S660
F2S650   DS    0H
         CLI   0(R5),C'0'
         JNE   F2S660
         AHI   R3,-1
         AHI   R5,-1
         J     F2S650
*
F2S660   DS    0H
         CLI   0(R5),C'.'         No trailing decimal point
         JNE   F2S700
         AHI   R3,-1
*
* Copy to output area
F2S700   DS    0H
         MVC   60(4,R13),F2SDEST
         MVC   68(2,R13),F2SLEN
         ST    R2,64(R13)
         STH   R3,70(R13)
         L     R15,F2SSCPY
         BASR  R14,R15
*
F2SEXIT  DS    0H
         LM    R0,R14,F2SREGS
         BR    R14
**************************
*    DMNSTBL
**************************
DMNSTBL  CSECT
DMNSTBL  AMODE ANY
DMNSTBL  RMODE ANY
*  R12  +0000  SAVED REGISTERS  (60 BYTES)
*       +0060  STRING / SCB
*       +0064  STRING LENGTH / 0
*       +0066  NUMBER OF CASES
*       +0068  LARGEST CASE STRING
*       +0070  CASE STRING ALLOCATION
*       +0072  REGISTER SAVE AREA (16 BYTES)
*       +0088  END
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,88      END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
STBL000  DS    0H
         L     R14,56(R12)         Reload R14
         LH    R3,64(R12)          R3 -> STRING LENGTH
         LTR   R3,R3
         JZ    STBLSCB
         L     R2,60(R12)          R2 -> STRING ADDR
         J     STBL0100
*
STBLSCB  DS    0H
         L     R1,60(R12)
         L     R2,0(R1)            R2 -> ADDR
         LH    R3,4(R1)            R3 -> LENGTH
         LTR   R3,R3               Is there length?
         JNZ   STBL0100
         LR    R2,R12              No - make sure address is valid
*
STBL0100 DS    0H
         LH    R5,70(R12)          R5 -> CASE LENGTH / X'00' PAD BYTE
         LH    R6,66(R12)          R6 -> NUMBER OF CASES
         LTR   R6,R6
         JNH   STBL9995
         STM   R2,R5,72(R12)       SAVE CLCL REGISTERS
*
STBL0200 DS    0H
         CR    R3,R5
         JH    STBL0300            STRING CAN'T BE > THAN CASE
         LM    R2,R5,72(R12)       RESTORE FOR CLCL
         LA    R4,4(R14)           R4 -> TEST CASE ADDR
         CLCL  R2,R4
         JE    STBL9995
*
STBL0300 DS    0H
         AH    R14,70(R12)         LENGTH OF CASE ALLOCATION
         LA    R14,4(R14)          LENGTH OF JUMP INSTRUCTION
         BRCT  R6,STBL0200
*
STBL9995 DS    0H
         ST    R14,56(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNECNB
**************************
DMNECNB  CSECT
DMNECNB  AMODE ANY
DMNECNB  RMODE ANY
*  R12  +0000  SAVED REGISTERS  (60 BYTES)
*       +0060  ECNUMBER ADDRESS
*       +0064  FLAGS
*              ..RETURN..
*       +0060  ECNUMBER VALUE - INTEGER
*       +0064  UPDATED ADDRESS PAST ECNUMBER
*       +0072  END
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,72      END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R2,60(R12)          R2 -> ECNUMBER ADDRESS
         MVC   64(1,R12),0(R2)
         XR    R4,R4               R4 -> ECNUMBER VALUE
         IC    R4,0(R2)
*
         TM    64(R12),X'80'       EXTENDED BIT OFF?
         JNO   ECNB990             ...ALL DONE
*
         LR    R3,R4               MOVE VALUE TO WORK REGISTER
         SLL   R3,26               ZERO NON-LENGTH BITS
         SRL   R3,29               R3 -> LENGTH OF ECNUMBER
*
         SLL   R4,29               ZERO NON-VALUE BITS
         SRL   R4,29
         LTR   R3,R3
         JNH   ECNB900             IF ZERO - CHECK FOR NEGATIVE
*
ECNB100  DS    0H
         SLL   R4,8                MAKE ROOM FOR BYTE
         LA    R2,1(R2)            POSITION NEXT BYTE
         IC    R4,0(R2)            MOVE INTO VALUE REGISTER
         BRCT  R3,ECNB100          BRANCH UNTIL ZERO
*
ECNB900  DS    0H
         TM    64(R12),X'40'       SIGN BIT
         JNO   ECNB990
         LNR   R4,R4               MAKE VALUE NEGATIVE
*
ECNB990  DS    0H
         ST    R4,60(R12)
         LA    R2,1(R2)
         ST    R2,64(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    ROUNLOCL
**************************
ROUNLOCL DSECT
ROUNREGS DS    15F         SAVED REGISTERS
ROUNPREC DS    F           Precision
ROUNVALU DS    D           BFP
* Local variables
ROUNFREG DS    5D          Saved FPR
*
         DS    0D
ROUNLGTH EQU   *-ROUNLOCL
         ORG   ROUNVALU
ROUNRTRN DS    D
**************************
*    DMNROUN
**************************
DMNROUN  CSECT
DMNROUN  AMODE ANY
DMNROUN  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,ROUNLGTH
         L     R15,88(R10)
         BASR  R14,R15
         STD   F0,72(R12)
         STD   F2,80(R12)
         STD   F4,88(R12)
         STD   F6,96(R12)
         BRAS  R11,ROUN100
*
ROUN000  EQU   *
         DS    0D
ROUNEPS  DC    DB'0.00000000000000022204460492503131'
ROUNONE  DC    DB'1'
ROUNTEN  DC    DB'10'
ROUNHALF DC    DB'.5'
*
         USING ROUN000,R11
         USING ROUNLOCL,R12
ROUN100  DS    0H
         LD    F0,ROUNVALU
         LPDBR F0,F0            F0 = Factor
*
         LD    F2,ROUNONE       Start divisor with one
         L     R2,ROUNPREC      R2 = Precision
         LPR   R3,R2            R3 = Absolute value of precision
         JZ    ROUN300          Zero precision - skip loop
*
ROUN200  DS    0H
         MDB   F2,ROUNTEN       F2 = Divisor
         BRCT  R3,ROUN200
*
ROUN300  DS    0H
         LD    F4,ROUNEPS       F4 = EPS factor
         MDBR  F4,F0
*
         ADBR  F4,F0            Factor + EPS
         MDBR  F4,F2            * Divisor
         ADB   F4,ROUNHALF      + .5
         FIDBR F4,5,F4          Truncate
         DDBR  F4,F2            / Divisor
*
         LD    F0,ROUNVALU
         LTDBR F0,F0
         JNL   ROUNEXIT
         LNDBR F4,F4
*
ROUNEXIT DS    0H
         STD   F4,ROUNRTRN      Load return value
         LD    F0,ROUNFREG
         LD    F2,ROUNFREG+8
         LD    F4,ROUNFREG+16
         LD    F6,ROUNFREG+24
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    SET9LOCL
**************************
SET9LOCL DSECT
SET9REGS DS    15F         SAVED REGISTERS
SET9ADDR DS    F           ADDRESS OF STORAGE AREA
SET9SIZE DS    F           SIZE OF STORAGE AREA
SET9NAME DS    CL8         CSECT NAME OF STORAGE SETUP
*
         DS    0D
SET9LGTH EQU   *-SET9LOCL
*
         ORG   SET9ADDR
SET9RTRN DS    F           RETURN ADDRESS FOR REG 9
**************************
*    DMNSETR9
**************************
DMNSETR9 CSECT
DMNSETR9 AMODE ANY
DMNSETR9 RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,SET9LGTH
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,SET90100
SET9000  EQU   *
SET9ALC  DC    A(DMNALC)
*
         USING SET9000,R11
         USING SET9LOCL,R12
SET90100 DS    0H
         LA    R2,92(R10)  R2 -> PREVIOUS ELEMENT
SET90110 DS    0H
         L     R3,0(R2)    R3 -> CURRENT ELEMENT
         LTR   R3,R3
         JZ    SET90300    NOT IN CHAIN
         CLC   SET9NAME,4(R3)
         JE    SET90200
         LR    R2,R3
         J     SET90110
*
* Class storage found
SET90200 DS    0H
         AHI   R3,SET9OVHD     BYPASS OVERHEAD
         ST    R3,SET9RTRN
         J     SET9DONE        ...AND RETURN
*
* Class storage not found - allocate and address
SET90300 DS    0H
         L     R3,SET9SIZE     SIZE OF AREA FOR CLASS VARIABLES
         AHI   R3,SET9OVHD     ... + OVERHEAD
         ST    R3,60(R13)
         MVC   64(4,R13),96(R10)   POINTER TO GLOBAL POOL
         L     R15,SET9ALC     DMNALC
         BASR  R14,R15
*
         L     R9,60(R13)      SAVE ADDRESS OF STORAGE
         ST    R9,0(R2)        PUT LOCATION IN CHAIN
         XC    0(4,R9),0(R9)   NEXT POINTER IS ZERO
         MVC   4(8,R9),SET9NAME  INITIALIZATION ROUTINE
*
         AHI   R9,SET9OVHD     ALLOW FOR OVERHEAD
         ST    R9,60(R13)      STORE BACK IN STACK
         L     R15,SET9ADDR    CLASS INITIALIZATION ROUTINE
         BASR  R14,R15
         ST    R9,SET9RTRN
*
SET9DONE DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    CNUMLOCL
**************************
CNUMLOCL DSECT
CNUMREGS DS    15F         SAVED REGISTERS
CNUMRTRN DS    F           ADDRESS OF RETURN VALUE
CNUMATTR DS    F           ADDRESS OF ATTRIBUTE TABLE
*
         DS    0D
CNUMLGTH EQU   *-CNUMLOCL
**************************
*    DMNCNUM
**************************
DMNCNUM  CSECT
DMNCNUM  AMODE ANY
DMNCNUM  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,CNUMLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,CNUM0100
CNUM000  EQU   *
CNUMALC  DC    A(DMNALC)
*
         USING CNUM000,R11
         USING CNUMLOCL,R12
CNUM0100 DS    0H
         XR    R2,R2          R2 = Count
         LA    R3,104(R10)    R3 -> Pointer to element
         J     CNUM0150
CNUM0110 DS    0H
         AHI   R2,1            Increment count
         LTR   R3,R3
         JZ    CNUM0300        Not in chain
         C     R9,4(R3)        Compare against class variable pointer
         JE    CNUMDONE
CNUM0150 DS    0H
         LR    R4,R3
         L     R3,0(R4)
         J     CNUM0110
*
CNUM0300 DS    0H
         LHI   R5,16
         ST    R5,60(R13)
         LA    R5,148(R10)     Global pool pointer
         ST    R5,64(R13)
         L     R15,CNUMALC     DMNALC
         BASR  R14,R15
*
         L     R3,60(R13)      R4 -> New storage
         ST    R3,0(R4)        Add to chain
*  Load values and return
         XC    0(4,R3),0(R3)
         ST    R9,4(R3)
         MVC   8(4,R3),CNUMATTR
         XC    12(4,R3),12(R3) Unused
*
CNUMDONE DS    0H
         L     R5,CNUMRTRN
         ST    R2,0(R5)
         LM    R0,R14,CNUMREGS
         BR    R14
**************************
*    ALPHLOCL
**************************
ALPHLOCL DSECT
ALPHREGS DS    15F         SAVED REGISTERS
ALPHADDR DS    F           ADDRESS OF STRING
ALPHLEN  DS    F           LENGTH OF STRING
ALPHFLAG DS    H           RUN FLAGS
*
         DS    0D
ALPHLGTH EQU   *-ALPHLOCL
*
         ORG   ALPHADDR
ALPHRTRN DS    F           RETURN 0 IF ALL ALPHA
**************************
*    DMNALPHA
**************************
DMNALPHA CSECT
DMNALPHA AMODE ANY
DMNALPHA RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,ALPHLGTH
         L     R15,88(R10)
         BASR  R14,R15
*
         USING ALPHLOCL,R12
ALPH0100 DS    0H
         LM    R2,R3,ALPHADDR    R2 -> STRING; R3 = LENGTH
         XC    ALPHRTRN,ALPHRTRN   INITIALIZE RETURN TO OK
         XC    ALPHFLAG,ALPHFLAG
         XR    R1,R1
         LTR   R3,R3
         JZ    ALPHDONE
*
ALPH0200 DS    0H
         CLI   0(R2),C'a'
         JL    ALPHNO
         CLI   0(R2),C'i'
         JNH   ALPHYES
         CLI   0(R2),C'j'
         JL    ALPHNO
         CLI   0(R2),C'r'
         JNH   ALPHYES
         CLI   0(R2),C's'
         JL    ALPHNO
         CLI   0(R2),C'z'
         JNH   ALPHYES
         CLI   0(R2),C'A'
         JL    ALPHNO
         CLI   0(R2),C'I'
         JNH   ALPHYES
         CLI   0(R2),C'J'
         JL    ALPHNO
         CLI   0(R2),C'R'
         JNH   ALPHYES
         CLI   0(R2),C'S'
         JL    ALPHNO
         CLI   0(R2),C'Z'
         JNH   ALPHYES
*
ALPHNO   DS    0H
         OI    ALPHFLAG,ALPHAN
         J     ALPHADV
*
ALPHYES  DS    0H
         OI    ALPHFLAG,ALPHAY
         J     ALPHADV
*
ALPHADV  DS    0H
         LA    R2,1(R2)
         BRCT  R3,ALPH0200
*
         XR    R1,R1
         TM    ALPHFLAG,ALPHAY
         JO    ALPHD1
         LHI   R1,1
         J     ALPHDONE
ALPHD1   DS    0H
         TM    ALPHFLAG,ALPHAN
         JNO   ALPHDONE
         LHI   R1,-1
*
ALPHDONE DS    0H
         ST    R1,ALPHRTRN
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    LONGLOCL
**************************
LONGLOCL DSECT
LONGREGS DS    15F         SAVED REGISTERS
LONGFUNC DS    F           Function 0 - H2F, Nonzero - F2H
LONGFLOT DS    D
LONGHEX  DS    F
*
LONGWORK DS    F
LONGSVF0 DS    D
LONGSVF2 DS    D
         DS    0D
LONGLGTH EQU   *-LONGLOCL
**************************
*    DMNLONG
**************************
DMNLONG  CSECT
DMNLONG  AMODE ANY
DMNLONG  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,LONGLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,LONG100
*
LONG000  EQU   *
LONGHOB  DC    DB'2147483648'
LONGZERO DC    DB'0'
*
         USING LONG000,R11
         USING LONGLOCL,R12
LONG100  DS    0H
         STD   F0,LONGSVF0
         STD   F2,LONGSVF2
         L     R1,LONGFUNC
         LTR   R1,R1
         JNZ   LONG200
*
*  Hex to Float Conversion
         L     R2,LONGHEX
         LD    F2,LONGZERO
         TM    LONGHEX,X'80'      HOB on?
         JNO   LONG110
         ST    R2,LONGWORK
         NI    LONGWORK,X'7F'     Turn off HOB
         L     R2,LONGWORK
         LD    F2,LONGHOB
LONG110  DS    0H
         CDFBR F0,R2
         ADBR  F0,F2
         STD   F0,LONGFLOT
         J     LONGDONE
*
*  Float to Hex Conversion
LONG200  DS    0H
         LD    F0,LONGFLOT
         CDB   F0,LONGHOB          Long value?
         JNL   LONG210
         CFDBR R2,5,F0             Truncate fractional part
         ST    R2,LONGHEX
         J     LONGDONE
LONG210  DS    0H
         SDB   F0,LONGHOB
         CFDBR R2,5,F0
         ST    R2,LONGWORK
         OI    LONGWORK,X'80'
         MVC   LONGHEX,LONGWORK
*
LONGDONE DS    0H
         LD    F0,LONGSVF0
         LD    F2,LONGSVF2
         LM    R0,R14,LONGREGS
         BR    R14
**************************
*    PACKLOCL
**************************
PACKLOCL DSECT
PACKREGS DS    15F          Saved registers
PACKCNTL DS    F            -> Control Array
PACKDEST DS    F            -> Destination SCB
PACKARGS DS    F            Array of source fields
         DS    0D
PACKLGTH EQU   *-PACKLOCL
*
         ORG   PACKCNTL
PACKRTRN DS    F
**************************
*    PACKLOCV
**************************
PACKLOCV DSECT
PACKSF0  DS    D            Save F0
PACKSF2  DS    D            Save F2
PACKOUTS DS    F            Start of output string
PACKDSTC DS    F            Current destination address
PACKDDAF DS    F            -> Default date
PACKDTIF DS    F            -> Default time
PACKFMTE DS    F            End of format string
PACKLERR DS    F            LastError save area
PACKTRGC DS    F            -> Output area
PACKR14  DS    F            Save area for R14
PACKTPTR DS    F            Temporary pointer
*
PACKARRC DS    H            Array counter
PACKARRT DS    H            Array count target
PACKARGC DS    H            Argument counter
PACKFMTL DS    H            Current format item length
PACKFMTC DS    H            Number of remaining format items
PACKDDAL DS    H            Default date length
PACKDTIL DS    H            Default time length
PACKDWID DS    H            Default width
PACKELEL DS    H            Length of element
PACKFLGS DS    H            Flags
*                              ...Retain spaces (unpack)
PACKFLGA DS    H            Program flags
*
PACKSCB  DS    3F           Temporary scb output
PACKSCBB DS    3F           Scb work field (source only - no pool)
PACKFMTM DS    3F           Modifiable copy of format string
PACKPOOL DS    2F           Pool
*
PACKDLIM DS    CL1          Delimiter
PACKPADC DS    CL1          Pad character
         DS    0D
PACKLOLN EQU   *-PACKLOCV
**************************
*    V40PACK
**************************
V40PACK  CSECT
V40PACK  AMODE ANY
V40PACK  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,PACKLGTH
         BRAS  R11,PACKSETS
PACK000  EQU   *
PACKDB10 DC    DB'10'
PACKI2S  DC    A(DMNI2S)
PACKF2S  DC    A(DMNF2S)
PACKPUTD DC    A(DMNPUTDX)
PACKSCPY DC    A(DMNSCPY)
PACKSINS DC    A(DMNSINS)
PACKCOPY DC    A(DMNCOPY)
PACKFREE DC    A(DMNFREE)
PACKLONG DC    A(DMNLONG)
PACKDD   DC    CL6'%m%d%Y'
PACKDT   DC    CL4'%H%M'
PACKQUOT DC    CL1'"'
         DS    0H
PACKCMPR CLC   0(0,R15),6(R3)
*
         USING PACK000,R11
         USING PACKLOCL,R12
         USING PACKLOCV,R2
* Set up stack
PACKSETS DS    0H
         L     R1,PACKCNTL
         LH    R1,4(R1)
         SLL   R1,2               Num args * 4
         AR    R13,R1
         AHI   R13,7              Align on DW boundary
         SRL   R13,3
         SLL   R13,3
         LR    R2,R13             R2 -> Local variables
         AHI   R13,PACKLOLN
         L     R15,88(R10)
         BASR  R14,R15
* Set up locals
         STD   F0,PACKSF0
         STD   F2,PACKSF2
         L     R1,64(R10)         Reset Lasterror
         XC    16(4,R1),16(R1)
         XC    PACKLOCV(PACKLOLN),PACKLOCV
         ST    R13,PACKOUTS
         LA    R1,PACKARGS
         ST    R1,PACKDSTC        -> Sources
         LA    R1,PACKPOOL
         ST    R1,PACKFMTM+8
         ST    R1,PACKSCB+8
         XC    PACKSCBB+8(4),PACKSCBB+8
* Copy format string into local variable (make modifiable)
         LA    R1,PACKFMTM
         ST    R1,60(R13)
         XC    68(2,R13),68(R13)
         L     R1,PACKCNTL
         ST    R1,64(R13)
         MVC   70(2,R13),0(R1)
         L     R15,PACKSCPY       DMNSCPY
         BASR  R14,R15
         L     R3,PACKFMTM        R3 -> Format string
         LH    R1,PACKFMTM+4
         AR    R1,R3
         ST    R1,PACKFMTE        Store end address of format string
         MVC   PACKARGC,4(R3)     # Arguments
* Set default date and time formats
         LA    R1,PACKDD
         ST    R1,PACKDDAF
         LHI   R1,6               L'PACKDD
         STH   R1,PACKDDAL
*
         LA    R1,PACKDD
         ST    R1,PACKDTIF
         LHI   R1,10              L'PACKDD+L'PACKDT
         STH   R1,PACKDTIL
*
         ST    R13,PACKTRGC       -> Pointer to target write area
         L     R1,PACKFMTM
         LA    R3,6(R1)           R3 -> Format string
*
**********************
* MAIN PROCESSING LOOP
**********************
PACKLOOP DS    0H
         L     R1,64(R10)
         L     R1,16(R1)
         LTR   R1,R1
         JZ    PACKLOOA
         ST    R1,PACKLERR
*
PACKLOOA DS    0H
         NI    PACKFLGA,PACKFLAR  Clear program flags except array
         TM    PACKFLGA,PACKFLAR  Array?
         JNO   PACKLOOG
         LH    R15,0(R3)     Don't array process non-fields
         CHI   R15,4         ...such as default date format
         JE    PACKLOOG
         CHI   R15,11             ...delimiter
         JE    PACKLOOG
         CHI   R15,15             ...default time
         JE    PACKLOOG
         CHI   R15,16             ...width
         JE    PACKLOOG
         CLC   PACKARRT,PACKARRC  Count => Target?
         JNH   PACKLOOC
         LH    R1,PACKARRC        ...increment and go again
         AHI   R1,1
         STH   R1,PACKARRC
         J     PACKBRCH
*
PACKLOOC DS    0H                 End of array processing
         NI    PACKFLGA,X'7F'     X'FF' - PACKFLAR
         XC    PACKARRT,PACKARRT
         XC    PACKARRC,PACKARRC
*
PACKLOOG DS    0H
         XC    PACKFLGS,PACKFLGS  Reset flags
*
         AH    R3,PACKFMTL
         C     R3,PACKFMTE        End of format string?
         JNL   PACKSETZ           ...return 0
*
         LH    R1,PACKFMTC        Increment format count
         AHI   R1,1
         STH   R1,PACKFMTC
* Branch to the correct routine for this format
PACKBRCH DS    0H
         LH    R15,0(R3)          Format code
         CHI   R15,19
         JH    PACKSETR           Exit if invalid
         SLL   R15,2
         BRAS  R14,PACKBRC1
         J     PACKLOOP        0 - Error
         J     PACKARR         1 - Array
         J     PACKCDE         2 - Code
         J     PACKDAT         3 - Date
         J     PACKDDT         4 - Default date
         J     PACKFLT         5 - Float
         J     PACKINT1        6 - Int1
         J     PACKINT2        7 - Int2
         J     PACKINT4        8 - Int4
         J     PACKJMP         9 - Jump
         J     PACKFLT        10 - Currency
         J     PACKDLM        11 - Delimiter
         J     PACKSTRV       12 - String
         J     PACKSTRF       13 - Fixed string
         J     PACKTIM        14 - Time
         J     PACKDTM        15 - Default time
         J     PACKWDT        16 - Width
         J     PACKINT3       17 - Int3
PACKBRC1 B     0(R15,R14)
*
*
* Array
PACKARR  DS    0H
         LA    R1,2(R3)
         BRAS  R14,PACKHWV        Retrieve length
         LTR   R1,R1
         JH    PACKARR1
         LHI   R1,7               Set LastError = 7 on 0 array len
         ST    R1,PACKLERR
         J     PACKDONE
PACKARR1 DS    0H
         STH   R1,PACKARRT
         OI    PACKFLGA,PACKFLAR
         AHI   R3,4               Move along the format string
         J     PACKLOOP
*
* Code
PACKCDE  DS    0H
         LHI   R1,6               Adjust format ptr amount
         AH    R1,4(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         STH   R1,PACKFMTL
         LHI   R1,4               Store element length
         STH   R1,PACKELEL
*
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         L     R5,0(R5)           -> Code
         LTR   R5,R5
         JZ    PACKAP
         LH    R1,4(R5)           R1 =  Name length
         L     R0,0(R5)           R0 -> Code name
         LTR   R1,R1
         JZ    PACKAP
*
         OC    4(2,R3),4(R3)      Supplemental string?
         JZ    PACKCDEA
         CH    R1,4(R3)           Name Len < SS Len
         JL    PACKCDEA           ...don't use
         LH    R4,4(R3)
         BCTR  R4,0
         LR    R15,R0             Move out of R0 for EX
         EX    R4,PACKCMPR        CLC 0(0,R15),6(R3)
         JNE   PACKCDEA
         AHI   R4,1
         AR    R0,R4              Advance pointer past SS portion
         SR    R1,R4
*
PACKCDEA DS    0H
         NI    PACKFLGA,X'BF'     X'FF' - PACKFLRJ (X'40')
         J     PACKAP
*
* Date
PACKDAT  DS    0H
         MVC   72(4,R13),PACKDDAF Load default format
         MVC   80(2,R13),PACKDDAL
         J     PACKDTT
*
* Time
PACKTIM  DS    0H
         MVC   72(4,R13),PACKDTIF Load default foramt
         MVC   80(2,R13),PACKDTIL
*
* Finish date & time
PACKDTT  DS    0H
         LHI   R1,8               Adjust format ptr amount
         AH    R1,6(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         STH   R1,PACKFMTL
         LHI   R1,4               Store element length
         STH   R1,PACKELEL
         LA    R1,2(R3)           Length field
         BRAS  R14,PACKHWV
         MVC   PACKFLGS,4(R3)     Move flags to common field
         LH    R1,6(R3)           R1 =  Length supplemental string
         LTR   R1,R1              Format included?
         JZ    PACKDTTA
         LA    R15,8(R3)          ...load requested format
         ST    R15,72(R13)
         STH   R1,80(R13)
*
PACKDTTA DS    0H
         BRAS  R14,PACKGTS        R5 -> Source field
         MVC   64(8,R13),0(R5)
         TM    PACKFLGS,PUFEXTD
         JO    PACKDTTB
         AHI   R13,88
         XC    60(4,R13),60(R13)  Convert input date to FP
         MVC   72(4,R13),0(R5)
         L     R15,PACKLONG       DMNLONG
         BASR  R14,R15            Puts FP at 64 on stack
         LD    F0,64(R13)
         AHI   R13,-88
         STD   F0,64(R13)
*
PACKDTTB DS    0H
         LA    R1,PACKSCB         Output string
         ST    R1,76(R13)
         XC    82(2,R13),82(R13)
         L     R15,PACKPUTD       DMNPUTDX
         BASR  R14,R15
         L     R0,PACKSCB         R0 -> Source
         LH    R1,PACKSCB+4       R1 =  Length
         NI    PACKFLGA,X'BF'     X'FF' - PACKFLRJ (X'40')
         J     PACKAP
*
* Float / Currency
PACKFLT  DS    0H
         LHI   R1,8               Adjust format ptr amount
         STH   R1,PACKFMTL
         STH   R1,PACKELEL        ...element len same as adjustment
         MVC   PACKFLGS,6(R3)
* Get lengths individually to account
*  for argument placement for floats
         LA    R1,2(R3)           Length field
         BRAS  R14,PACKHWV
         LA    R1,4(R3)           Precision field
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         LD    F0,0(R5)
         LTDBR F0,F0
         JNZ   PACKFLT1
         OI    PACKFLGA,PACKFL0
*
PACKFLT1 DS    0H
         LH    R4,4(R3)           R4 = Precision
         LTR   R4,R4
         JNZ   PACKFLT2
         LHI   R4,9               9 is default precision on floats
*
PACKFLT2 DS    0H
         TM    PACKFLGS,PUFLIMPD  Implied decimal?
         JNO   PACKFLTC
         LD    F2,PACKDB10
PACKFLTB DS    0H                 Adjust for implied
         MDBR  F0,F2
         BRCT  R4,PACKFLTB
         LHI   R4,0               Precision = 0 on implied
*
PACKFLTC DS    0H
         STD   F0,0(R13)          Store float on stack
         AHI   R13,8              ...and increment for subroutine
         STH   R4,68(R13)         Precision
         LR    R1,R13
         AHI   R1,-8
         ST    R1,60(R13)         -> Float
         LA    R1,PACKSCB
         ST    R1,64(R13)         -> Output str
         XC    70(2,R13),70(R13)
         L     R15,PACKF2S        DMNF2S
         BASR  R14,R15
         AHI   R13,-8             Restore stack
*
         LA    R15,PACKSCB
         LH    R1,4(R15)          R1 = Result length
         LTR   R1,R1
         JZ    PACKFLTM
         L     R15,0(R15)         R15 -> Last character
         AR    R15,R1
         AHI   R15,-1
*
         TM    PACKFLGS,PUFLIMPD  Implied decimal
         JO    PACKFLTM           ...don't trim zeros
         OC    4(2,R3),4(R3)      Specified precision
         JNZ   PACKFLTM           ...don't trim zeros
*
PACKFLTD DS    0H                 Trim trailing zeros
         CLI   0(R15),C'0'
         JNE   PACKFLTM
         AHI   R15,-1
         BRCT  R1,PACKFLTD
*
PACKFLTM DS    0H                 Trim trailing decimal point
         LTR   R1,R1
         JZ    PACKFLTN
         CLI   0(R15),C'.'
         JNE   PACKFLTN
         BCTR  R1,0
*
PACKFLTN DS    0H
         L     R0,PACKSCB         R0 -> Source
         OI    PACKFLGA,PACKFLRJ
         J     PACKAP
*
* Integer - length 1
PACKINT1 DS    0H
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         LHI   R15,1
         STH   R15,PACKELEL       Set element length
         XR    R4,R4
         TM    0(R5),X'80'        Check for negative
         JNO   PACKIN1A
         LHI   R4,-1
PACKIN1A DS    0H
         IC    R4,0(R5)           R4 = Integer
         J     PACKINT
*
* Integer - length 2
PACKINT2 DS    0H
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         LHI   R15,2
         STH   R15,PACKELEL       Set element length
         LH    R4,0(R5)           R4 = Integer
         J     PACKINT
*
* Integer - length 3
PACKINT3 DS    0H
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         LHI   R15,3
         STH   R15,PACKELEL       Set element length
         XR    R4,R4
         TM    0(R5),X'80'        Check for negative
         JNO   PACKIN3A
         LHI   R4,-1
PACKIN3A DS    0H
         ICM   R4,7,0(R5)         R4 = Integer
         J     PACKINT
*
* Integer - length 4
PACKINT4 DS    0H
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS        R5 -> Source field
         LHI   R15,4
         STH   R15,PACKELEL       Set element length
         L     R4,0(R5)           R4 = Integer
*
* Integer
PACKINT  DS    0H
         LHI   R1,6
         STH   R1,PACKFMTL
         MVC   PACKFLGS,4(R3)
         LTR   R4,R4
         JNZ   PACKINTA
         OI    PACKFLGA,PACKFL0
*
PACKINTA DS    0H
         ST    R4,60(R13)
         LA    R1,PACKSCB
         ST    R1,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,PACKI2S        DMNI2S
         BASR  R14,R15
         L     R0,PACKSCB         R0 -> Source
         LH    R1,PACKSCB+4       R1 =  Source length
         OI    PACKFLGA,PACKFLRJ
         J     PACKAP
*
* Variable String
PACKSTRV DS    0H
         LHI   R1,6
         STH   R1,PACKFMTL
         LHI   R1,12
         STH   R1,PACKELEL        Set array element length
         MVC   PACKFLGS,4(R3)     Move flags to common field
*
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS
         L     R0,0(R5)           R0 -> Source
         LH    R1,4(R5)           R1 =  Length
         NI    PACKFLGA,X'BF'     X'FF' - PACKFLRJ (X'40')
         J     PACKAP
*
* Fixed string
PACKSTRF DS    0H
         LHI   R1,8
         STH   R1,PACKFMTL
         LH    R1,4(R3)
         STH   R1,PACKELEL
         MVC   PACKFLGS,6(R3)     Move flags to common field
*
         LA    R1,2(R3)           Resolve length
         BRAS  R14,PACKHWV
*
         BRAS  R14,PACKGTS
         LR    R0,R5              R0 -> Source
         LH    R1,4(R3)           R1 =  Length
         NI    PACKFLGA,X'BF'     X'FF' - PACKFLRJ (X'40')
         J     PACKAP
*
* Default date format
PACKDDT  DS    0H
         LH    R1,2(R3)           Data length
         STH   R1,PACKDDAL
         LA    R1,4(R3)           -> Data
         ST    R1,PACKDDAF
         LHI   R1,4               Adjust format ptr amount
         AH    R1,2(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         AR    R3,R1
         XC    PACKFMTL,PACKFMTL
         J     PACKLOOP
*
* Default time format
PACKDTM  DS    0H
         LH    R15,2(R3)          Data length
         STH   R15,PACKDTIL
         LA    R15,4(R3)          -> Data
         ST    R15,PACKDTIF
         LHI   R1,4               Adjust format ptr amount
         AH    R1,2(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         AR    R3,R1
         XC    PACKFMTL,PACKFMTL
         J     PACKLOOP
*
* Delimiter
PACKDLM  DS    0H
         XC    PACKDWID,PACKDWID  Remove width
         MVC   PACKDLIM,4(R3)
         AHI   R3,6               Adjust format ptr amount
         XC    PACKFMTL,PACKFMTL
         J     PACKLOOP
*
* Width
PACKWDT  DS    0H
         XC    PACKDLIM,PACKDLIM    Remove delimiter
         LA    R1,2(R3)
         BRAS  R14,PACKHWV        Retrieve length
         STH   R1,PACKDWID
         AHI   R3,4               Adjust format ptr amount
         XC    PACKFMTL,PACKFMTL
         J     PACKLOOP
*
* Jump
PACKJMP  DS    0H
         LHI   R1,4               Adjust format ptr amount
         STH   R1,PACKFMTL
         LA    R1,2(R3)           Get length
         BRAS  R14,PACKHWV
*
         LHI   R1,0
         LR    R0,R12             Meaningless, yet necessary
         J     PACKAP
*
*
* Write results
*
* Append Text
PACKAP   DS    0H
         CLI   PACKDLIM,X'00'     Delimited pack?
         JNE   PACKDL
* Write undelimited
         L     R4,PACKTRGC        R4 -> Target
         LH    R5,2(R3)           R5 =  Target length
         LR    R6,R0              R6 -> Source
         LR    R7,R1              R7 =  Source length
         MVI   PACKPADC,C' '      Default to blank pad
*
         LTR   R5,R5              If target len = 0
         JH    PACKAPD
         LH    R5,PACKDWID        ...use default
*
PACKAPD  DS    0H
         LR    R15,R4
         AR    R15,R5
         ST    R15,PACKTRGC
         CR    R15,R13
         JL    PACKAPF
* Need more room
         AR    R13,R5
         AHI   R13,7
         SRL   R13,3
         SLL   R13,3
         L     R15,88(R10)
         BASR  R14,R15
* Check flags
PACKAPF  DS    0H
         TM    PACKFLGS,PUFLLEFT  Left justification flag
         JO    PACKAPW
         TM    PACKFLGA,PACKFLRJ  Right justification flag
         JNO   PACKAPW
*
* Append Number - right justification
PACKAPR  DS    0H
         TM    PACKFLGS,PUFLBLNK  Fill with blanks on zero
         JNO   PACKAPC
         TM    PACKFLGA,PACKFL0   Zero?
         JNO   PACKAPC
         XR    R7,R7
         J     PACKAPW
* Pad with zero
PACKAPC  DS    0H
         TM    PACKFLGS,PUFL0PAD  Zero pad
         JNO   PACKAPP
         MVI   PACKPADC,C'0'
*
         LR    R15,R5             Prepending necessary?
         SR    R15,R7
         JNP   PACKAPW
*
         CLI   0(R6),C'-'         Negative number?
         JNE   PACKAPP
         MVI   0(R4),C'-'         Put in output
         AHI   R4,1               Allowance
         AHI   R5,-1
         AHI   R6,1
         AHI   R7,-1
* Prepend pad characters
PACKAPP  DS    0H
         ST    R4,60(R13)
         ST    R4,68(R13)
         LR    R15,R5             Prepending necessary?
         SR    R15,R7
         JNP   PACKAPW
         LR    R5,R15
         ST    R5,64(R13)
         XC    72(4,R13),72(R13)
         MVC   76(1,R13),PACKPADC
         L     R15,PACKCOPY       DMNCOPY
         BASR  R14,R15
*
         AR    R4,R5              Adjust target parameters
         LR    R5,R7
*
* Write
PACKAPW  DS    0H
         ICM   R7,8,PACKPADC      Insert pad byte
         MVCL  R4,R6
         J     PACKLOOP
*
*
* Write with delimiters
*
PACKDL   DS    0H
         LTR   R7,R1              Something to insert
         JNZ   PACKDL1A
         TM    PACKFLGS,PUFLPLUS
         JO    PACKLOOP
         J     PACKDL3
*
PACKDL1A DS    0H
         TM    PACKFLGS,PUFLPLUS
         JO    PACKDL2A
*
         LA    R15,PACKQUOT       Setup SCB(B) with quote
         ST    R15,PACKSCBB       ...to double up embedded quotes
         LHI   R15,1
         STH   R15,PACKSCBB+4
         STH   R15,PACKSCBB+6
*
         LA    R15,PACKSCB        Ensure source is in SCB
         ST    R15,60(R13)
         XC    68(2,R13),68(R13)
         ST    R0,64(R13)
         STH   R1,70(R13)
         L     R15,PACKSCPY       DMNSCPY
         BASR  R14,R15
*
         L     R6,PACKSCB
         LH    R7,PACKSCB+4
* Check for embedded delimiter, quotes
PACKDL1D DS    0H
         CLC   PACKDLIM,0(R6)     Embedded delimiter?
         JNE   PACKDL1E
         OI    PACKFLGA,PACKFLQT
PACKDL1E DS    0H
         CLI   0(R6),C'"'
         JNE   PACKDL1F
*
         OI    PACKFLGA,PACKFLQT
         S     R6,PACKSCB         Prepend quote to embedded quotes
         ST    R6,64(R13)
         LA    R15,PACKSCB
         ST    R15,60(R13)
         LA    R15,PACKSCBB
         ST    R15,68(R13)
         L     R15,PACKSINS       DMNSINS
         BASR  R14,R15
         A     R6,PACKSCB
         AHI   R6,1               Skip inserted character
*
PACKDL1F DS    0H
         AHI   R6,1
         BRCT  R7,PACKDL1D
         L     R0,PACKSCB
         LH    R1,PACKSCB+4
* Exit loop logic
         LR    R15,R0
         CLI   0(R15),C' '        Leading space?
         JE    PACKDL1Q           ...Write quotes
*
         AR    R15,R1
         AHI   R15,-1
         CLI   0(R15),C' '        Trailing space?
         JNE   PACKDL1R
*
PACKDL1Q DS    0H
         OI    PACKFLGA,PACKFLQT
*
PACKDL1R DS    0H
         TM    PACKFLGA,PACKFLQT
         JNO   PACKDL2A
*
         C     R13,PACKTRGC       Write leading quote
         JH    PACKDL1T
         AHI   R13,8
         L     R15,88(R10)
         BASR  R14,R15
PACKDL1T DS    0H
         L     R15,PACKTRGC
         MVI   0(R15),C'"'
         AHI   R15,1
         ST    R15,PACKTRGC
*
* Write string
PACKDL2A DS    0H
         L     R4,PACKTRGC
         LR    R5,R1
         LR    R6,R0
         LR    R7,R1
*
         LR    R15,R4             Check available space
         AR    R15,R5
         ST    R15,PACKTRGC
         CR    R15,R13
         JL    PACKDL2B
*
         AR    R13,R5             Need more room
         AHI   R13,7
         SRL   R13,3
         SLL   R13,3
         L     R15,88(R10)
         BASR  R14,R15
PACKDL2B DS    0H
         ICM   R7,8,PACKPADC      Insert pad byte
         MVCL  R4,R6
*
         TM    PACKFLGA,PACKFLQT
         JNO   PACKDL3
*
         C     R13,PACKTRGC       Write trailing quote
         JH    PACKDL2D
         AHI   R13,8
         L     R15,88(R10)
         BASR  R14,R15
PACKDL2D DS    0H
         L     R15,PACKTRGC
         MVI   0(R15),C'"'
         AHI   R15,1
         ST    R15,PACKTRGC
* Write delimiter
PACKDL3  DS    0H
         C     R13,PACKTRGC
         JH    PACKDL31
         AHI   R13,8
         L     R15,88(R10)
         BASR  R14,R15
PACKDL31 DS    0H
         L     R15,PACKTRGC
         MVC   0(1,R15),PACKDLIM
         AHI   R15,1
         ST    R15,PACKTRGC
         J     PACKLOOP
*
*
* Exit Logic
*
* Set RC = 0
PACKSETZ DS    0H
*
* Calculate RC
PACKSETR DS    0H
PACKDONE DS    0H
         L     R1,PACKTRGC
         S     R1,PACKOUTS        R1 = Result length
         STH   R1,PACKSCBB+4
         CLI   PACKDLIM,X'00'     Output delimited?
         JE    PACKEXIT
         AHI   R1,-1              Remove trailing delimiter
         JM    PACKEXIT
         STH   R1,PACKSCBB+4
PACKEXIT DS    0H
         MVC   PACKSCBB+6(2),PACKSCBB+4
         MVC   PACKSCBB(4),PACKOUTS
         LA    R15,PACKSCBB
         ST    R15,64(R13)
         MVC   60(4,R13),PACKDEST
         XC    68(4,R13),68(R13)
         L     R15,PACKSCPY       DMNSCPY
         BASR  R14,R15
*
         LA    R1,PACKPOOL
         ST    R1,60(R13)
         L     R15,PACKFREE       DMNFREE
         BASR  R14,R15
*
         LD    F0,PACKSF0         Restore floating registers
         LD    F2,PACKSF2
         L     R1,64(R10)         Set LastError
         MVC   16(4,R1),PACKLERR  ...from saved value
         XC    PACKRTRN,PACKRTRN
         LM    R0,R14,PACKREGS
         BR    R14
*
********** PACK SUBROUTINES START **********
*
********************************************
* Get HW value
* IN:  R1 -> halfword
* OUT: R1 =  halfword value / argument value if -1
PACKHWV  DS    0H
         ST    R1,PACKTPTR        Save address
         LH    R1,0(R1)
         LTR   R1,R1              Non-negative number?
         BNLR  R14                ...All done
* Retrieve value in argument
         ST    R14,PACKR14
         LH    R1,PACKFLGA        Save flags
         XC    PACKFLGA,PACKFLGA  Remove flags for subroutine
         BRAS  R14,PACKGTS        R5 -> Value of argument
         STH   R1,PACKFLGA        Restore flags
*
         L     R1,PACKTPTR        Restore original pointer
         CLI   1(R1),X'01'        Value length = 1?
         JE    PACKHWV1
         CLI   1(R1),X'02'        Value length = 2?
         JE    PACKHWV2
         L     R1,0(R5)           Must be 4
         J     PACKHWVA
*
PACKHWV1 DS    0H
         XR    R1,R1
         IC    R1,0(R5)
         J     PACKHWVA
*
PACKHWV2 DS    0H
         LH    R1,0(R5)
*
PACKHWVA DS    0H
         LTR   R1,R1              Test value
         JH    PACKHWVD
         LHI   R15,7              Preset LastError = 7
         L     R1,64(R10)
         ST    R15,16(R1)
         XR    R1,R1              Set to 0 on negative
*
PACKHWVD DS    0H
         L     R15,PACKTPTR
         STH   R1,0(R15)          Store actual value in format string
         L     R14,PACKR14
         BR    R14
*
********************************************
* Retrieve next argument
* OUT:   R5 -> Target argument
PACKGTS  DS    0H
         L     R5,PACKDSTC
*
         TM    PACKFLGA,PACKFLAR
         JNO   PACKARG1
         LH    R15,PACKARRC       R15 = Current count
         AHI   R15,-1             Decrement for displacement
         JZ    PACKARG1
*
         MH    R15,PACKELEL
         AHI   R5,-4
         L     R5,0(R5)
         AR    R5,R15
         BR    R14
*
PACKARG1 DS    0H
         LA    R15,4(R5)
         ST    R15,PACKDSTC
         L     R5,0(R5)
* Decrement # of remaining arguments
         LH    R15,PACKARGC
         LTR   R15,R15            At end?
         JNH   PACKSETR           ...Not enough arguments
         BCTR  R15,0
         STH   R15,PACKARGC
         BR    R14
**************************
*    UNPKLOCL
**************************
UNPKLOCL DSECT
UNPKREGS DS    15F          Saved registers
UNPKCNTL DS    F            -> Control Array
UNPKSRCS DS    F            -> Source SCB
UNPKARGS DS    0F           Array of destination fields
         DS    0D
UNPKLGTH EQU   *-UNPKLOCL
*
         ORG   UNPKCNTL
UNPKRTRN DS    F
**************************
*    UNPKLOCV
**************************
UNPKLOCV DSECT
UNPKSF0  DS    D            Save area - floating point registers
UNPKSF2  DS    D
UNPKDSTC DS    F            Current destination address
UNPKSRCC DS    F            -> Current source field
UNPKDDAF DS    F            -> Default date
UNPKDTIF DS    F            -> Default time
UNPKFMTE DS    F            End of format string
UNPKLERR DS    F            LastError save area
UNPKR14A DS    F            Save value for R14
UNPKR14B DS    F
UNPKTPTR DS    F            Temporary pointer for UNPKHWV
*
UNPKFMTC DS    H            Format items counter
UNPKARRC DS    H            Array counter
UNPKARRT DS    H            Array count target
UNPKARGC DS    H            Argument counter
UNPKFMTL DS    H            Current format item length
UNPKELEL DS    H            Length of current argument type
*
UNPKDDAL DS    H            Default date length
UNPKDTIL DS    H            Default time length
UNPKDWID DS    H            Default width
UNPKFLGS DS    H            Flags - See Pack for flag tagnames
UNPKFLGA DS    H            Program flags
*FLGA+1                      Flags from DMNDINP
*
UNPKFMTM DS    3F           Modifiable copy of format string
UNPKSRCX DS    3F           Work copy of input string
UNPKSCB  DS    3F           Temporary work SCB
UNPKPOOL DS    2F           Pool
UNPKDLIM DS    CL1          Delimiter
         DS    0D
UNPKLOLN EQU   *-UNPKLOCV
**************************
*    V40UNPK
**************************
V40UNPK  CSECT
V40UNPK  AMODE ANY
V40UNPK  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,UNPKLGTH
         BRAS  R11,UNPKSETS
UNPK000  EQU   *
UNPKDB10 DC    DB'10'
UNPKGETI DC    A(DMNGETI)
UNPKGETF DC    A(DMNGETF)
UNPKGETD DC    A(DMNGETDX)
UNPKFREE DC    A(DMNFREE)
UNPKOSTR DC    A(DMNOSTR)
UNPKCSPC DC    A(DMNCSPC)
UNPKEADD DC    A(DMNEADD)
UNPKSCPY DC    A(DMNSCPY)
UNPKDINP DC    A(V40DINP)
UNPKSLAM DC    A(DMNSLAM)
UNPKLONG DC    A(DMNLONG)
UNPKDD   DC    CL6'%m%d%Y'
UNPKDT   DC    CL4'%H%M'
UNPKBLNK DC    CL1' '
*
         USING UNPK000,R11
         USING UNPKLOCL,R12
         USING UNPKLOCV,R2
* Set up stack
UNPKSETS DS    0H
         L     R1,UNPKCNTL
         LH    R1,4(R1)
         SLL   R1,2            Num args * 4
         AR    R13,R1          Move stack ptr to end of args
         AHI   R13,7           Align on DW boundary
         SRL   R13,3
         SLL   R13,3
         LR    R2,R13          R2 -> Local Variables
         AHI   R13,UNPKLOLN    Move stack ptr to end of locals
         L     R15,88(R10)
         BASR  R14,R15
* Set up locals
         STD   F0,UNPKSF0
         STD   F2,UNPKSF2
         L     R1,64(R10)         Reset Lasterror
         XC    16(4,R1),16(R1)
         XC    UNPKLOCV(UNPKLOLN),UNPKLOCV  Clear storage
         LA    R1,UNPKARGS
         ST    R1,UNPKDSTC     -> Targets
         LA    R1,UNPKPOOL
         ST    R1,UNPKFMTM+8
         ST    R1,UNPKSRCX+8
         ST    R1,UNPKSCB+8
* Copy format string into local variable (make modifiable)
         LA    R1,UNPKFMTM
         ST    R1,60(R13)
         XC    68(2,R13),68(R13)
         L     R1,UNPKCNTL
         ST    R1,64(R13)
         MVC   70(2,R13),0(R1)
         L     R15,UNPKSCPY       DMNSCPY
         BASR  R14,R15
         L     R3,UNPKFMTM        R3 -> Format string
         LH    R1,UNPKFMTM+4
         AR    R1,R3
         ST    R1,UNPKFMTE        Store end address of format string
         MVC   UNPKARGC,4(R3)     # Arguments
* Make work copy of input
         LA    R1,UNPKSRCX
         ST    R1,60(R13)
         MVC   64(4,R13),UNPKSRCS
         XC    68(4,R13),68(R13)
         L     R15,UNPKSCPY       DMNSCPY
         BASR  R14,R15
* Set default date and time formats
         LA    R1,UNPKDD
         ST    R1,UNPKDDAF
         LHI   R1,6               L'UNPKDD
         STH   R1,UNPKDDAL
*
         LA    R1,UNPKDT
         ST    R1,UNPKDTIF
         LHI   R1,4               L'UNPKDT
         STH   R1,UNPKDTIL
* Set pointers
         MVC   UNPKSRCC,UNPKSRCX  -> Source field
         L     R1,UNPKFMTM
         LA    R3,6(R1)           R3->Format string
**********************
* MAIN PROCESSING LOOP
**********************
UNPKLOOP DS    0H
         L     R1,64(R10)         Reset Lasterror
         L     R15,16(R1)         R15 = Lasterror
         LTR   R15,R15
         JZ    UNPKLOOA
         ST    R15,UNPKLERR
         XC    16(4,R1),16(R1)
*
UNPKLOOA DS    0H
         TM    UNPKFLGA,UNPKFLAR  Array?
         JNO   UNPKLOOG
         LH    R15,0(R3)     Don't array process non-fields
         CHI   R15,4         ...such as default date format
         JE    UNPKLOOG
         CHI   R15,11             ...delimiter
         JE    UNPKLOOG
         CHI   R15,15             ...default time
         JE    UNPKLOOG
         CHI   R15,16             ...width
         JE    UNPKLOOG
         CLC   UNPKARRT,UNPKARRC  Target count < Actual count?
         JNH   UNPKLOOC
         LH    R1,UNPKARRC        ...increment and go again
         AHI   R1,1
         STH   R1,UNPKARRC
         CHI   R1,X'01'           First of array
         JE    UNPKLOOM           ...increment format count
         J     UNPKBRCH
*
UNPKLOOC DS    0H                 End of array processing
         NI    UNPKFLGA,X'7F'     X'FF' - UNPKFLAR
         XC    UNPKARRT,UNPKARRT
         XC    UNPKARRC,UNPKARRC
*
UNPKLOOG DS    0H
         XC    UNPKFLGS,UNPKFLGS  Reset flags
*
         AH    R3,UNPKFMTL
         C     R3,UNPKFMTE        End of format string?
         JNL   UNPKSETZ           ...return 0
*
UNPKLOOM DS    0H
         LH    R1,UNPKFMTC        Increment format count
         AHI   R1,1
         STH   R1,UNPKFMTC
* Branch to the correct routine for this format
UNPKBRCH DS    0H
         LH    R15,0(R3)          Format code
         CHI   R15,17
         JH    UNPKSETR           Exit if invalid
         SLL   R15,2
         BRAS  R14,UNPKBRC1
         J     UNPKLOOP        0 - Error
         J     UNPKARR         1 - Array
         J     UNPKCDE         2 - Code
         J     UNPKDAT         3 - Date
         J     UNPKDDT         4 - Default date
         J     UNPKFLT         5 - Float
         J     UNPKINT1        6 - Int1
         J     UNPKINT2        7 - Int2
         J     UNPKINT4        8 - Int4
         J     UNPKJMP         9 - Jump
         J     UNPKFLT        10 - Currency
         J     UNPKDLM        11 - Delimiter
         J     UNPKSTRV       12 - String
         J     UNPKSTRF       13 - Fixed string
         J     UNPKTIM        14 - Time
         J     UNPKDTM        15 - Default time
         J     UNPKWDT        16 - Width
         J     UNPKINT3       17 - Int3
UNPKBRC1 B     0(R15,R14)
*
*
* Array
UNPKARR  DS    0H
         LA    R1,2(R3)
         BRAS  R14,UNPKHWV        Retrieve length
         STH   R1,UNPKARRT
         OI    UNPKFLGA,UNPKFLAR
         AHI   R3,4               Move along the format string
         J     UNPKLOOP
*
* Code
UNPKCDE  DS    0H
         LHI   R1,6               Adjust format ptr amount
         AH    R1,4(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         STH   R1,UNPKFMTL
         LHI   R1,4               Store element length
         STH   R1,UNPKELEL
*
         BRAS  R14,UNPKAREA       Get source field / Length
         LR    R6,R0              R6 -> Source field
         LR    R7,R1              R7 =  Length
*
         LH    R1,4(R3)           Supplemental string?
         LTR   R1,R1
         JZ    UNPKCDEA
*
         LA    R15,UNPKSCB        Load initial parameters for OSTR
         ST    R15,60(R13)           Output SCB
         LA    R15,6(R3)             Input A (Supplementary)
         ST    R15,64(R13)
         ST    R1,68(R13)
*
         ST    R6,72(R13)            Input B (Source field)
         ST    R7,76(R13)            Length B
         L     R15,UNPKOSTR       DMNOSTR
         BASR  R14,R15
         L     R6,UNPKSCB
         LH    R7,UNPKSCB+4
*
UNPKCDEA DS    0H
         MVC   60(4,R13),56(R10)
         ST    R6,64(R13)
         XC    68(4,R13),68(R13)
         STH   R7,72(R13)
         L     R15,UNPKEADD       DMNEADD
         BASR  R14,R15
*
         BRAS  R14,UNPKARG        R5 -> Target
         MVC   0(4,R5),60(R13)
         J     UNPKLOOP
*
* Date
UNPKDAT  DS    0H
         MVC   60(4,R13),UNPKDDAF Load default format
         MVC   68(2,R13),UNPKDDAL
         J     UNPKDTT
*
* Time
UNPKTIM  DS    0H
         MVC   60(4,R13),UNPKDTIF Load default format
         MVC   68(2,R13),UNPKDTIL
*
* Date / Time common routine
UNPKDTT  DS    0H
         LHI   R1,8               Adjust format ptr amount
         AH    R1,6(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         STH   R1,UNPKFMTL
         LHI   R1,4               Store element length
         STH   R1,UNPKELEL
         MVC   UNPKFLGS,4(R3)     Move flags to common field
         OC    6(2,R3),6(R3)      Supplmental string?
         JZ    UNPKDTTA
         LA    R15,8(R3)          ...load requested format
         ST    R15,60(R13)
         MVC   68(2,R13),6(R3)
*
UNPKDTTA DS    0H
         AHI   R13,80
         BRAS  R14,UNPKAREA       Get source field / length
         AHI   R13,-80
         ST    R0,64(R13)
         STH   R1,70(R13)
         L     R15,UNPKGETD       DMNGETDX
         BASR  R14,R15
*
         BRAS  R14,UNPKARG        R5 -> Target
         TM    UNPKFLGS,PUFEXTD
         JO    UNPKDTTB
         OI    60(R13),X'80'    Make nonzero
         L     R15,UNPKLONG     DMNLONG
         BASR  R14,R15
         MVC   0(4,R5),72(R13)
         J     UNPKLOOP
*
UNPKDTTB DS    0H
         MVC   0(8,R5),64(R13)
         J     UNPKLOOP
*
* Float / Currency
UNPKFLT  DS    0H
         LHI   R1,8               Adjust format ptr amount
         STH   R1,UNPKFMTL
         STH   R1,UNPKELEL        ...element len same as adjustment
         MVC   UNPKFLGS,6(R3)     Move flags to common field
* Get lengths individually to account
*  for argument placement for floats
         LA    R1,2(R3)           Length field
         BRAS  R14,UNPKHWV
         LA    R1,4(R3)           Precision field
         BRAS  R14,UNPKHWV
*
         BRAS  R14,UNPKAREA       Get source / length
         ST    R0,64(R13)
         ST    R1,68(R13)
         L     R15,UNPKGETF       DMNGETF
         BASR  R14,R15
         LD    F0,64(R13)
*
         TM    UNPKFLGS,PUFLIMPD  Implied decimal?
         JNO   UNPKFLTB
         LH    R1,4(R3)           R1 = Precision
         LTR   R1,R1
         JNH   UNPKFLTB
         LD    F2,UNPKDB10        ...Adjust accordingly
UNPKFLTA DS    0H
         DDBR  F0,F2
         BRCT  R1,UNPKFLTA
UNPKFLTB DS    0H
         BRAS  R14,UNPKARG        R5 -> Target
         STD   F0,0(R5)
         J     UNPKLOOP
*
* Integer 1
UNPKINT1 DS    0H
         LHI   R6,1
         LHI   R7,0
         J     UNPKINT
* Integer 2
UNPKINT2 DS    0H
         LHI   R6,2
         LHI   R7,1
         J     UNPKINT
* Integer 3
UNPKINT3 DS    0H
         LHI   R6,3
         LHI   R7,2
         J     UNPKINT
* Integer 4
UNPKINT4 DS    0H
         LHI   R6,4
         LHI   R7,3
         J     UNPKINT
* Common integer processing
UNPKINT  DS    0H
         LHI   R1,6               Adjust format ptr amount
         STH   R1,UNPKFMTL
         STH   R6,UNPKELEL        Store element length
         MVC   UNPKFLGS,4(R3)     Move flags to common field
         BRAS  R14,UNPKAREA       Get source / length
         ST    R0,64(R13)
         ST    R1,68(R13)
         L     R15,UNPKGETI       DMNGETI
         BASR  R14,R15
         L     R6,60(R13)         R6 = Resulting integer
*
         BRAS  R14,UNPKARG        R5 -> Target
*
         SLL   R7,2
         BRAS  R14,UNPKINTB
         J     UNPKIN1A           1 byte integer
         J     UNPKIN2A           2 byte integer
         J     UNPKIN3A           3 byte integer
         J     UNPKIN4A           4 byte integer
UNPKINTB B     0(R7,R14)
*
UNPKIN1A DS    0H
         STC   R6,0(R5)
         J     UNPKLOOP           Check for array
UNPKIN2A DS    0H
         STH   R6,0(R5)
         J     UNPKLOOP           Check for array
UNPKIN3A DS    0H
         STCM  R6,7,0(R5)
         J     UNPKLOOP           Check for array
UNPKIN4A DS    0H
         ST    R6,0(R5)
         J     UNPKLOOP           Check for array
*
* Variable String
UNPKSTRV DS    0H
         LHI   R1,6               Adjust format ptr amount
         STH   R1,UNPKFMTL
         LHI   R1,12              Store element length
         STH   R1,UNPKELEL
         MVC   UNPKFLGS,4(R3)
         XR    R6,R6              R6 = Target length
         OI    UNPKFLGA,UNPKFLVS
         J     UNPKSTG
*
* Fixed String
UNPKSTRF DS    0H
         LHI   R1,8               Adjust format ptr amount
         STH   R1,UNPKFMTL
         MVC   UNPKELEL,4(R3)     Store element length
         MVC   UNPKFLGS,6(R3)
         LH    R6,4(R3)           R6 = Target length
*
* Common routine for both types of strings
UNPKSTG  DS    0H
         BRAS  R14,UNPKAREA       Get source / length
*
         ST    R0,UNPKSCB         Set up source SCB
         STH   R1,UNPKSCB+4
         STH   R1,UNPKSCB+6
         LA    R15,UNPKSCB        Put SCB on stack
         ST    R15,64(R13)
         XC    70(2,R13),70(R13)
*
         BRAS  R14,UNPKARG        R5 -> Target
*
         ST    R5,60(R13)         Load target parameters
         STH   R6,68(R13)
         L     R15,UNPKSCPY       DMNSCPY
         BASR  R14,R15
*
         TM    UNPKFLGA,UNPKFLVS  SCB?
         JNO   UNPKSTRZ
         TM    UNPKFLGA+1,UNPKFLEC  Embedded character?
         JNO   UNPKSTRZ
         TM    UNPKFLGS,PUFLPLUS  + flag?
         JO    UNPKSTRZ
* Additional SCB flagged logic
         L     R1,0(R5)           R1 -> string
         LH    R6,4(R5)           R6 =  string length
UNPKSTVL DS    0H
         CLI   0(R1),C'\'         Escape character?
         JE    UNPKSTVD
         CLI   0(R1),C'"'         Quote?
         JE    UNPKSTVC
UNPKSTVM DS    0H
         AHI   R1,1
         BRCT  R6,UNPKSTVL
         J     UNPKSTRZ
*
UNPKSTVC DS    0H
         CLI   1(R1),C'"'         2 quotes in a row?
         JNE   UNPKSTVM
UNPKSTVD DS    0H
         LR    R14,R1
         S     R14,0(R5)
         ST    R5,60(R13)
         ST    R14,64(R13)
         LHI   R14,1
         ST    R14,68(R13)
         L     R15,UNPKSLAM       DMNSLAM
         BASR  R14,R15
         AHI   R6,-1              Remove slammed char from count
         JP    UNPKSTVM
*
UNPKSTRZ DS    0H
         J     UNPKLOOP
*
* Default Date
UNPKDDT  DS    0H
         LH    R1,2(R3)           Data length
         STH   R1,UNPKDDAL
         LA    R1,4(R3)           -> Data
         ST    R1,UNPKDDAF
         LHI   R1,4               Adjust format ptr amount
         AH    R1,2(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         AR    R3,R1
         XC    UNPKFMTL,UNPKFMTL
         J     UNPKLOOP
*
* Default Time
UNPKDTM  DS    0H
         LH    R1,2(R3)           Data length
         STH   R1,UNPKDTIL
         LA    R1,4(R3)           -> Data
         ST    R1,UNPKDTIF
         LHI   R1,4               Adjust format ptr amount
         AH    R1,2(R3)           ...plus length of supp. str
         AHI   R1,1               ...to next HW boundary
         SRL   R1,1
         SLL   R1,1
         AR    R3,R1
         XC    UNPKFMTL,UNPKFMTL
         J     UNPKLOOP
*
* Delimiter
UNPKDLM  DS    0H
         XC    UNPKDWID,UNPKDWID  Remove width
         MVC   UNPKDLIM,4(R3)
         AHI   R3,6               Adjust format ptr amount
         XC    UNPKFMTL,UNPKFMTL
         J     UNPKLOOP
*
* Width
UNPKWDT  DS    0H
         XC    UNPKDLIM,UNPKDLIM  Remove delimiter
         LA    R1,2(R3)
         BRAS  R14,UNPKHWV        Retrieve length
         STH   R1,UNPKDWID
         AHI   R3,4               Adjust format ptr amount
         XC    UNPKFMTL,UNPKFMTL
         J     UNPKLOOP
*
* Jump
UNPKJMP  DS    0H
         LHI   R1,4               Adjust format ptr amount
         STH   R1,UNPKFMTL
         LA    R1,2(R3)
         BRAS  R14,UNPKHWV        Retrieve length
*
         BRAS  R14,UNPKAREA       Get source / length
         J     UNPKLOOP           ...and ignore it
*
* Set return code
* Last item fetched was not processed
UNPKSETR DS    0H
         LH    R1,UNPKFMTC        Format items processed
         LH    R15,UNPKARRC       Array partially complete?
         CHI   R15,1
         JH    UNPKSETU           ...don't decrement
         AHI   R1,-1              Latest item not processed
UNPKSETU DS    0H
         L     R15,UNPKCNTL
         LH    R3,2(R15)          Format items expected
         SR    R3,R1
         J     UNPKDONE
*
* Zero return code
UNPKSETZ DS    0H
         XR    R3,R3
         J     UNPKDONE
*
*
UNPKDONE DS    0H
         LA    R1,UNPKPOOL
         ST    R1,60(R13)
         L     R15,UNPKFREE       DMNFREE
         BASR  R14,R15
*
         LD    F0,UNPKSF0         Restore floating point registers
         LD    F2,UNPKSF2
         L     R1,64(R10)         Set LastError
         MVC   16(4,R1),UNPKLERR  ...from saved value
         ST    R3,UNPKRTRN        Return number of left-overs
         LM    R0,R14,UNPKREGS
         BR    R14
*
********* UNPACK SUBROUTINES START *********
*
********************************************
* Get HW value
* IN:  R1 -> halfword
* OUT: R1 =  halfword value / argument value if -1
UNPKHWV  DS    0H
         ST    R1,UNPKTPTR        Save address
         LH    R1,0(R1)
         LTR   R1,R1              Non-negative number?
         BNLR  R14                ...All done
* Retrieve value in argument
         ST    R14,UNPKR14B
         LH    R1,UNPKFLGA        Save flags
         XC    UNPKFLGA,UNPKFLGA  Remove flags for subroutine
         BRAS  R14,UNPKARG        R5 -> Value of arg
         STH   R1,UNPKFLGA        Restore flags
*
         L     R1,UNPKTPTR        Restore original pointer
         CLI   1(R1),X'01'        Value length = 1?
         JE    UNPKHWV1
         CLI   1(R1),X'02'        Value length = 2?
         JE    UNPKHWV2
         L     R1,0(R5)           Must be 4
         J     UNPKHWVA
*
UNPKHWV1 DS    0H
         XR    R1,R1
         IC    R1,0(R5)
         J     UNPKHWVA
*
UNPKHWV2 DS    0H
         LH    R1,0(R5)
*
UNPKHWVA DS    0H
         LTR   R1,R1              Test value
         JH    UNPKHWVD
         LHI   R15,7              Preset LastError = 7
         L     R1,64(R10)
         ST    R15,16(R1)
         XR    R1,R1              Set to 0 on negative
*
UNPKHWVD DS    0H
         L     R15,UNPKTPTR
         STH   R1,0(R15)          Store actual value in format string
         L     R14,UNPKR14B
         BR    R14
*
********************************************
* Remove leading and trailing spaces
* IN:  R0 -> String
*      R1 =  Length
* OUT: R0 -> String
*      R1 =  Length
UNPKSTP  DS    0H
         LTR   R1,R1              Length = 0
         BZR   R14                ...return
* Remove leading spaces
         CLI   0(R0),C' '
         JNE   UNPKSTPA
         AHI   R0,1
         BCT   R1,UNPKSTP
         BR    R14
*
UNPKSTPA DS    0H
         LR    R15,R0             Point to last character in string
         AR    R15,R1
* Remove trailing spaces
UNPKSTPB DS    0H
         CLI   R15,C' '
         BER   R14
         AHI   R0,-1
         BCT   R1,UNPKSTPB
         BR    R14
*
********************************************
* Get string field
* OUT: R0 -> String start
*      R1 =  String length
UNPKAREA DS    0H
         ST    R14,UNPKR14A
         LH    R1,UNPKSRCX+4      R1 = Starting length
         L     R14,UNPKSRCC       Current position
         LTR   R14,R14            No input?
         JZ    UNPKSETR
         S     R14,UNPKSRCX       R14 = Current displacement
         SR    R1,R14             R1 = Remaining length
         JM    UNPKSETR
         JP    UNPKARE5
         TM    UNPKFLGA,UNPKFLES
         JO    UNPKSETR
         L     R15,UNPKSRCC
         AHI   R15,-1
         CLC   0(1,R15),UNPKDLIM
         JNE   UNPKSETR
         L     R0,UNPKSRCC
         XR    R1,R1
         OI    UNPKFLGA,UNPKFLES
         J     UNPKAREE
UNPKARE5 DS    0H
         TM    UNPKFLGS,PUFLPLUS  + flag?
         JNO   UNPKARE1
         L     R0,UNPKSRCC
         J     UNPKARED
*
UNPKARE1 DS    0H
         NC    UNPKDLIM,UNPKDLIM  Delimiter?
         JZ    UNPKAREB           ...No - continue
* Get delimited pointer / length
         MVC   60(4,R13),UNPKSRCC Source field
         ST    R1,64(R13)
         MVC   68(2,R13),UNPKFLGS
         MVC   70(1,R13),UNPKDLIM
UNPKARE2 DS    0H
         L     R15,UNPKDINP       DMNDINP
         BASR  R14,R15
         L     R0,60(R13)
         L     R1,64(R13)
         MVC   UNPKSRCC,68(R13)
         MVC   UNPKFLGA+1(1),72(R13)
         J     UNPKAREE
* Get undelimited pointer / length
UNPKAREB DS    0H
         LA    R1,2(R3)
         BRAS  R14,UNPKHWV        R1 =  Length of field
         L     R0,UNPKSRCC        R0 -> Source field
         LTR   R1,R1              If len is 0 (unspecified)
         JNZ   UNPKARED
         LH    R1,UNPKDWID        ...load default width
UNPKARED DS    0H
         LR    R15,R0
         AR    R15,R1
         ST    R15,UNPKSRCC
*
UNPKAREC DS    0H
         TM    UNPKFLGS,PUFLBLNK  Retain blanks?
         JO    UNPKAREE          ...Jump over BRAS
         TM    UNPKFLGS,PUFLPLUS
         JO    UNPKAREE
         BRAS  R14,UNPKSTRP       Strip leading/trailing blanks
*
UNPKAREE DS    0H
         LR    R14,R0
         AR    R14,R1             R14 = End of field
         L     R15,UNPKSRCX
         AH    R15,UNPKSRCX+4     R15 = End of input
         SR    R15,R14            Field end past input end?
         JNM   UNPKAREZ
         AR    R1,R15             Reduce length to acceptable length
*
UNPKAREZ DS    0H
         L     R14,UNPKR14A
         BR    R14
*
********************************************
* Retrieve next argument
* OUT:   R5 -> Target argument
UNPKARG  DS    0H
         L     R5,UNPKDSTC
*
         TM    UNPKFLGA,UNPKFLAR
         JNO   UNPKARG1
         LH    R15,UNPKARRC       R15 = Current count
         AHI   R15,-1             Decrement for displacement
         JZ    UNPKARG1
*
         MH    R15,UNPKELEL
         AHI   R5,-4
         L     R5,0(R5)
         AR    R5,R15
         BR    R14
*
UNPKARG1 DS    0H
         LA    R15,4(R5)
         ST    R15,UNPKDSTC
         L     R5,0(R5)
* Decrement # of remaining arguments
         LH    R15,UNPKARGC
         LTR   R15,R15            At end?
         JNH   UNPKSETR           ...Not enough arguments
         BCTR  R15,0
         STH   R15,UNPKARGC
         BR    R14
*
********************************************
* Ignore leading and trailing spaces
* IN:  R0 -> String
*      R1 =  String length
* OUT: R0 -> String
*      R1 =  String length
UNPKSTRP DS    0H
         ST    R14,UNPKR14B
         ST    R0,60(R13)
         ST    R1,64(R13)
         L     R15,UNPKCSPC       DMNCSPC
         BASR  R14,R15
         LH    R15,60(R13)        R15 = # of leading spaces
         SR    R1,R15             Remove spaces from length
         AR    R0,R15             Move beginning address if needed
         SH    R1,62(R13)
         L     R14,UNPKR14B
         BR    R14
**************************
*    DINPLOCL
**************************
DINPLOCL DSECT
DINPREGS DS    15F                Saved registers
DINPSTRI DS    F                  -> Input string
DINPSTRL DS    F                  Length of input string
DINPSPCF DS    XL2                Flags
DINPDCHR DS    C                  Delimiter character
* Local variables
DINPSCB  DS    3F
DINPSCB2 DS    3F
DINPINT  DS    F
DINPR14  DS    F
DINPFLAG DS    C                  Quoted string flag (X'80')
DINPLVL  EQU   *-DINPSCB          Local variables length
         DS    0D
DINPLGTH EQU   *-DINPLOCL
*
         ORG   DINPSTRI
DINPOUTS DS    F                  -> Start of output string
DINPOUTL DS    F                  Output length
DINPOUTN DS    F                  -> Next start
DINPOUTF DS    C                  Quoted string flag (X'80')
**************************
*    V40DINP
**************************
V40DINP  CSECT
V40DINP  AMODE ANY
V40DINP  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,DINPLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DINPSTRT
DINP000  EQU   *
DINPSRCH DC    A(DMNSRCH)
DINPCSPC DC    A(DMNCSPC)
DINPQUOT DC    C'"'
*
         USING DINP000,R11
         USING DINPLOCL,R12
*
* Build an scb with trimmed input
DINPSTRT DS    0H
         XC    DINPSCB(DINPLVL),DINPSCB
         XR    R4,R4              R4 -> Ending address
* Trim leading spaces
         L     R2,DINPSTRI        R2 -> Input string
         L     R3,DINPSTRL        R3 = Length
         TM    DINPSPCF,PUFLBLNK  Space flag?
         JO    DINP0110
         ST    R2,60(R13)         String address
         ST    R3,64(R13)         String length
         L     R15,DINPCSPC       DMNCSPC
         BASR  R14,R15
         AH    R2,60(R13)
         SH    R3,60(R13)
DINP0110 DS    0H
         ST    R2,DINPSCB
         STH   R3,DINPSCB+4
         STH   R3,DINPSCB+6
*
         CLI   0(R2),C'"'         Quoted input?
         JNE   DINP0500
         OI    DINPFLAG,X'80'     Set quoted string flag
         LA    R2,1(R2)           Bypass quote mark
         BCTR  R3,0
         ST    R2,DINPSCB         ...and update scb
         STH   R3,DINPSCB+4
         STH   R3,DINPSCB+6
         LR    R7,R2              R7 -> Pointer to string start
         LR    R8,R3              R8 =  String length
*
         LTR   R3,R3              Quote only character?
         JZ    DINP0900           ...We're done
* Find ending quote mark
DINP0130 DS    0H
         CLI   0(R2),C'"'         Ending quote?
         JE    DINP0140
         CLC   0(1,R2),DINPDCHR   Delimiter?
         JNE   DINP0135
         OI    DINPFLAG,X'40'     Set embedded character flag
DINP0135 DS    0H
         AHI   R2,1
         BRCT  R3,DINP0130
         J     DINP0900           No ending quote - use rest
*
DINP0140 DS    0H
         LR    R4,R2              Point to source
         AHI   R4,-1
         CLI   0(R4),C'\'         Escaped quote?
         JE    DINP0150           ...yes - deal with it
*
         AHI   R2,1               Bypass first quote
         AHI   R3,-1
         LTR   R3,R3
         JNZ   DINP0145
         L     R2,DINPSCB
         LH    R3,DINPSCB+4
         BCTR  R3,0
         LR    R5,R2
         AR    R5,R3
         AHI   R5,2
         J     DINP0900
*
DINP0145 DS    0H
         CLI   0(R2),C'"'         2 quotes in a row?
         JNE   DINP0200
*
DINP0150 DS    0H
         OI    DINPFLAG,X'40'     Set embedded character flag
         J     DINP0135
*
* Find delimiter
DINP0200 DS    0H
         ST    R2,DINPSCB
         STH   R3,DINPSCB+4
         STH   R3,DINPSCB+6
         BRAS  R14,DINPFDL
         LR    R2,R7              R2 -> Start of string
         SR    R8,R3              R3 =  Calculated length
         LR    R3,R8
         AHI   R3,-1              ......Don't count ending quote
         LR    R5,R2              R5 =  Start of next field
         AR    R5,R3
         A     R5,DINPINT
         AHI   R5,2               ......Add ending quote & delimiter
         J     DINP0900
*
* Non-quoted string
* Find delimiter
DINP0500 DS    0H
         BRAS  R14,DINPFDL
         L     R3,DINPINT         R3 = Length
         LR    R5,R2              R5 = Start of next field
         AR    R5,R3
         LA    R5,1(R5)           Bypass delimiter
* Trim trailing spaces
         TM    DINPSPCF,PUFLBLNK  Space flag?
         JO    DINP0900
         ST    R2,60(R13)
         ST    R3,64(R13)
         L     R15,DINPCSPC       DMNCSPC
         BASR  R14,R15
         SH    R3,62(R13)         Adjust length if necessary
         J     DINP0900
*
*
* Subroutine - find delimiter; return in DINPINT
DINPFDL  DS    0H
         ST    R14,DINPR14
         LA    R1,DINPDCHR
         ST    R1,DINPSCB2
         LHI   R1,1
         STH   R1,DINPSCB2+4
         STH   R1,DINPSCB2+6
*
         LA    R1,DINPSCB
         ST    R1,60(R13)
         LA    R1,DINPSCB2
         ST    R1,64(R13)
         LA    R1,DINPINT
         ST    R1,68(R13)
         L     R15,DINPSRCH       DMNSRCH
         BASR  R14,R15
         OC    60(4,R13),60(R13)
         JNZ   DINPFDLX
         LH    R1,DINPSCB+4       ...set length to max
         ST    R1,DINPINT
DINPFDLX DS    0H
         L     R14,DINPR14
         BR    R14
*
* Load return values
DINP0900 DS    0H
         ST    R2,DINPOUTS
         ST    R3,DINPOUTL
         ST    R5,DINPOUTN
         MVC   DINPOUTF,DINPFLAG
*
         LM    R0,R14,DINPREGS
         BR    R14
**************************
*    CSPCLOCL
**************************
CSPCLOCL DSECT
CSPCREGS DS    15F                Saved registers
CSPCSTRI DS    F                  -> Input string
CSPCSTRL DS    F                  Length of input string
         DS    0D
CSPCLGTH EQU   *-CSPCLOCL
*
         ORG   CSPCSTRI
CSPCLEFT DS    H                  Number of leading spaces
CSPCRGHT DS    H                  Number of trailing spaces
**************************
*    DMNCSPC
**************************
DMNCSPC  CSECT
DMNCSPC  AMODE ANY
DMNCSPC  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,CSPCLGTH
         L     R15,88(R10)
         BASR  R14,R15
*
         USING CSPCLOCL,R12
*
* Initialization
CSPCSTRT DS    0H
         LM    R2,R3,CSPCSTRI     R2 -> String; R3 = Length
         XR    R4,R4              R4 = Leading counter
         XR    R5,R5              R5 = Trailing counter
*
* Loop #1
CSPCLPA  DS    0H
         LTR   R3,R3
         JNH   CSPCDONE
         CLI   0(R2),C' '
         JNE   CSPCLPAX
         LA    R2,1(R2)
         LA    R4,1(R4)
         BCTR  R3,0
         J     CSPCLPA
*
CSPCLPAX DS    0H
         AR    R2,R3              R2 -> End of string
         BCTR  R2,0
*
* Loop #2
CSPCLPB  DS    0H
         LTR   R3,R3
         JNH   CSPCDONE
         CLI   0(R2),C' '
         JNE   CSPCDONE
         BCTR  R2,0
         BCTR  R3,0
         LA    R5,1(R5)
         J     CSPCLPB
*
* Module end
CSPCDONE DS    0H
         STH   R4,CSPCLEFT
         STH   R5,CSPCRGHT
         LM    R0,R14,CSPCREGS
         BR    R14
**************************
*    DMNROTL
**************************
DMNROTL  CSECT
DMNROTL  AMODE ANY
DMNROTL  RMODE ANY
         DC    H'0'
**************************
*    DMNROTD
**************************
DMNROTD  CSECT
DMNROTD  AMODE ANY
DMNROTD  RMODE ANY
         DC    H'0'
**************************
*    DMNROTU
**************************
DMNROTU  CSECT
DMNROTU  AMODE ANY
DMNROTU  RMODE ANY
         DC    H'0'
**************************
*    DMNTCBC
**************************
DMNTCBC  CSECT
DMNTCBC  AMODE ANY
DMNTCBC  RMODE ANY
         DC    H'0'
**************************
*    DMNSEL
**************************
DMNSEL   CSECT
DMNSEL   AMODE ANY
DMNSEL   RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(2,R12) = option number
*     Option 1 - Load table
*        62(2,R12) unused
*        64(4,R12) -> load cursor
*        68(4,R12) -> table cursor to be created
*        72(4,R12) -> string or scb or is null
*        76(2,R12) = string length or zero
*     All other options
*        62(2,R12) = index number
*        64(4,R12) -> table cursor
*        68(-,R12) -> index record (option 4)
*  Output results
*        60(R12) = return code
*        64(R12) -> record found
*        68(R12) -> strings found
*  Table cursor layout
*        00 - pointer to Table Control Block (TCB)
*        04 - pointer to pool
*  TCB layout
*        00 - Halfword number of tables
*        02 - Halfword number of pages
*        04 - Pointer to page array
*        08 - Pointer to table base
*        12 - Pointer to pool
*        16 - Record number of current master record
*        20 - Flags  80 = have record
*                    40 = dynamic ROT processing
*                    20 = Consolidated table
*                    10 = Unknown type - Index externally set
*        22 - Halfword number of current index
*        24 - Pointer to current master record
*        28 - Pointer to current master page
*        32 - Pointer to current index record
*        36 - Pointer to current index page
*        40 - Pointer to current table frame
*        44 - reserved
*        48 - reserved
*        52 - Pointer to master table frame
*        56 - Pointer to first index table frame
*        60 - Pointer to 2nd index table frame
*        64 - etc. TCB length is 4*numtabs + 52
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,88  END
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,SELINIT
SEL000   EQU   *
SELALC   DC    A(DMNALC)
SELLOAD  DC    A(DMNLOAD)
SELDREF  DC    A(DMNDREF)
SELRLSE  DC    A(DMNRLSE)
SELLKUP  DC    A(DMNLKUP)
SELTFST  DC    A(DMNTFST)
SELTLST  DC    A(DMNTLST)
SELTNXT  DC    A(DMNTNXT)
SELTPRV  DC    A(DMNTPRV)
SELECNB  DC    A(DMNECNB)
SELFREF  DC    A(DMNFREF)
SELHPVC  DC    A(DMNHPEG)
SELCNTT  DC    A(DMNCNTT)
SELTCBC  DC    A(DMNTCBC)
SELROTD  DC    A(DMNROTD)
SELROTU  DC    A(DMNROTU)
         USING SEL000,R11
*
SELINIT  DS    0H
         LH    R8,60(R12)
         CHI   R8,1            LOAD TABLE?
         JE    SELOP01
         L     R2,64(R12)      TABLE CURSOR
         LTR   R2,R2
         JNZ   SELINIT1
         LHI   R9,24           No table cursor
         J     SELER09
SELINIT1 DS    0H
         L     R2,0(R2)        TCB
         LTR   R2,R2
         JNZ   SELINIT2
         LHI   R9,113          Table not loaded
         J     SELER09
SELINIT2 DS    0H
         TM    20(R2),X'20'    CHECK FLAGS FOR HPEGS
         JO    SELHPGS
         TM    20(R2),X'10'    Index externally set (unknown type)
         JNO   SELINDX
         MVC   62(2,R12),22(R2)  ...Load from saved area
         J     SELINDX
*
* Option 1 - load table
*
SELOP01  LM    R2,R4,64(R12)
         L     R1,0(R3)          TCB exists?
         LTR   R1,R1
         JZ    SELOP01A
         LHI   R9,113            Cannot reopen if already open
         J     SELER09
SELOP01A DS    0H
         LTR   R4,R4             Check SCB / string address
         JZ    SEL010            ...use current section
         LH    R14,76(R12)       Check string length
         LTR   R14,R14
         JNZ   SELOP01B          ...get new section
         L     R14,0(R4)         Check SCB pointer
         LTR   R14,R14
         JZ    SEL010            ...use current section
         LH    R14,4(R4)         Check SCB length
         LTR   R14,R14
         JZ    SEL010            ...use current section
* Need to do a DMNLOAD first
SELOP01B DS    0H
         LHI   R14,5
         STH   R14,60(R13)       Dmnload optn 5
         ST    R2,64(R13)        Cursor
         ST    R4,68(R13)        Path SCB or string
         XC    72(8,R13),72(R13) no return
         MVC   76(2,R13),76(R12) path length or 0
         L     R15,SELLOAD       DMNLOAD
         BASR  R14,R15
         L     R9,60(R13)
         LTR   R9,R9
         JNZ   SELER09
* Now have a filled-in load cursor
SEL010   L     R5,0(R2)          Load cursor
         LTR   R5,R5
         JNZ   SEL011
         LHI   R9,113            Cursor not set
         J     SELER09
SEL011   LM    R6,R7,0(R5)       Base, section
         LTR   R7,R7             Section?
         JNZ   SEL012
         LHI   R9,116            No section
         J     SELER09
SEL012   DS    0H
         CLI   0(R7),0           Search for NULL
         JE    SEL013
         LA    R7,1(R7)
         J     SEL012
SEL013   LA    R7,1(R7)          Bypass NULL
         ST    R7,60(R13)
         L     R15,SELECNB       DMNECNB
         BASR  R14,R15
         L     R7,60(R13)        Table offset
         LTR   R7,R7
         JNZ   SEL014
         LHI   R9,116            Section has no table
         J     SELER09
SEL014   STM   R6,R7,60(R13)
         L     R15,SELFREF       DMNFREF
         BASR  R14,R15
         L     R7,60(R13)        Table
         LTR   R7,R7
         JNZ   SEL020
         LHI   R9,116            Section has no table
         J     SELER09
*  R3->table cursor, R6->base, R7->table address frame
SEL020   DS    0H
         L     R2,0(R3)         See if there is a TCB
         LTR   R2,R2
         JZ    SEL030
         TM    20(R2),X'40'     Dynamic pages?
         JNO   SEL025
         ST    R2,60(R13)       Unchain it prior to release
         L     R15,SELROTU      DMNROTU
         BASR  R14,R15
SEL025   DS    0H
         LH    R1,0(R2)         Number of tables
         SLL   R1,2(R0)         Multiply by 4
         AHI   R1,52            Length of rest of block
         ST    R2,60(R13)       ->TCB
         ST    R1,64(R13)       Length of TCB
         MVC   68(4,R13),4(R3)  Pool
         L     R15,SELRLSE      DMNRLSE
         BASR  R14,R15
         XC    0(4,R3),0(R3)
*
SEL030   LH    R14,0(R7)        Number of tables
         SLL   R14,2(R0)        Multiply by 4
         AHI   R14,52           Length of rest of block
         ST    R14,60(R13)      Length of TCB
         MVC   64(4,R13),4(R3)  Pool
         L     R15,SELALC       DMNALC
         BASR  R14,R15
         L     R2,60(R13)       New TCB
         LTR   R2,R2
         JNZ   SEL040
         LHI   R9,23            No memory for TCB
         J     SELER09
*
SEL040   XC    0(52,R2),0(R2)   Zero the TCB
         ST    R2,0(R3)         Save in table cursor
         MVC   0(4,R2),0(R7)    Tables, pages
         LH    R4,0(R2)         Number of tables
         LA    R5,52(R2)        Table frame pointers
         ST    R6,8(R2)         Base
         MVC   12(4,R2),4(R3)   Pool
         TM    4(R6),X'80'      Dynamic ROT processing?
         JNO   SEL042
         OI    20(R2),X'40'
SEL042   LA    R7,4(R7)         Next table
         STM   R6,R7,60(R13)    Base, Reference
         L     R15,SELDREF      DMNDREF
         BASR  R14,R15
         MVC   0(4,R5),60(R13)  Table frame pointer
         LA    R5,4(R5)
         BRCT  R4,SEL042
         ST    R7,4(R2)         Page array
         LH    R14,2(R2)        Number of pages
         LTR   R14,R14
         JNZ   SELOK            Table now open for business
*
* Consolidated table: R7->page reference of entire table
         OI    20(R2),X'20'     INDICATE Consolidated
         LA    R7,4(R7)
         STM   R6,R7,60(R13)    (Base, Reference) of table page
         L     R15,SELDREF      DMNDREF
         BASR  R14,R15
         MVC   28(4,R2),60(R13)
         L     R5,52(R2)        MASTER TABLE
         MVC   32(4,R2),16(R5)  NUMBER OF RECORDS
         MVC   36(2,R2),4(R5)   RECORD LENGTH
         L     R5,56(R2)        INDEX TABLE
         MVC   38(2,R2),12(R5)  KEY LENGTH
         L     R5,32(R2)        Number of records
         MH    R5,36(R2)        LRECL
         A     R5,28(R2)        First Record
         ST    R5,40(R2)        After last record
         J     SELOK
*
* R8 = option, get cursor and index
SELINDX  DS    0H
         CHI   R8,4             2=close,3=reset
         JL    SELOPTN
         CHI   R8,7             7=next,8=prev
         JNL   SELOPTN
*
         NI    20(R2),X'7F'     No record as yet
         LH    R4,62(R12)       Index number
         CH    R4,0(R2)         Number of tables
         JL    SEL053
         LHI   R9,49            Bad index
         J     SELER09
SEL053   STH   R4,22(R2)        Save index number
         SLL   R4,2(R0)         Multiply by 4
         L     R4,52(R2,R4)     R4->index to use
         ST    R4,40(R2)        Current table frame
*
* Check for clustered tables. Error if reading by row
*    Cluster bit only set on master table.
*    If the index of a clustered master, switch to master
         TM    15(R4),X'80'     Clustered?
         JZ    SEL054           No, check the master
         LHI   R9,50            Attempt lookup clustered by row
         J     SELER09
SEL054   L     R14,52(R2)       Check the master
         CR    R4,R14           Using the master
         JE    SELOPTN          Non-clustered master, OK
         TM    15(R14),X'80'    Clustered?
         JZ    SELOPTN          Not clustered
         LR    R4,R14           Switch to master
         ST    R4,40(R2)
         XC    22(2,R2),22(R2)  Index zero
*
*  R8 = Option. R2->TCB.
*
SELOPTN  CHI   R8,8
         JH    SELBADOP
         SLL   R8,2(R0)         Multiply by 4
         BRAS  R14,SEL060
         J     SELBADOP         Option 0 - error
         J     SELBADOP         Option 1 - open
         J     SELOP02          Close
         J     SELOP03          Reset
         J     SELOP04          Index load
         J     SELOP05          First
         J     SELOP06          Last
         J     SELOP07          Next
         J     SELOP08          Previous
SEL060   B     0(R14,R8)
SELBADOP LHI   R9,27            Bad option
         J     SELER09
*
SELOP02  DS    0H
         TM    20(R2),X'40'     Dynamic pages?
         JNO   SELOP02A
         ST    R2,60(R13)       Unchain it prior to release
         L     R15,SELROTU      DMNROTU
         BASR  R14,R15
SELOP02A DS    0H
         L     R3,64(R12)       R3 -> Table cursor
         LH    R14,0(R2)        Number of tables
         SLL   R14,2(R0)        Multiply by 4
         AHI   R14,52           Length of rest of block
         ST    R2,60(R13)       ->TCB
         ST    R14,64(R13)      Length of TCB
         MVC   68(4,R13),4(R3)  Pool
         L     R15,SELRLSE      DMNRLSE
         BASR  R14,R15
         L     R3,64(R12)       R3->Table cursor
         XC    0(4,R3),0(R3)
         J     SELOK
*
SELOP03  NI    20(R2),X'7F'     No record
         J     SELOK
*
* Option 4 - select table using index(keys)
SELOP04  DS    0H
         LH    R14,62(R12)      Load index number
         LTR   R14,R14          If row index
         JNZ   SELOP04A
         L     R14,68(R12)      ...load index key
         LTR   R14,R14          ...make sure it's non-negative
         JNL   SELOP04A
         LHI   R9,1             ...error code = 1 (don't ask me why)
         J     SELER09
SELOP04A DS    0H
         L     R4,40(R2)        R4->current table frame
         TM    15(R4),X'80'     Clustered?
         JZ    SEL070
         L     R14,56(R2)       1st index
         LH    R5,12(R14)       Index record length
         J     SEL071
SEL070   LH    R5,12(R4)        R5 = index record length
SEL071   AHI   R5,15            Will round up to multiple of 8
         SRL   R5,3             Knock off lower 3 bits
         SLL   R5,3
         AR    R13,R5           Protect the index record
         L     R15,88(R10)
         BASR  R14,R15
         ST    R2,60(R13)       Table control block
         ST    R4,64(R13)       Table frame
         LA    R14,68(R12)      Index record
         ST    R14,68(R13)      Index record
         L     R15,SELLKUP      DMNLKUP
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     SELDONE
*
* Option 5 - select first table using index
*
SELOP05  DS    0H
         LH    R3,62(R12)
         LTR   R3,R3            Row index?
         JNZ   SELOP05A         no...continue
         LHI   R14,4            Index lookup
         STH   R14,60(R13)
         XC    62(2,R13),62(R13)  Row index
         MVC   64(4,R13),64(R12)  Table cursor
         XC    68(4,R13),68(R13)  Row zero
         BRAS  R14,DMNSEL
         J     SELOP05B
*
SELOP05A DS    0H
         ST    R2,60(R13)
         MVC   64(8,R13),60(R12) SEND ON PARAMETERS
         L     R15,SELTFST       DMNTFST
         BASR  R14,R15
*
SELOP05B DS    0H
         MVC   60(12,R12),60(R13)
         J     SELDONE
*
* Option 6 - select last table using index
SELOP06  DS    0H
         LH    R3,62(R12)
         LTR   R3,R3            Row index?
         JNZ   SELOP06A         no...continue
*
         MVC   60(4,R13),64(R12)  Table cursor
         L     R15,SELCNTT      Get # of rows in table
         BASR  R14,R15
         L     R15,60(R13)      R15 = number of table rows
*
         LHI   R14,4            Index lookup
         STH   R14,60(R13)
         XC    62(2,R13),62(R13)  Row index
         MVC   64(4,R13),64(R12)  Table cursor
         BCTR  R15,0
         ST    R15,68(R13)      Row number
         BRAS  R14,DMNSEL
         J     SELOP06B
*
SELOP06A ST    R2,60(R13)
         L     R15,SELTLST       DMNTLST
         BASR  R14,R15
*
SELOP06B DS    0H
         MVC   60(12,R12),60(R13)
         J     SELDONE
*
* Option 7 - select next table
SELOP07  ST    R2,60(R13)
         L     R15,SELTNXT       DMNTNXT
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     SELDONE
*
* Option 8 - select prev table
SELOP08  ST    R2,60(R13)
         L     R15,SELTPRV       DMNTPRV
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     SELDONE
*
* HPEGS table - exit directly into different module without
*    modifying the stack.  This creates the illusion that
*    we never came to this module.  First, restore the registers
*    because of the modification of R14 for the OOM routine.
SELHPGS  DS    0H
         LM    R0,R14,0(R12)
         L     R15,SELHPVC       DMNHPEG
         BR    R15
*
SELOK    XR    R9,R9
SELER09  ST    R9,60(R12)
SELDONE  DS    0H
         LTR   R2,R2             If TCB doesn't exist
         JZ    SELEXIT           ...don't check it
         TM    20(R2),X'40'
         JNO   SELEXIT
         ST    R2,60(R13)
         L     R15,SELTCBC       DMNTCBC
         BASR  R14,R15
*
         L     R15,SELROTD       DMNROTD
         BASR  R14,R15
*
SELEXIT  DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNLKUP
**************************
DMNLKUP  CSECT
DMNLKUP  AMODE ANY
DMNLKUP  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) -> Table control block
*        64(4,R12) -> Table frame
*        68(4,R12) -> Key (or recno if master)
*  Temporaries
*        72(4,R12) Current record number
*        76(1,R12) Diff (80=neg, 0=eq, 1=pos)
*        77(1,R12) Zigzaging switch
*        78(1,R12) Table type
*        79(1,R12) Return code
*        80(4,R12) Stack pointer
*        84(4,R12) Bottom
*        88(4,R12) Top
*        92(2,R12) Branch record length
*        94(2,R12) Key length
*        96(4*32,R12) Record stack
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,224  END
         L     R15,88(R10)
         BASR  R14,R15
         LM    R2,R4,60(R12)    TCB,Frame,Pkey
         CNOP  0,4
         BRAS  R11,LKUPINIT
         DC    A(DMNDREF)       0
         DC    X'00007FFF'      4
         DC    A(DMNMAST)       8
         CLC   0(0,R4),0(R8)    12
         CLC   0(0,R8),0(R15)   18
*
LKUPINIT XC    72(28,R12),72(R12)
LKUPAGIN LA    R1,96(R12)       Stack
         ST    R1,80(R12)
         TM    15(R3),X'80'     Clustered table?
         JZ    LKUP002          No
         L     R14,56(R2)       First index
         MVC   92(4,R12),10(R14) BrLen,KeyLen
         MVC   78(1,R12),3(R14)  Table type
         J     LKUP003
LKUP002  MVC   92(4,R12),10(R3)  BrLen,KeyLen
         MVC   78(1,R12),3(R3)   Table type
*
LKUP003  LH    R14,0(R3)        Root page number
         SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,0(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   LKUPPAGE
         LHI   R9,8             Page fault
         J     LKUPER9
*
LKUPPAGE LH    R6,6(R5)         Record count
         N     R6,4(R11)        Mask off branch bit
         TM    6(R5),X'80'      Is this a branch page?
         JZ    LKUP010
         LH    R7,92(R12)       Branch row length
         J     LKUPSRCH
LKUP010  LH    R7,4(R3)         Leaf row length
         CLI   78(R12),0        TblTYPE_RELATIVE?
         JNE   LKUPSRCH
         LTR   R6,R6            Records in page
         JNZ   LKUP011
         LHI   R9,6             Table empty
         J     LKUPER9
LKUP011  MVC   0(4,R13),0(R4)   Align
         L     R14,0(R13)       Key
         S     R14,72(R12)      Recno
         CR    R14,R6           compare to record count
         JL    LKUP012
         LHI   R9,3             Key too high
         J     LKUPER9
LKUP012  LR    R8,R14
         MSR   R8,R7            lrecl*(key-recno)
         LA    R8,16(R8,R5)     ->record
         J     LKUPOK
*
* Search page. R2->TCB, R3->Table, R4->Key,
*              R5->Page, R6=Records left, R7=lrecl
LKUPSRCH LH    R14,94(R12)      Key length
         BCTR  R14,R0           Decrement for execute
         MVI   76(R12),1        Result high if nothing found
         CHI   R6,4
         JH    LKUPBIN          Do binary search
         LTR   R6,R6
         JNZ   LKUP020
         LHI   R9,6             Table empty
         J     LKUPER9
LKUP020  LA    R8,16(R5)        Body
LKUP021  EX    R14,12(R11)      CLC 0(0,R4),0(R8)
         JL    LKUP022
         JE    LKUP023
         LA    R8,0(R7,R8)      Next record
         BRCT  R6,LKUP021
         J     LKUP060          Check end of page issues
LKUP022  MVI   76(R12),X'80'    Key lower than record
         J     LKUPZIG
LKUP023  MVI   76(R12),0        Key equal to record
         J     LKUPZIG
*
* Binary search
LKUPBIN  XC    84(4,R12),84(R12) Bottom = 0
         ST    R6,88(R12)       Top = keys left
LKUP030  L     R1,88(R12)       Top
         A     R1,84(R12)       bottom
         SRL   R1,1(R0)         Divided by 2
         LR    R15,R1
         MSR   R15,R7            * lrecl
         LA    R8,16(R15,R5)    Try this record
         EX    R14,12(R11)      CLC 0(0,R4),0(R8)
         JL    LKUP031
         JH    LKUP032
         MVI   76(R12),0        Mark it equal
         J     LKUP050
LKUP031  MVI   76(R12),X'80'    Mark it low
         J     LKUP033
LKUP032  MVI   76(R12),1        Mark it high
LKUP033  L     R15,88(R12)      Top
         S     R15,84(R12)      Top - bottom
         CHI   R15,1
         JNH   LKUP050          > 1, keep going
         CLI   76(R12),X'80'    is diff < 0?
         JNE   LKUP034
         ST    R1,88(R12)       diff < 0 -> top = middle
         J     LKUP030
LKUP034  ST    R1,84(R12)       diff > 0 -> bottom =middle
         J     LKUP030
*
* Found a record - if not unique key, ensure 1st in series of equals
*
LKUP050  CLI   78(R12),1        TblTYPE_KEYED?
         JNE   LKUP060
         CLI   76(R12),1        diff <= 0 ?
         JE    LKUP060
         LA    R1,16(R5)        R1->Beginning of records
LKUP051  CR    R8,R1
         JNH   LKUP060          Stop at beginning
         LR    R15,R8
         SR    R15,R7           R15->record before this one
         EX    R14,18(R11)      CLC 0(0,R8),0(R15)
         JNE   LKUP060
         LR    R8,R15           Back up one record
         J     LKUP051
*
* Deal with key higher than highest in block, if needed
*
LKUP060  CLI   76(R12),1        diff > 0 ?
         JNE   LKUPZIG
         LR    R15,R6           keys in record
         BCTR  R15,R0            minus 1
         MSR   R15,R7            times lrecl
         LA    R15,16(R5,R15)   R15->last record
         CR    R8,R15           Is it last one?
         JNL   LKUP061
         AR    R8,R7            Move to next record
         MVI   76(R12),X'80'    Mark it low
         J     LKUPZIG
LKUP061  TM    6(R5),X'80'      Is this a leaf?
         JZ    LKUP062             Yes - move to next block
         CR    R8,R15           Move up if not at end
         JH    LKUPZIG
         AR    R8,R7            Move to next record
         J     LKUPZIG
*
* Key higher than highest leaf record in block. Move to next block
*
LKUP062  MVC   0(4,R13),8(R5)   Align Forward block
         L     R14,0(R13)
         LTR   R14,R14          At end of table?
         JZ    LKUPZIG
         SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,0(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   LKUP063
         LHI   R9,8             Page fault
         J     LKUPER9
LKUP063  LA    R8,16(R5)        First record in block
         LH    R14,94(R12)      Key length
         BCTR  R14,R0           Decrement for execute
         EX    R14,12(R11)      CLC 0(0,R4),0(R8)
         JL    LKUP064
         JH    LKUP065
         MVI   76(R12),0        Mark it equal
         J     LKUPZIG
LKUP064  MVI   76(R12),X'80'    Mark it low
         J     LKUPZIG
LKUP065  MVI   76(R12),1        Mark it high
*
* Deal with zigzagging if non-unique index
*
LKUPZIG  CLI   77(R12),0        zigzag switch
         JZ    LKUPLEAF
         MVI   77(R12),0        zigzag = 0
         CLI   76(R12),1        Only do this if diff > 0
         JNE   LKUPLEAF
         LH    R7,92(R12)       reset lrecl to branch length
         L     R1,80(R12)       stack pointer
         AHI   R1,-4            go back one
         L     R8,0(R1)         get index record
         AR    R8,R7            next one
         ST    R8,0(R1)
         J     LKUPDOWN
*
* When get here, have found a record. R8->record
*    76(R12) = 80 (lower than key)
*               or 0 (equal to key) or 1 (higher than key)
LKUPLEAF TM    6(R5),X'80'      Is it a leaf?
         JO    LKUPBRCH         No
         L     R1,80(R12)       Stack pointer
         ST    R8,0(R1)
         CLI   76(R12),1        diff > 0
         JNE   LKUP070
         LHI   R9,3             Key too high
         J     LKUPER9
LKUP070  CLI   76(R12),0        equal?
         JE    LKUPOK
         LHI   R9,1             Low key
         J     LKUPHAVE
*
* When get here, have found a branch record. Stack and go
*
LKUPBRCH CLI   76(R12),0        Diff == 0?
         JNE   LKUP072
         CLI   78(R12),1        TblTYPE_KEYED?
         JNE   LKUP071
         MVI   77(R12),1        zigzag - check block before
         J     LKUP072
LKUP071  AR    R8,R7            descend on this block
LKUP072  CLI   78(R12),0        TblTYPE_RELATIVE?
         JNE   LKUP080
         LA    R14,16(R5)       Body
         CR    R8,R14           1st record?
         JE    LKUP080
         LR    R14,R8           Record before this one
         SR    R14,R7
         MVC   72(4,R12),0(R14) Set recno
*
* Go look in the block just before this one
LKUP080  L     R1,80(R12)       Stack pointer
         ST    R8,0(R1)         Stack record pointer
         LA    R1,4(R1)
         ST    R1,80(R12)
LKUPDOWN AHI   R8,-4            block pointer
         MVC   0(4,R13),0(R8)   align
         L     R14,0(R13)       block number
         SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        R14->page
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)
         L     R15,0(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       New page
         LTR   R5,R5
         JNZ   LKUPPAGE
         LHI   R9,8             page fault
         J     LKUPER9
*
* Get here - have found a matching record.
LKUPOK   XR    R9,R9
LKUPHAVE OI    20(R2),X'80'     Have a record
         C     R3,52(R2)        Is this the master?
         JE    LKUPMAST
         ST    R5,36(R2)        Current index page
         ST    R8,32(R2)        Current index record
         LR    R4,R8            Current record +
         AH    R4,94(R12)       Key length
         L     R3,52(R2)        Now lookup master table
         XC    72(28,R12),72(R12)
         STC   R9,79(R12)       Save RC
         J     LKUPAGIN         Recurse, sort of
*
* Get here - have found a master record
LKUPMAST LH    R14,22(R2)       Did we start that way?
         LTR   R14,R14
         JNZ   LKUP100
         ST    R5,36(R2)        Index page
         ST    R8,32(R2)        Index record
LKUP100  MVC   16(4,R2),0(R4)   Current recno
         ST    R5,28(R2)        Master page
         ST    R8,24(R2)        Master record
*
         XR    R14,R14
         IC    R14,79(R12)      Saved return code
         CR    R9,R14
         JNL   LKUP101
         LR    R9,R14
LKUP101  ST    R9,60(R13)       Return code
         ST    R2,64(R13)       TCB
         L     R15,8(R11)       DMNMAST
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     LKUPDONE
*
LKUPER9  ST    R9,60(R12)
LKUPDONE LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNMAST
**************************
DMNMAST  CSECT
DMNMAST  AMODE ANY
DMNMAST  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) =  Return code
*        64(4,R12) -> TCB
*  Output results
*        60(4,R12) =  Return code
*        64(4,R12) -> Record
*        68(4,R12) -> Strings
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R2,64(R12)       TCB
         L     R8,24(R2)        Master record
         ST    R8,64(R12)       Save -> record
         L     R3,52(R2)        Master table frame
         LR    R6,R8
         AH    R6,6(R3)         R6->string section
         TM    0(R6),X'80'      Deleted record flag
         JZ    MAST010
         LHI   R9,5             Tbl_DELETED
         ST    R9,60(R12)
         J     MASTDONE
MAST010  LH    R14,8(R3)        String count
         LTR   R14,R14          Any strings?
         JNZ   MAST020
         XC    68(4,R12),68(R12) Null string pointer
         J     MASTDONE
MAST020  MVC   0(2,R13),0(R6)   Align string offset
         L     R5,28(R2)        Current master block
         LR    R7,R5
         AH    R7,0(R5)         End of master block
         SH    R7,0(R13)        Offset of this record's strings
         ST    R7,68(R12)
*
MASTDONE LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTFST
**************************
DMNTFST  CSECT
DMNTFST  AMODE ANY
DMNTFST  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) -> Table control block
*  Output results
*        60(4,R12) =  Return code
*        64(4,R12) -> Record
*        68(4,R12) -> Strings
*
         BRAS  R15,*+8
         DC    A(DMNBFF)
         L     R15,0(R15)
         BR    R15
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,TFST000
         DC    A(DMNMAST)       0
         DC    A(DMNLKUP)       4
         DC    A(DMNDREF)       8
         DC    X'00007FFF'     12
         DC    A(DMNTNXT)      16
*
TFST000  L     R2,60(R12)       TCB
         L     R3,40(R2)        Current table
         LH    R14,0(R3)        Root page number
*
TFSTLOOP SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,8(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   TFST010
         LHI   R9,8             Page fault
         J     TFSTER9
*
* Keep going until reach a leaf
TFST010  LH    R15,6(R5)        Number of records in block
         N     R15,12(R11)      Mask off bit
         LTR   R15,R15
         JNZ   TFST020
         LHI   R9,6             Table empty
         J     TFSTER9
*
TFST020  TM    6(R5),X'80'      Is this a leaf
         JO    TFSTBLK
         LA    R8,16(R5)        Leaf. R8->first record
         OI    20(R2),X'80'     Have a record
         ST    R5,36(R2)        Current page
         ST    R8,32(R2)        Current record
         TM    15(R3),8         Master table?
         JZ    TFST040
*
* Record is a master record
TFST030  ST    R5,28(R2)        Current master page
         ST    R8,24(R2)        Current master record
         XC    16(4,R2),16(R2)  Record zero
         XR    R9,R9            Get master information
         ST    R9,60(R13)
         ST    R2,64(R13)       TCB
         L     R15,0(R11)       DMNMAST
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   TFSTDONE
         J     TFSTNEXT
*
* Not a master record
TFST040  LR    R4,R8            Index record
         AH    R4,12(R3)        Key length
         MVC   0(4,R13),0(R4)   Align
         L     R15,0(R13)       Master record number
         LTR   R15,R15
         JL    TFSTNEXT         Deleted record
         ST    R15,16(R2)       Master record we want
         ST    R2,60(R13)       Table control block
         MVC   64(4,R13),52(R2) Master table frame
         ST    R4,68(R13)       Key (=master recno)
         L     R15,4(R11)       DMNLKUP
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   TFSTDONE
*
* Found a deleted record - call DMNTNXT
TFSTNEXT ST    R2,60(R13)
         L     R15,16(R11)      DMNTNXT
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     TFSTDONE
*
* Not a leaf - go to next block
TFSTBLK  L     R14,8(R5)        PageLower
         LTR   R14,R14
         JNZ   TFSTLOOP
         LHI   R9,15            Tbl_END
TFSTER9  ST    R9,60(R12)
         NI    20(R2),X'7F'     No record
TFSTDONE LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTLST
**************************
DMNTLST  CSECT
DMNTLST  AMODE ANY
DMNTLST  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) -> Table control block
*  Output results
*        60(4,R12) =  Return code
*        64(4,R12) -> Record
*        68(4,R12) -> Strings
*  Local variables
*        72(2,R12) =  Branch record length
*        76(4,R12) -> INPUT TCB
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,80  END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,TLST000
         DC    A(DMNMAST)       0
         DC    A(DMNLKUP)       4
         DC    A(DMNDREF)       8
         DC    X'00007FFF'     12
         DC    A(DMNTPRV)      16
*
TLST000  L     R2,60(R12)       TCB
         ST    R2,76(R12)
         L     R3,40(R2)        Current table
         LH    R7,4(R3)         Leaf record length
         TM    15(R3),X'80'     Clustered?
         JO    TLST002
         MVC   72(2,R12),10(R3)
         J     TLST003
TLST002  L     R14,56(R2)       1st index
         MVC   72(2,R12),10(R14)
*
TLST003  LH    R14,0(R3)        Root page number
TLSTLOOP SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,8(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   TLST010
         LHI   R9,8             Page fault
         J     TLSTER9
*
* Keep going until reach a leaf
TLST010  LH    R15,6(R5)        Number of records in block
         N     R15,12(R11)      Mask off bit
         LTR   R15,R15
         JNZ   TLST020
         LHI   R9,6             Table empty
         J     TLSTER9
*
TLST020  TM    6(R5),X'80'      Is this a leaf
         JO    TLSTBLK
         MSR   R15,R7           Numrecs * lrecl
         LA    R8,16(R5,R15)    Point after last record
         SR    R8,R7            Point to last record
         OI    20(R2),X'80'     Have a record
         ST    R5,36(R2)        Current page
         ST    R8,32(R2)        Current record
         TM    15(R3),8         Master table?
         JZ    TLST040
*
* Record is a master record
TLST030  ST    R5,28(R2)        Current master page
         ST    R8,24(R2)        Current master record
         MVC   0(4,R13),16(R3)  Align
         L     R15,0(R13)       Number of records in table
         BCTR  R15,R0           Subtract one - zero based
         ST    R15,16(R2)
         XR    R9,R9            Get master information
         ST    R9,60(R13)
         ST    R2,64(R13)       TCB
         L     R15,0(R11)       DMNMAST
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   TLSTDONE
         J     TLSTPREV
*
* Not a master record
TLST040  LR    R4,R8            Index record
         AH    R4,12(R3)        Key length
         MVC   0(4,R13),0(R4)   Align
         L     R15,0(R13)       Master record number
         LTR   R15,R15
         JL    TLSTPREV         Deleted record
         ST    R15,16(R2)       Master record we want
         ST    R2,60(R13)       Table control block
         MVC   64(4,R13),52(R2) Master table frame
         ST    R4,68(R13)       Key (=master recno)
         L     R15,4(R11)       DMNLKUP
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   TLSTDONE
*
* Found a deleted record - call DMNTPRV
TLSTPREV ST    R2,60(R13)
         L     R15,16(R11)      DMNTPRV
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         J     TLSTDONE
*
* Not a leaf - go to next block. R15 = recs in blk
TLSTBLK  MH    R15,72(R12)      Branch record length
         SH    R15,72(R12)      Less one record
         LA    R8,12(R5,R15)    12 not 16 subtracts 4
         MVC   0(4,R13),0(R8)   Align
         L     R14,0(R13)       Last sub-block
         LTR   R14,R14
         JNZ   TLSTLOOP
         LHI   R9,15            Tbl_END
TLSTER9  ST    R9,60(R12)
         NI    20(R2),X'7F'     No record
TLSTDONE DS    0H
         L     R14,60(R12) CHECK RTRN CODE
         LTR   R14,R14     IF NOT ZERO - LEAVE ALONE
         JNZ   TLSTDON2
         CNOP  0,4
         BRAS  R15,*+8
         DC    A(DMNBFL)
         MVC   60(12,R13),60(R12)  SAVE CURRENT RETURN
         MVC   72(4,R13),76(R12)
         L     R15,0(R15)
         BASR  R14,R15
         L     R14,60(R13)
         LTR   R14,R14
         JNZ   TLSTDON2    IF NONZERO RTRN - RETURN ORIGINAL
         MVC   60(12,R12),60(R13)
TLSTDON2 DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTNXT
**************************
DMNTNXT  CSECT
DMNTNXT  AMODE ANY
DMNTNXT  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) -> Table control block
*  Output results
*        60(4,R12) =  Return code
*        64(4,R12) -> Record
*        68(4,R12) -> Strings
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,NEXT000
         DC    A(DMNMAST)
         DC    A(DMNLKUP)
         DC    A(DMNDREF)
*
NEXT000  L     R2,60(R12)       TCB
         TM    20(R2),X'80'     Have record?
         JO    NEXT010
         LHI   R9,32            Not positioned
         J     NEXTER9
NEXT010  L     R3,40(R2)        Current table
         LH    R7,4(R3)         LRECL
         L     R5,36(R2)        Current page
         L     R8,32(R2)        Current record
         AR    R8,R7            Advance one record
*
* See if at end of block
NEXTLOOP LH    R15,6(R5)        Number of records in block
         MSR   R15,R7           Total record length
         LA    R15,16(R5,R15)   Points past end of records
         CR    R8,R15
         JNL   NEXTBLK          Need a new block
*
* Record at R8 is OK to use
NEXT030  ST    R5,36(R2)        Current page
         ST    R8,32(R2)        Current record
         TM    15(R3),8         Master table?
         JZ    NEXT040
*
* Record is a master record
         ST    R5,28(R2)        Current master page
         ST    R8,24(R2)        Current master record
         L     R15,16(R2)       Next master record number
         AHI   R15,1
         ST    R15,16(R2)
         XR    R9,R9            Get master information
         ST    R9,60(R13)
         ST    R2,64(R13)       TCB
         L     R15,0(R11)       DMNMAST
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   NEXTDONE
         AR    R8,R7            Next one again
         J     NEXTLOOP
*
* Not a master record
NEXT040  LR    R4,R8            Index record
         AH    R4,12(R3)        Key length
         MVC   0(4,R13),0(R4)   Align
         L     R15,0(R13)       Master record number
         LTR   R15,R15
         JNL   NEXT041
         AR    R8,R7            Deleted record
         J     NEXTLOOP
NEXT041  ST    R15,16(R2)       Master record we want
         ST    R2,60(R13)       Table control block
         MVC   64(4,R13),52(R2) Master table frame
         ST    R4,68(R13)       Key (=master recno)
         L     R15,4(R11)       DMNLKUP
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   NEXTDONE
         AR    R8,R7            Next one again
         J     NEXTLOOP
*
* Hit end of block - go to next block
NEXTBLK  MVC   0(4,R13),8(R5)   Align
         L     R14,0(R13)       Forward block
         LTR   R14,R14
         JNZ   NEXT050
         LHI   R9,15            Tbl_END
         J     NEXTER9
NEXT050  SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,8(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   NEXT051
         LHI   R9,8             Page fault
         J     NEXTER9
NEXT051  LA    R8,16(R5)        First record
         J     NEXTLOOP
*
NEXTER9  ST    R9,60(R12)
         NI    20(R2),X'7F'     No record
NEXTDONE LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTPRV
**************************
DMNTPRV  CSECT
DMNTPRV  AMODE ANY
DMNTPRV  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) -> Table control block
*  Output results
*        60(4,R12) =  Return code
*        64(4,R12) -> Record
*        68(4,R12) -> Strings
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,PREV000
         DC    A(DMNMAST)
         DC    A(DMNLKUP)
         DC    A(DMNDREF)
*
PREV000  L     R2,60(R12)       TCB
         TM    20(R2),X'80'     Have record?
         JO    PREV010
         LHI   R9,32            Not positioned
         J     PREVER9
PREV010  L     R3,40(R2)        Current table
         LH    R7,4(R3)         LRECL
         L     R5,36(R2)        Current page
         L     R8,32(R2)        Current record
*
* See if at beginning of block
PREVLOOP LA    R15,16(R5)       Body
         CR    R8,R15
         JNH   PREVBLK
         SR    R8,R7
*
* Record at R8 is OK to use
PREV030  ST    R5,36(R2)        Current page
         ST    R8,32(R2)        Current record
         TM    15(R3),8         Master table?
         JZ    PREV040
*
* Record is a master record
         ST    R5,28(R2)        Current master page
         ST    R8,24(R2)        Current master record
         L     R15,16(R2)       Next master record number
         AHI   R15,-1
         ST    R15,16(R2)
         XR    R9,R9            Get master information
         ST    R9,60(R13)
         ST    R2,64(R13)       TCB
         L     R15,0(R11)       DMNMAST
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   PREVDONE
         J     PREVLOOP
*
* Not a master record
PREV040  LR    R4,R8            Index record
         AH    R4,12(R3)        Key length
         MVC   0(4,R13),0(R4)   Align
         L     R15,0(R13)       Master record number
         LTR   R15,R15
         JL    PREVLOOP
         ST    R15,16(R2)       Master record we want
         ST    R2,60(R13)       Table control block
         MVC   64(4,R13),52(R2) Master table frame
         ST    R4,68(R13)       Key (=master recno)
         L     R15,4(R11)       DMNLKUP
         BASR  R14,R15
         MVC   60(12,R12),60(R13)
         L     R9,60(R13)
         CHI   R9,5             Tbl_DELETED
         JNE   PREVDONE
         J     PREVLOOP
*
* Hit end of block - go to previous block
PREVBLK  MVC   0(4,R13),12(R5)  Align
         L     R14,0(R13)       Back one block
         LTR   R14,R14
         JNZ   PREV050
         LHI   R9,15            Tbl_END
         J     PREVER9
PREV050  SLL   R14,2(R0)        Multiply by 4
         A     R14,4(R2)        Page array
         MVC   60(4,R13),8(R2)  base
         ST    R14,64(R13)      frame reference
         L     R15,8(R11)       DMNDREF
         BASR  R14,R15
         L     R5,60(R13)       R5->current page
         LTR   R5,R5
         JNZ   PREV051
         LHI   R9,8             Page fault
         J     PREVER9
PREV051  LH    R15,6(R5)        Number of records
         MSR   R15,R7           Times record length
         LA    R8,16(R15,R5)    Points after last record
         J     PREVLOOP
*
PREVER9  ST    R9,60(R12)
         NI    20(R2),X'7F'     No record
PREVDONE LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNDREF
**************************
DMNDREF  CSECT
DMNDREF  AMODE ANY
DMNDREF  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) = pointer to base
*        64(4,R12) = pointer to csect/offset
*  Output results
*        60(4,R12) - pointer to frame (zero if not there)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,DREF100
DREF000  EQU   *
DREFROTL DC    A(DMNROTL)
         USING DREF000,R11
*
DREF100  DS    0H
         LM    R6,R7,60(R12)   R6->base, R7->reference
         TM    4(R6),X'80'
         JNO   DREF200
         MVC   60(8,R13),60(R12) ->Base & Csect/offset
         L     R15,DREFROTL    DMNROTL
         BASR  R14,R15
         L     R4,60(R13)
         J     DREFDONE
*
DREF200  DS    0H
         MVC   68(4,R12),0(R7) Align reference
         LH    R4,68(R12)      Section number
         CH    R4,6(R6)
         JNL   DREFBAD
         SLL   R4,2(R0)        Multiply by 4
         LR    R5,R6           Base
         A     R5,16(R6)       Csect array
         L     R4,0(R5,R4)
         AH    R4,70(R12)      Add offset
         J     DREFDONE
DREFBAD  XR    R4,R4
DREFDONE ST    R4,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNFREF
**************************
DMNFREF  CSECT
DMNFREF  AMODE ANY
DMNFREF  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) = pointer to base
*        64(4,R12) = offset in original CTL file
*  Output results
*        60(4,R12) - pointer to frame (zero if not there)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,FREF100
FREF000  EQU   *
FREFDREF DC    A(DMNDREF)
         USING FREF000,R11
*
FREF100  DS    0H
         LM    R6,R7,60(R12)   R6->section, R7=value
*
* Binary search. R1=Bottom, R2=Top, R3=middle
*
         XR    R1,R1
         L     R2,12(R6)       Number of frames
FREFTEST LR    R3,R1
         AR    R3,R2
         SRL   R3,1(R0)        Mid = (top+bottom)/2
         LR    R8,R3
         SLL   R8,3(R0)        R8 = Mid * 8
         LA    R8,20(R8,R6)    R8->mid's entry
         C     R7,0(R8)
         JL    FREFLOW
         JH    FREFHIGH
* Found entry
         ST    R6,60(R13)
         LA    R14,4(R8)
         ST    R14,64(R13)
         L     R15,FREFDREF
         BASR  R14,R15
         L     R4,60(R13)
         J     FREFDONE
*
FREFLOW  LR    R15,R2          Too high in list
         SR    R15,R1
         CHI   R15,1
         JNH   FREFBAD         shouldn't happen
         LR    R2,R3           Top = mid
         J     FREFTEST
*
FREFHIGH LR    R15,R2          Too low in list
         SR    R15,R1
         CHI   R15,1
         JNH   FREFBAD         shouldn't happen
         LR    R1,R3           Bottom = mid
         J     FREFTEST
*
FREFBAD  XR    R4,R4
FREFDONE ST    R4,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNZSTR
**************************
DMNZSTR  CSECT
DMNZSTR  AMODE ANY
DMNZSTR  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(4,R12) = pointer to null-terminated string
*        64(4,R12) = pointer to SCB
*        68(4,R12) = number of strings
*  Output results
*        60(4,R12) - pointer to next string
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,ZSTR000
         DC    A(DMNOSTR)
*
ZSTR000  LM    R2,R4,60(R12)  ->str, ->scb, count
         LR    R5,R2
ZSTR010  CLI   0(R5),0        search for null
         JE    ZSTR020
         LA    R5,1(R5)
         J     ZSTR010
*
ZSTR020  LR    R6,R5
         SR    R6,R2         length of string
         ST    R3,60(R13)    ->scb
         ST    R2,64(R13)    ->string
         ST    R6,68(R13)    length of string
         XC    72(8,R13),72(R13) no 2nd string
         L     R15,0(R11)    DMNOSTR
         BASR  R14,R15
*
         LA    R5,1(R5)      bypass the null
         LR    R2,R5         pointer to next string
         LA    R3,12(R3)     pointer to next SCB
         BRCT  R4,ZSTR010
*
         ST    R5,60(R12)    return updated pointer
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNHPEG
**************************
DMNHPEG  CSECT
DMNHPEG  AMODE ANY
DMNHPEG  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(2,R12) = option number
*        62(2,R12) = index number (not used)
*        64(4,R12) -> table cursor
*        68(-,R12) -> index record (option 4)
*  Output results
*        60(R12) = return code
*        64(R12) -> record found
*        68(R12) -> strings found (always zero)
*  Table cursor layout
*        00 - pointer to Table Control Block (TCB)
*        04 - pointer to pool
*  TCB layout
*        00 - Always two
*        02 - Always one
*        04 - Pointer to page array (not used)
*        08 - Pointer to table base (not used)
*        12 - Pointer to pool (not used)
*        16 -
*        20 - (H)Flags (20=HPEGS)
*        22 - (H)
*        24 - Pointer to current record (if there is one)
*        28 - Pointer first record in the file
*        32 - Number of records
*        36 - (H)Record length
*        38 - (H)Key length
*        40 - Pointer past last record in file
*        44 -
*        48 -
*
* DMNSEL branches to this routine after it has determined HPEGS
*   Registers already saved
*   R9 = RETURN CODE
*   R8 = option number
*   R2 -> TCB with 20 bit on
*
         XR    R9,R9            RETURN VALUE
         CNOP  0,4
         BRAS  R11,HPGINIT
         DC    A(DMNRLSE)       00
         CLC   68(0,R12),0(R5)  04 Compare key
*
HPGINIT  CHI   R8,8
         JH    HPGBADOP
         SLL   R8,2(R0)         Multiply by 4
         BRAS  R14,HPG060
         J     HPGBADOP         Option 0 - error
         J     HPGBADOP         Option 1 - open
         J     HPGOP02          Close
         J     HPGOP03          Reset
         J     HPGOP04          Index load
         J     HPGOP05          First
         J     HPGOP06          Last
         J     HPGOP07          Next
         J     HPGOP08          Previous
HPG060   B     0(R14,R8)
HPGBADOP LHI   R9,27            Bad option
         J     HPGDONE
*
HPGOP02  DS    0H
         L     R3,64(R12)       R3 -> Table cursor
         LHI   R14,60           Length of TCB
         ST    R2,60(R13)       ->TCB
         ST    R14,64(R13)      Length of TCB
         MVC   68(4,R13),4(R3)  Pool
         L     R15,0(R11)       DMNRLSE
         BASR  R14,R15
         XC    0(4,R3),0(R3)
         J     HPGDONE
*
HPGOP03  XC    24(4,R2),24(R2)  No record
         J     HPGDONE
*
* Option 4 - select table using index(keys)
*   R3 = Bottom
*   R6 = Top
*   R7 = Key length - 1
*   R8 = Record number of middle
*   R5 -> Middle record
*
HPGOP04  DS    0H
         XR    R3,R3            Bottom
         L     R6,32(R2)        Top
         LH    R7,38(R2)
         BCTR  R7,0             Key len - 1
HPG0101  LR    R5,R6            Top
         AR    R5,R3            bottom
         SRL   R5,1(R0)         Divided by 2
         LR    R8,R5            Middle
         MH    R5,36(R2)        * lrecl
         A     R5,28(R2)        R5->RECORD
         EX    R7,4(R11)        Compare Key:Record
         JL    HPG0102
         JH    HPG0103
         J     HPGUSE5
*
HPG0102  LR    R1,R6            Key lower
         SR    R1,R3
         CHI   R1,1
         JNH   HPGER01          Not found
         LR    R6,R8            Bring top down
         J     HPG0101
*
HPG0103  LR    R1,R6            Key higher
         SR    R1,R3
         CHI   R1,1
         JNH   HPGERS1          Not found
         LR    R3,R8            Bring bottom up
         J     HPG0101
*
HPGERS1  AH    R5,36(R2)        Move up
HPGER01  LHI   R9,1             Key before
         J     HPGUSE5
*
* Option 5 - select first table using index
HPGOP05  L     R5,28(R2)
HPGUSE5  ST    R5,24(R2)
         ST    R5,64(R12)
         XC    68(4,R12),68(R12) No strings
         J     HPGDONE
*
* Option 6 - select last table using index
HPGOP06  L     R5,40(R2)         After last record
         SH    R5,36(R2)         LRECL
         J     HPGUSE5
*
* Option 7 - select next
HPGOP07  L     R5,24(R2)
         LTR   R5,R5
         JNZ   HPG080
         LHI   R9,32
         J     HPGDONE
*
HPG080   AH    R5,36(R2)
         C     R5,40(R2)
         JL    HPGUSE5
         LHI   R9,15
         J     HPGERR
*
* Option 8 - select prev
HPGOP08  L     R5,24(R2)
         LTR   R5,R5
         JNZ   HPG090
         LHI   R9,32
         J     HPGDONE
HPG090   SH    R5,36(R2)
         C     R5,28(R2)
         JNL   HPGUSE5
         LHI   R9,15
         J     HPGERR
*
HPGERR   XC    16(4,R2),16(R2)
         XC    64(8,R12),64(R12)
HPGDONE  ST    R9,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    CNTTLOCL
**************************
CNTTLOCL DSECT
CNTTREGS DS    15F             SAVED REGISTERS
CNTTPNTR DS    F               Table address
         DS    0D
CNTTLGTH EQU   *-CNTTLOCL
*
         ORG   CNTTPNTR
CNTTRTRN DS    F               RETURN VALUE
**************************
*    DMNCNTT
**************************
DMNCNTT  CSECT
DMNCNTT  AMODE ANY
DMNCNTT  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         USING CNTTLOCL,R12
         LA    R13,CNTTLGTH(R13)
         L     R15,88(R10)
         BASR  R14,R15
         L     R2,CNTTPNTR
*
         XC    CNTTRTRN,CNTTRTRN     Return zero
         L     R2,0(R2)
         LTR   R2,R2
         JZ    CNTTDONE              No TCB - return zero
*
         L     R2,52(R2)
         MVC   CNTTRTRN,16(R2)
*
CNTTDONE DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    BFFLOCL
**************************
BFFLOCL  DSECT
BFFREGS  DS    15F
BFFTCB   DS    F
BFFFILL  DS    H
BFFINDX  DS    H
BFFTCBA  DS    F
         DS    0D
BFFLGTH  EQU   *-BFFLOCL
*
         ORG   BFFTCB
BFFRTRN  DS    CL12
**************************
*    DMNBFF
**************************
DMNBFF   CSECT
DMNBFF   AMODE ANY
DMNBFF   RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,BFFLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,BFF0010
BFF0000  EQU   *
BFFSEL   DC    A(DMNSEL)
BFFEXEC  XC    68(0,R13),68(R13)
*
         USING BFF0000,R11
         USING BFFLOCL,R12
BFF0010  DS    0H
         L     R2,BFFTCB
         LH    R3,BFFINDX
         SLL   R3,2
         LR    R4,R2
         AHI   R4,52
         AR    R4,R3     INDEX TABLE FRAME
         L     R4,0(R4)
*
         LHI   R14,4
         STH   R14,60(R13)
         MVC   62(2,R13),BFFINDX  INDEX #
         MVC   64(4,R13),BFFTCBA  TBL CURSOR
         LH    R5,12(R4)
         BCTR  R5,0
         EX    R5,BFFEXEC
         L     R15,BFFSEL
         BASR  R14,R15
*
         L     R6,60(R13)
         CHI   R6,1
         JH    BFFDONE
         XC    60(4,R13),60(R13)
*
BFFDONE  DS    0H
         MVC   BFFRTRN,60(R13)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    BFLLOCL
**************************
BFLLOCL  DSECT
BFLREGS  DS    15F
BFLCURR  DS    XL12
BFLTCB   DS    F
* LOCAL
BFLCURSV DS    XL12
BFLTCBSV DS    X   Lots more room
***         DS    0D Will be aligned after more room appended
BFLLGTH  EQU   *-BFLLOCL
*
         ORG   BFLCURR
BFLRTRN  DS    CL12
**************************
*    DMNBFL
**************************
DMNBFL   CSECT
DMNBFL   AMODE ANY
DMNBFL   RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,BFLLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,BFL0010
*
         USING BFL0000,R11
         USING BFLLOCL,R12
*
BFL0000  EQU   *
BFLTNXT  DC    A(DMNTNXT)
BFLEXEC  MVC   BFLTCBSV(0),0(R2)
BFLEXEC2 MVC   0(0,R2),BFLTCBSV
*
BFL0010  DS    0H
         L     R2,BFLTCB
         LH    R3,0(R2) # TABLES
         SLL   R3,2     * 4
         AHI   R3,52    R3 = SIZE OF SAVE AREA
         AR    R13,R3   MOVE STACK POINTER
         AHI   R13,7         ALIGN ON DW BOUNDARY
         SRL   R13,3
         SLL   R13,3
         L     R15,88(R10)
         BASR  R14,R15
         BCTR  R3,0
         MVC   60(12,R13),BFLCURR
*
BFLLOOP  DS    0H
         EX    R3,BFLEXEC
         MVC   BFLCURSV,60(R13)
         MVC   60(4,R13),BFLTCB
         L     R15,BFLTNXT      DMNTNXT
         BASR  R14,R15
         L     R5,60(R13)
         LTR   R5,R5
         JZ    BFLLOOP   LOOP UNTIL RC NONZERO
*
         EX    R3,BFLEXEC2      RELOAD FROM LAST 0 RETURN
         MVC   BFLRTRN,BFLCURSV     "
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNISCB
**************************
DMNISCB  CSECT
DMNISCB  AMODE ANY
DMNISCB  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12) -> string or SCB    (R8)
*        64(R12) unused
*        66(R12) length / 0 / -1     (R9)
*        68(R12) place to create SCB (R7)
*  Output results
*        68(R12)-> actual SCB
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME
         AHI   R13,72  END
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R8,60(R12)
* if source pointer = 0 then create an empty SCB
         LTR   R8,R8
         JZ    ISCB01
*
         LH    R9,66(R12)
         LTR   R9,R9
         JL    ISCB01
         JH    ISCB02
* if len = 0 then pointer is to SCB
         ST    R8,68(R12)
         J     ISCB03
* if len < 0 then create an empty SCB
ISCB01   DS    0H
         L     R2,68(R12)
         XC    0(12,R2),0(R2)
         J     ISCB03
* if len > 0 then create a temporary SCB
ISCB02   L     R2,68(R12)   temporary SCB
         ST    R8,0(R2)     ->string
         STH   R9,4(R2)     bytes in use
         STH   R9,6(R2)     bytes available
         XC    8(4,R2),8(R2) no pool
ISCB03   LM    R0,R14,0(R12)
         BR    R14
**************************
*    OSTRLOCL
**************************
OSTRLOCL DSECT
OSTRREGS DS    15F           Caller's registers
OSTROSCB DS    F             Output SCB
OSTRASTR DS    F             Address of string A
OSTRALEN DS    F             Length of string A
OSTRBSTR DS    F             Address of string B (null if no string)
OSTRBLEN DS    F             Length of string B
*
OSTROLDS DS    F             Address to release
OSTROLDL DS    F             Length to release
*
         DS    0D
OSTRLGTH EQU   *-OSTRLOCL
**************************
*    DMNOSTR
**************************
DMNOSTR  CSECT
DMNOSTR  AMODE ANY
DMNOSTR  RMODE ANY
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,OSTRLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,OSTR01
OSTR000  EQU   *
OSTRALC  DC    A(DMNALC)
OSTRRLSE DC    A(DMNRLSE)
*
         USING OSTR000,R11
         USING OSTRLOCL,R12
*
* R3=scb, R4->astr, R5=alen, R6->bstr, R7=blen, R8=ostr, R9=olen
* Check for pool
OSTR01   DS    0H
         XC    OSTROLDS(8),OSTROLDS
         LM    R3,R7,OSTROSCB
         L     R8,0(R3)           scb->str
         LH    R9,6(R3)           scb->allocated
         L     R14,8(R3)
         LTR   R14,R14            check for pool
         JZ    OSTR100            no pool - proceed to move
*
         LR    R2,R9              R2 = allocated length for output
         LR    R9,R5
         AR    R9,R7              R9 = alen+blen
         STH   R9,4(R3)           scb->inuse (new value)
         CR    R2,R9
         JNL   OSTR100            current location OK
*
         CHI   R9,32767           too large for strings?
         JNH   OSTR50
*
         LHI   R15,-2             RC = -2 (string too large)
         L     R1,84(R10)
         LM    R11,R14,8(R1)
         BR    R14                exit forever
*
* Save old string reference. do not release until after copy
* in case the copy involves the current contents
OSTR50   DS    0H
         ST    R8,OSTROLDS
         ST    R2,OSTROLDL
* allocate new location
         LR    R1,R9
         AHI   R1,7
         SRL   R1,3
         SLL   R1,3
         ST    R1,60(R13)         Memory needed
         MVC   64(4,R13),8(R3)    Pool
         L     R15,OSTRALC        DMNALC
         BASR  R14,R15
*
         L     R8,60(R13)         space returned
         ST    R8,0(R3)           New ostr
         STH   R1,6(R3)           space allocated
         J     OSTR200            No move for overlap needed
*
* Move source(s) onto stack to avoid any overlaps
OSTR100  DS    0H
         LR    R1,R13             SAVE R13
         AR    R13,R9             NEW TOP OF STACK
         L     R15,88(R10)        IS THERE ROOM?
         BASR  R14,R15
         LR    R13,R1             RESTORE R13
*
         LR    R14,R13            R14,R15 = a target
         LR    R15,R5
         LR    R2,R4              R2,R3 = a source
         LR    R3,R5
         LR    R4,R14             new location of astr
         MVCL  R14,R2
*
         LR    R15,R7             load length, R14 positioned
         LR    R2,R6              R2,R3 = b source
         LR    R3,R7
         LR    R6,R14             new location of bstr
         MVCL  R14,R2
*
         L     R3,OSTROSCB        Reload R3 with output SCB
*
OSTR200  DS    0H
         LHI   R1,C' '
         SLL   R1,24              x'40' in high order byte
*
         OR    R5,R1              add pad byte
         MVCL  R8,R4              Move string A - increment R8
*
         LTR   R7,R7
         JZ    OSTR300            no string B
         L     R8,0(R3)           restore target information
         LH    R9,4(R3)
         A     R8,OSTRALEN        adjust by already moved length
         S     R9,OSTRALEN
         JNP   OSTR300            no room left to receive more
         OR    R7,R1
         MVCL  R8,R6              Move string B
*
* Release the old space, if any
OSTR300  DS    0H
         L     R14,OSTROLDS       old space
         LTR   R14,R14
         JZ    OSTRDONE
         ST    R14,60(R13)
         MVC   64(4,R13),OSTROLDL old length
         MVC   68(4,R13),8(R3)    pool
         L     R15,OSTRRLSE       DMNRLSE
         BASR  R14,R15
*
OSTRDONE DS    0H
         LM    R0,R14,OSTRREGS
         BR    R14
**************************
*    DMNSCMP
**************************
DMNSCMP  CSECT
DMNSCMP  AMODE ANY
DMNSCMP  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12)-> left string or SCB
*        64(R12)-> right string or SCB
*        68(R12) = left string length (llen)
*        70(R12) = right string length (rlen)
*  Output results
*        60(R12) < = > zero depending on comparison
*  R12 + 72 Locals & temps    (24 bytes)
*        72(R12)->left temporary SCB
*        84(R12)->right temporary SCB
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,SCMP02
SCMP01   DC    A(DMNISCB)
SCMPEX1  CLC   0(0,R4),0(R5)
         USING SCMP01,R11
*
SCMP02   MVC   60(4,R13),60(R12)  left string or SCB
         LH    R14,68(R12)
         ST    R14,64(R13)        left length or zero
         LA    R14,72(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R2,68(R13)         R2->left SCB
*
         MVC   60(4,R13),64(R12)  right string or SCB
         LH    R14,70(R12)
         ST    R14,64(R13)        right length or zero
         LA    R14,84(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R3,68(R13)         R3->right SCB
*
** R2,R3->SCBs, R4,R5 -> strings, R6,R7 = lengths
*
         L     R4,0(R2)        left string
         L     R5,0(R3)        right string
         LH    R6,4(R2)        left length
         LH    R7,4(R3)        right length
         CR    R6,R7           compare lengths
         JL    SCMP08          left shorter
         JH    SCMP09          left longer
         XR    R8,R8           same length
*
** comparison done here. If same, use R8 for return code
*
SCMP03   LTR   R6,R6
         JNH   SCMP05
         CHI   R6,256
         JNH   SCMP04
         CLC   0(256,R4),0(R5)
         JL    SCMP06
         JH    SCMP07
         AHI   R4,256
         AHI   R5,256
         AHI   R6,-256
         J     SCMP03
*
SCMP04   BCTR  R6,R0
         EX    R6,SCMPEX1
         JL    SCMP06
         JH    SCMP07
SCMP05   ST    R8,60(R12)      strings equal
         LM    R0,R14,0(R12)
         BR    R14
*
SCMP06   LHI   R8,-1           left < right
         J     SCMP05
SCMP07   LHI   R8,1            left > right
         J     SCMP05
*
** left string shorter than right string. return -1 when equal
*
SCMP08   LHI   R8,-1
         J     SCMP03
*
** left string longer than right string. return 1 when equal
*
SCMP09   LR    R6,R7           only compare shorter length
         LHI   R8,1
         J     SCMP03
**************************
*    DMNSCPY
**************************
DMNSCPY  CSECT
DMNSCPY  AMODE ANY
DMNSCPY  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12)-> left string or SCB
*        64(R12)-> right string or SCB
*        68(R12) = left string length (llen)
*        70(R12) = right string length (rlen)
*  R12 + 72 Locals & temps    (24 bytes)
*        72(R12)->left temporary SCB
*        84(R12)->right temporary SCB
*  R13 + 0000 Stack           (R12 + 96)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,96  FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,SCPY01
         DC    A(DMNISCB)
         DC    A(DMNOSTR)
*
SCPY01   DS    0H
         MVC   60(4,R13),60(R12)  left string or SCB
         LH    R14,68(R12)
         ST    R14,64(R13)        left length or zero
         LA    R14,72(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R2,68(R13)         R2->left SCB
*
         MVC   60(4,R13),64(R12)  right string or SCB
         LH    R14,70(R12)
         ST    R14,64(R13)        right length or zero
         LA    R14,84(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R3,68(R13)         R3->right SCB
*
         ST    R2,60(R13)         output SCB
         MVC   64(4,R13),0(R3)    input string
         LH    R14,4(R3)          input length
         ST    R14,68(R13)
         XC    72(8,R13),72(R13)  no 2nd string
         L     R15,4(R11)         DMNOSTR
         BASR  R14,R15
*
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    CPYXLOCL
**************************
CPYXLOCL DSECT
CPYXREGS DS    15F
CPYXVSTR DS    F        Address of SCB (variable length string)
CPYXFSTR DS    F        Fixed length string
         DS    H        Unused
CPYXFSL  DS    H        Fixed string length
*
CPYXSCB  DS    XL12     Work SCB
*
         DS    0D
CPYXLGTH EQU   *-CPYXREGS
**************************
*    DMNSCPYX
**************************
DMNSCPYX CSECT
DMNSCPYX AMODE ANY
DMNSCPYX RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,CPYXLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,CPYXSTRT
CPYX000  EQU   *
CPYXOSTR DC    A(DMNOSTR)
CPYXTRMR DC    A(DMNTRMR)
CPYXBLNK DC    CL2'  '
*
         USING CPYX000,R11
         USING CPYXLOCL,R12
*
CPYXSTRT DS    0H
         MVC   60(4,R13),CPYXVSTR   Output SCB
         MVC   64(8,R13),CPYXFSTR   Fixed string and length
         XC    72(8,R13),72(R13)    No 'B' string
         L     R15,CPYXOSTR         DMNOSTR
         BASR  R14,R15
*
         MVC   60(4,R13),CPYXVSTR   Output SCB
         XC    CPYXSCB,CPYXSCB
         LA    R4,CPYXBLNK
         ST    R4,CPYXSCB
         MVI   CPYXSCB+5,X'01'
         MVI   CPYXSCB+7,X'01'
         LA    R4,CPYXSCB
         ST    R4,64(R13)
         L     R15,CPYXTRMR         DMNTRMR
         BASR  R14,R15
*
         LM    R0,R14,CPYXREGS
         BR    R14
**************************
*    SRPQLOCL
**************************
SRPQLOCL DSECT
SRPQREGS DS    15F
SRPQSTR  DS    F        Address of SCB
*
         DS    0D
SRPQLGTH EQU   *-SRPQREGS
**************************
*    DMNSRPQ
**************************
DMNSRPQ  CSECT
DMNSRPQ  AMODE ANY
DMNSRPQ  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,SRPQLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,SRPQSTRT
SRPQ000  EQU   *
SRPQMVC  MVC   0(0,R4),1(R4)
*
         USING SRPQ000,R11
         USING SRPQLOCL,R12
*
SRPQSTRT DS    0H
         L     R2,SRPQSTR
         L     R4,0(R2)             R4 -> String address
         LH    R5,4(R2)             R5 = Length
         CHI   R5,2                 If length isn't >= 2
         JL    SRPQEXIT             ...we can't do anything
         CLI   0(R4),SRPQQUOT       Beginning quote?
         JNE   SRPQEXIT
         LR    R6,R4                Point to last character
         AR    R6,R5
         BCTR  R6,0
         CLI   0(R6),SRPQQUOT       Trailing quote?
         JNE   SRPQEXIT
*
         AHI   R5,-2                Reduce length by 2
         STH   R5,4(R2)             ...save in SCB
         JZ    SRPQEXIT             CC from AHI - copy unneeded if 0
*
         CHI   R5,256               Length <= 256?
         JH    SRPQMVCL             ...use regular MVC
         BCTR  R5,0
         EX    R5,SRPQMVC
         J     SRPQEXIT
*
SRPQMVCL DS    0H                   Gotta use MVCL
         LR    R6,R4                R6 -> Character following "
         AHI   R6,1
         LR    R7,R5
         MVCL  R4,R6
*
SRPQEXIT DS    0H
         LM    R0,R14,SRPQREGS
         BR    R14
**************************
*    DMNCCAT
**************************
DMNCCAT  CSECT
DMNCCAT  AMODE ANY
DMNCCAT  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12)-> output string or SCB
*        64(R12)-> left string or SCB
*        68(R12)-> right string or SCB
*        72(R12) = output string length
*        74(R12) = left string length
*        76(R12) = right string length
*  R12 + 80 Locals & temps    (36 bytes)
*        80(R12)->output temporary SCB
*        88(R12)->left temporary SCB
*        96(R12)->right temporary SCB
*  R13 + 0000 Stack           (R12 + 104)
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104 FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,CCAT01
         DC    A(DMNISCB)
         DC    A(DMNOSTR)
*
CCAT01   MVC   60(4,R13),60(R12)  output string or SCB
         LH    R14,72(R12)
         ST    R14,64(R13)        output length or zero
         LA    R14,80(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R2,68(R13)         R2->output SCB
*
         MVC   60(4,R13),64(R12)  left string or SCB
         LH    R14,74(R12)
         ST    R14,64(R13)        left length or zero
         LA    R14,88(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R3,68(R13)         R3->left SCB
*
         MVC   60(4,R13),68(R12)  right string or SCB
         LH    R14,76(R12)
         ST    R14,64(R13)        right length or zero
         LA    R14,96(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R4,68(R13)         R4->right SCB
*
         ST    R2,60(R13)         output SCB
         MVC   64(4,R13),0(R3)    left string
         LH    R14,4(R3)          left length
         ST    R14,68(R13)
         MVC   72(4,R13),0(R4)    right string
         LH    R14,4(R4)          right length
         ST    R14,76(R13)
         L     R15,4(R11)         DMNOSTR
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNSUBS
**************************
DMNSUBS  CSECT
DMNSUBS  AMODE ANY
DMNSUBS  RMODE ANY
*  R12 + 0000 Saved registers (60 bytes)
*  Input arguments
*        60(R12)-> result string or SCB
*        64(R12)-> source string or SCB
*        68(R12) = result length or 0 (2 bytes)
*        70(R12) = source length or 0 (2 bytes)
*        72(R12) = offset (4 bytes)
*        76(R12) = length (4 bytes)
*  R12 + 80 Locals & temps  (24 bytes)
*        80(R12)-> temporary result SCB
*        92(R12)-> TEMPORARY SOURCE SCB
*
         STM   R0,R14,0(R13)
         LR    R12,R13 FRAME BEGIN
         AHI   R13,104 FRAME END
         L     R15,88(R10)
         BASR  R14,R15
         CNOP  0,4
         BRAS  R11,SUBS01
         DC    A(DMNISCB)
         DC    A(DMNOSTR)
*
SUBS01   MVC   60(4,R13),60(R12)  result string or SCB
         LH    R14,68(R12)
         ST    R14,64(R13)        result length or zero
         LA    R14,80(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R2,68(R13)         R2->result SCB
*
         MVC   60(4,R13),64(R12)  source string or SCB
         LH    R14,70(R12)
         ST    R14,64(R13)        source length or zero
         LA    R14,92(R12)
         ST    R14,68(R13)        place for tmp SCB
         L     R15,0(R11)         DMNISCB
         BASR  R14,R15
         L     R3,68(R13)         R3->source SCB
*
         LM    R4,R5,72(R12)      R4 = Offset, R5 = Length
         LH    R6,4(R3)           R6 = Available length
*
         LTR   R7,R5              Length > 0
         JL    SUBS03
         JH    SUBS02
         LR    R5,R6              Use remaining length
         SR    R5,R4
SUBS02   DS    0H
         LTR   R4,R4              Offset => 0
         JL    SUBS03
         CR    R4,R6              Offset < available length
         JNL   SUBS03
*
         AR    R7,R4              R7 = Offset + Length
         CR    R7,R6              Length of source < wanted?
         JNH   SUBS04
*
SUBS03   DS    0H                 Return empty string
         XR    R5,R5
*
* copy resulting string to output
SUBS04   ST    R2,60(R13)         output SCB
         A     R4,0(R3)           Add offset to string address
         ST    R4,64(R13)         substring
         ST    R5,68(R13)         substring length
         XC    72(8,R13),72(R13)  no 2nd string
         L     R15,4(R11)         DMNOSTR
         BASR  R14,R15
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNSLEN
**************************
DMNSLEN  CSECT
DMNSLEN  AMODE ANY
DMNSLEN  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 SCB / LENGTH
*      + 0064 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,64          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R2,60(R12)
         LH    R3,4(R2)
         ST    R3,60(R12)
*
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNSRCH
**************************
DMNSRCH  CSECT
DMNSRCH  AMODE ANY
DMNSRCH  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 SCB / RC
*      + 0064 TARGET SCB
*      + 0068 POSITION
*      + 0072 SAVE REGISTER AREA (16 BYTES)
*      + 0088 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,88          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
SR000    DS    0H
         L     R2,60(R12)
         L     R4,0(R2)        R4 -> STRING ADDRESS
         LH    R5,4(R2)        R5 -> LENGTH
*
         L     R2,64(R12)
         L     R6,0(R2)        R6 -> SUBSTRING ADDRESS
         LH    R7,4(R2)        R7 -> LENGTH
*  TEST FOR CONDITIONS
         XC    60(4,R12),60(R12)  START WITH ERROR RC (ZERO)
         LTR   R4,R4
         JZ    SR0900          NO STRING
         LTR   R5,R5
         JZ    SR0900          NO LENGTH
         CR    R5,R7
         JL    SR0900          STRING LENGTH < SUBSTRING LENGTH
         LTR   R6,R6
         JZ    SR0900          NO SUBSTRING
         LTR   R7,R7
         JZ    SR0900          NO LENGTH
*  PREPARE FOR COMPARE LOOP
         LR    R8,R4           SAVE STRING ADDRESS
         LR    R9,R5
         SR    R9,R7           MAX NUMBER OF COMPARES
         AHI   R9,1            INCLUDING LAST ONE
         LR    R5,R7           SAME LENGTH FOR COMPARE
*
SR0050   DS    0H
         STM   R4,R7,72(R12)
         CLCL  R4,R6
         LM    R4,R7,72(R12)   RESET REGS - DOESN'T AFFECT CC
         JE    SR0100
         LA    R4,1(R4)
         BRCT  R9,SR0050
         J     SR0900
*
SR0100   DS    0H
         SR    R4,R8           OFFSET
*
SR0150   DS    0H
         L     R2,68(R12)
         ST    R4,0(R2)
         MVI   63(R12),X'01'   SET RC = TRUE
*
SR0900   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    SINSLOCL
**************************
SINSLOCL DSECT
SINSREGS DS    15F           SAVED REGISTERS
SINSSTR  DS    F             SOURCE SCB
SINSPOS  DS    F             POSITION
SINSSCBI DS    F             INSERTED SCB
* Locals
SINSSCBT DS    3F            TEMPORARY SCB
SINSPOOL DS    2F            TEMPORARY POOL
*
         DS    0D
SINSLGTH EQU   *-SINSLOCL
*
         ORG   SINSSTR
SINSRTRN DS    F
**************************
*    DMNSINS
**************************
DMNSINS  CSECT
DMNSINS  AMODE ANY
DMNSINS  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,SINSLGTH    END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,SI0005
SINS0001 EQU   *
SINSCCAT DC    A(DMNCCAT)
SINSFREE DC    A(DMNFREE)
SINSSCPY DC    A(DMNSCPY)
*
         USING SINS0001,R11
         USING SINSLOCL,R12
SI0005   DS    0H
*  CREATE TEMP SCB
         XC    SINSSCBT(12),SINSSCBT
         XC    SINSPOOL(8),SINSPOOL
         LA    R6,SINSPOOL
         ST    R6,SINSSCBT+8
*
         L     R2,SINSSTR
         L     R4,0(R2)        R4 -> STRING ADDRESS
         LH    R5,4(R2)        R5 -> LENGTH
         L     R1,SINSSCBI
         LH    R3,4(R1)        R3 -> LENGTH OF INSERTED
*  TEST FOR ERROR CONDITIONS
         XC    SINSRTRN,SINSRTRN START WITH ERROR RC (ZERO)
         L     R6,SINSPOS
         LTR   R6,R6
         JL    SI0900
         CR    R5,R6
         JL    SI0900          POSITION > LENGTH
*
         LTR   R3,R3
         JZ    SI0300          NO LENGTH - RETURN TRUE
         LA    R6,SINSSCBT     R6 -> TEMP SCB
*  TEMP SCB = INSERTED + BACK END OF ORIGINAL
         ST    R6,60(R13)      OUT SCB
         MVC   64(4,R13),SINSSCBI  LEFT SCB
         A     R4,SINSPOS      POINT TO BACK END OF ORIGINAL
         ST    R4,68(R13)
         S     R5,SINSPOS      IF NO BACK END...
         JZ    SI0100
         STH   R5,76(R13)      LENGTH OF BACK END
         XC    72(4,R13),72(R13)  LENGTHS
         L     R15,SINSCCAT    DMNCCAT
         BASR  R14,R15
         J     SI0200
*  NO BACK END: TEMP SCB = INSERTED
SI0100   DS    0H
         L     R7,SINSSCBI
         MVC   0(8,R6),0(R7)   MOVE ADDR & LENGTH, NOT POOL
*  RETURN SCB = FRONT END OF ORIGINAL + TEMP SCB
SI0200   DS    0H
         L     R5,SINSPOS      POSITION
         LTR   R5,R5           POSITION = ZERO
         JNZ   SI0250
         ST    R2,60(R13)      COPY INSERTED + BACK END
         ST    R6,64(R13)         INTO ORIGINAL
         XC    68(4,R13),68(R13)
         L     R15,SINSSCPY    DMNSCPY
         BASR  R14,R15
         J     SI0300
*
SI0250   DS    0H
         STH   R5,4(R2)        MAKE IT LENGTH OF ORIGINAL
         ST    R2,60(R13)      RETURN
         ST    R2,64(R13)      ...AND LEFT SCB
         ST    R6,68(R13)         RIGHT SCB
         XC    72(6,R13),72(R13)  LENGTHS
         L     R15,SINSCCAT    DMNCCAT
         BASR  R14,R15
*
SI0300   DS    0H
         LHI   R7,1
         ST    R7,SINSRTRN     SET RC = TRUE
*
SI0900   DS    0H
         LA    R14,SINSPOOL    POOL POINTER
         ST    R14,60(R13)
         L     R15,SINSFREE    DMNFREE
         BASR  R14,R15
*
         LM    R0,R14,SINSREGS
         BR    R14
**************************
*    DMNSUPP
**************************
DMNSUPP  CSECT
DMNSUPP  AMODE ANY
DMNSUPP  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 ARGUMENTS
*      + 0060 STRING ADDR / SCB
*      + 0064 LENGTH / 0 (2 BYTES)
*      + 0066 SLACK  (6 BYTES)
*      + 0072 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,72          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R4,60(R12)      R4 -> POINT TO STRING
         LH    R5,64(R12)      R5 -> LENGTH
         LTR   R5,R5           SCB?
         JNZ   TU0100
*
         L     R2,60(R12)
         L     R4,0(R2)        R4 -> POINT TO STRING
         LH    R5,4(R2)        R5 -> LENGTH
         LTR   R5,R5
         JNH   TU0900
*
TU0100   DS    0H
         CLI   0(R4),C'a'
         JL    TU0200
         CLI   0(R4),C'i'
         JNH   TU0300
         CLI   0(R4),C'j'
         JL    TU0200
         CLI   0(R4),C'r'
         JNH   TU0300
         CLI   0(R4),C's'
         JL    TU0200
         CLI   0(R4),C'z'
         JNH   TU0300
*
TU0200   DS    0H
         LA    R4,1(R4)
         BRCT  R5,TU0100
         J     TU0900
*
TU0300   DS    0H
         OI    0(R4),X'40'
         J     TU0200
*
TU0900   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTRMR
**************************
DMNTRMR  CSECT
DMNTRMR  AMODE ANY
DMNTRMR  RMODE ANY
*  R12  +0000  SAVED REGISTERS  (60 BYTES)
*       +0060  SOURCE SCB
*       +0064  SCB TO REMOVE
*       +0068  SLACK
*       +0072  END
*  RETURN 060  NUMBER OF CHARACTERS TRIMMED
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,72      END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,TRM000
         CLC   0(0,R2),0(R4)
*
TRM000   DS    0H
         L     R1,60(R12)
         L     R2,0(R1)            R2 -> ADDR OF STRING
         LH    R3,4(R1)            R3 -> LENGTH
         L     R1,64(R12)
         L     R4,0(R1)            R4 -> ADDR OF TRIM CHAR
         LH    R5,4(R1)            R5 -> LENGTH
         XR    R7,R7               CHARACTERS TRIMMED
*
         LTR   R3,R3               NO STRING
         JNH   TRM0995
         LTR   R5,R5               NOTHING TO TRIM
         JNH   TRM0995
*
         LR    R6,R5               R6 = EXECUTE REGISTER
         BCTR  R6,0
         AR    R2,R3
         SR    R2,R5               R2 -> STRING END - TRIM LENGTH
*
TRM0100  DS    0H
         CR    R3,R5
         JL    TRM0200
         EX    R6,0(R11)
         JNE   TRM0200
         AR    R7,R5
         SR    R2,R5
         SR    R3,R5
         J     TRM0100
*
TRM0200  DS    0H
         L     R1,60(R12)
         STH   R3,4(R1)            NEW LENGTH
*
TRM0995  DS    0H
         ST    R7,60(R12)          CHARACTERS TRIMMED
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNTRML
**************************
DMNTRML  CSECT
DMNTRML  AMODE ANY
DMNTRML  RMODE ANY
*  R12  +0000  SAVED REGISTERS  (60 BYTES)
*       +0060  SOURCE SCB
*       +0064  SCB TO REMOVE
*       +0068  SLACK
*       +0072  END
*  RETURN 060  NUMBER OF CHARACTERS TRIMMED
*
         STM   R0,R14,0(R13)
         LR    R12,R13
         AHI   R13,72      END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,TRIMLGO
         MVC   0(0,R8),0(R2)
         CLC   0(0,R2),0(R4)
*
TRIMLGO  L     R9,60(R12)          R9 -> SCB
         L     R2,0(R9)            R2 -> STRING
         LH    R3,4(R9)            R3 = LENGTH
         L     R1,64(R12)
         L     R4,0(R1)            R4 -> TRIM CHAR
         LH    R5,4(R1)            R5 = LENGTH
         XR    R7,R7               CHARACTERS TRIMMED
*
         LTR   R3,R3               NO STRING
         JNH   TRMLDONE
         LTR   R5,R5               NOTHING TO TRIM
         JNH   TRMLDONE
*
         LR    R6,R5               R6 = COMPARE EXECUTE REGISTER
         BCTR  R6,0
         LR    R8,R2               R8 = ORIGINAL ADDRESS
*
TRMLTEST DS    0H
         CR    R3,R5
         JL    TRIMMED
         EX    R6,6(R11)
         JNE   TRIMMED
         AR    R7,R5
         AR    R2,R5
         SR    R3,R5
         J     TRMLTEST
*
TRIMMED  LTR   R7,R7
         JZ    TRMLDONE            NOTHING TRIMMED
         STH   R3,4(R9)            NEW length
         LTR   R3,R3
         JZ    TRMLDONE
         BCTR  R3,0
         EX    R3,0(R11)           Copy left
*
TRMLDONE DS    0H
         ST    R7,60(R12)
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    DMNSLOG
**************************
DMNSLOG  CSECT
DMNSLOG  AMODE ANY
DMNSLOG  RMODE ANY
*  R12 + 0000 SAVED REGISTERS (60 BYTES)
*      + 0060 ARGUMENTS
*      + 0060 STRING ADDR OR SCB / RC
*      + 0064 ---
*      + 0066 LENGTH
*      + 0068 WORK AREA
*      + 0072 END
*
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,72          END ACTIVATION FRAME
         L     R15,88(R10)
         BASR  R14,R15
*
         L     R2,60(R12)
         XC    60(4,R12),60(R12)  INITIAL VALUE IS FALSE
         LH    R5,66(R12)
         LTR   R5,R5
         JZ    LG0100          SCB
*
         LR    R4,R2
         MVI   68(R12),C' '
         LA    R6,68(R12)
         LHI   R7,1
         ICM   R7,8,68(R12)    PADDING BYTE = BLANK
         CLCL  R4,R6
         JE    LG0900
         MVI   63(R12),X'01'
         J     LG0900
*
LG0100   DS    0H
         LH    R5,4(R2)
         LTR   R5,R5
         JZ    LG0900
         MVI   63(R12),X'01'
*
LG0900   DS    0H
         LM    R0,R14,0(R12)
         BR    R14
**************************
*    SLAMLOCL
**************************
SLAMLOCL DSECT
SLAMREGS DS    15F           SAVED REGISTERS
SLAMSTR  DS    F             String variable (SCB)
SLAMPOS  DS    F             Position
SLAMLEN  DS    F             Length
         DS    0D
SLAMLGTH EQU   *-SLAMLOCL
         ORG   SLAMSTR
SLAMRTRN DS    F
**************************
*    DMNSLAM
**************************
DMNSLAM  CSECT
DMNSLAM  AMODE ANY
DMNSLAM  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,SLAMLGTH
         L     R15,88(R10)
         BASR  R14,R15
*
         USING SLAMLOCL,R12
SLAM000  DS    0H
         L     R2,SLAMSTR      R2->String variable
         L     R4,0(R2)        R4->String
         LH    R5,4(R2)        R5=String length
         LM    R6,R7,SLAMPOS   R6=Position  R7=Length
*  Test for error conditions
         LTR   R14,R6
         JL    SLAM950         Postion < 0
         LTR   R7,R7
         JL    SLAM950         Length < 0
         AR    R14,R7
         CR    R14,R5
         JH    SLAM950         Position + Length > String length
*  Adjust the string
         LR    R8,R4           Position destination pointer (R8)
         AR    R8,R6
         AR    R14,R4          Position source pointer (R14)
         LR    R9,R5           Set move length (R9 & R15)
         SR    R9,R6
         SR    R9,R7
         LR    R15,R9
         MVCL  R8,R14
         SR    R5,R7           Adjust string variable length
         STH   R5,4(R2)
*  Return TRUE
SLAM900  DS    0H
         MVI   SLAMRTRN,X'01'
         J     SLAM990
*  Return FALSE
SLAM950  DS    0H
         XC    SLAMRTRN,SLAMRTRN
*
SLAM990  DS    0H
         LM    R0,R14,SLAMREGS
         BR    R14
**************************
*    SOVRLOCL
**************************
SOVRLOCL DSECT
SOVRREGS DS    15F           SAVED REGISTERS
SOVRDEST DS    F             Destination SCB
SOVRPOS  DS    F             Position
SOVRSRC  DS    F             Source SCB
SOVRTRGT DS    F             Target SCB (for inline usage)
         DS    0D
SOVRLGTH EQU   *-SOVRLOCL
**************************
*    DMNSOVR
**************************
DMNSOVR  CSECT
DMNSOVR  AMODE ANY
DMNSOVR  RMODE ANY
         STM   R0,R14,0(R13)
         LR    R12,R13         FRAME
         AHI   R13,SOVRLGTH
         L     R15,88(R10)
         BASR  R14,R15
         BRAS  R11,SOVR100
SOVR000  EQU   *
SOVRSCPY DC    A(DMNSCPY)
*
         USING SOVR000,R11
         USING SOVRLOCL,R12
SOVR100  DS    0H
*  R2 = Destination; R3 = Position; R4 = Source; R5 = Target
         LM    R2,R5,SOVRDEST
         CHI   R3,0                 Pos < 0?
         JL    SOVR0800             Error - reset results
         LR    R14,R3
         AH    R14,4(R4)            * Don't lengthen string...
         CH    R14,4(R2)            Pos + lenSource > lenDest?
         JH    SOVR0800             Error - reset results
* Move Destination onto stack to guard against overlapping operands
         LR    R6,R13               Save R13
         AH    R13,4(R2)            R13 after move
         L     R15,88(R10)          Check for space
         BASR  R14,R15
         LR    R13,R6               Restore R13
*
         LH    R7,4(R2)
         L     R8,0(R2)
         LR    R9,R7
         MVCL  R6,R8
* Perform overlap
         LR    R6,R13
         AR    R6,R3
         LH    R7,4(R4)
         L     R8,0(R4)
         LR    R9,R7
         MVCL  R6,R8
* Move back to destination
         LR    R6,R13
         LH    R7,4(R2)
         L     R8,0(R2)
         LR    R9,R7
         MVCL  R8,R6                * Done with R13 area
* Copy into target string
         ST    R5,60(R13)
         ST    R2,64(R13)
         XC    68(4,R13),68(R13)
         L     R15,SOVRSCPY         DMNSCPY
         BASR  R14,R15
         J     SOVR0900
* Reset on error
SOVR0800 DS    0H
         XC    4(2,R2),4(R2)        Reset destination
         XC    4(2,R5),4(R5)        Reset target
*
SOVR0900 DS    0H
         LM    R0,R14,SOVRREGS
         BR    R14
**************************
*    DMNPARMU
**************************
DMNPARMU CSECT
DMNPARMU AMODE ANY
DMNPARMU RMODE ANY
         BR    R14
**************************
F0       EQU   0
R0       EQU   0
XUTFPOS  EQU   0
R1       EQU   1
XUTFNEG  EQU   1
R2       EQU   2
F2       EQU   2
PUFEXTD  EQU   2
SCHMRVS  EQU   2
R3       EQU   3
R4       EQU   4
PUFLIMPD EQU   4
F4       EQU   4
R5       EQU   5
TUNPDFL4 EQU   5
R6       EQU   6
F6       EQU   6
TUNPDFL2 EQU   6
R7       EQU   7
R8       EQU   8
XACKIMPL EQU   8
PUFLPLUS EQU   8
UAGGFIX  EQU   8
R9       EQU   9
R10      EQU   10
R11      EQU   11
TUNPRTYP EQU   11
R12      EQU   12
R13      EQU   13
R14      EQU   14
R15      EQU   15
XACKL2   EQU   16
LAGGNOIP EQU   16
PACKFLQT EQU   16
SET9OVHD EQU   16
TUNPATYP EQU   16
XACKL1   EQU   32
LAGGINTC EQU   32
PUFLBLNK EQU   32
PACKFL0  EQU   32
UNPKFLVS EQU   32
UAGGARR1 EQU   32
LAGGARR1 EQU   32
UAGGARR2 EQU   36
LAGGARR2 EQU   36
LAGGSTU1 EQU   40
GETFNEGX EQU   64
XACKVLU1 EQU   64
XNPKL2   EQU   64
LAGGCLSB EQU   64
ALPHAN   EQU   64
PUFL0PAD EQU   64
PACKFLRJ EQU   64
UNPKFLES EQU   64
UNPKFLEC EQU   64
GETDFLA1 EQU   80
SRPQQUOT EQU   127
GETFNEG  EQU   128
PUTFNOPC EQU   128
XACKVLU0 EQU   128
XNPKL1   EQU   128
LAGGBLNK EQU   128
ALPHAY   EQU   128
PUFLLEFT EQU   128
PACKFLAR EQU   128
UNPKFLAR EQU   128
LAGGCLSX EQU   191
LAGGINTX EQU   223
E0       EQU   240
         END
