Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RCDPEAR2

RCDPEAR2.m

Go to the documentation of this file.
  1. RCDPEAR2 ;ALB/TMK/PJH - EFT Unmatched Aging Report - FILE 344.3 ;Nov 24, 2014@18:31:57
  1. ;;4.5;Accounts Receivable;**173,269,276,284,283,293,298,318,321,326,432**;Mar 20, 1995;Build 16
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ;
  1. ; PRCA*4.5*298 notes at bottom
  1. EN1 ; option: EFT Unmatched Aging Report [RCDPE EFT AGING REPORT]
  1. N %ZIS,DIC,DIR,DTOUT,DUOUT,POP,RCDISPTY,RCDTRNG,RCEND,RCHDR
  1. N RCJOB1,RCLSTMGR,RCPAR,RCPAY,RCPGNUM,RCSTART,RCTMPND,RCTYPE,X,Y
  1. ; RCDISPTY = display type
  1. ; RCEND = end date
  1. ; RCLSTMGR = list manager flag
  1. ; RCTYPE = Type of payers to include M/P/T/C/A MEDICAL/PHARMACY/TRICARE/CHAMPVA/ALL
  1. ; RCDTRNG= "1^start date^end date"
  1. ; RCSTART = start date
  1. ; RCTMPND = name of the subscript for ^TMP to use
  1. ; RCPAY = A - All payers, S - Selected Payers, R - Range of Payers
  1. ;
  1. S RCLSTMGR="" ; initial value
  1. S RCDTRNG=$$DTRNG^RCDPEM4() G:'(RCDTRNG>0) EN1Q
  1. S RCSTART=$P(RCDTRNG,U,2)-1,RCEND=$P(RCDTRNG,U,3)
  1. ;
  1. ; PRCA*4.5*326 - Ask to show Medical/Pharmacy Tricare or All ; PRCA*4.5*4.32 CHAMPVA
  1. S RCTYPE=$$RTYPE^RCDPEU1("")
  1. I RCTYPE=-1 G EN1Q
  1. ;
  1. S RCPAY=$$PAYRNG^RCDPEU1() ; PRCA*4.5*326 - Selected or Range of Payers
  1. I RCPAY=-1 G EN1Q ; PRCA*4.5*326 '^' or timeout
  1. ;
  1. I RCPAY'="A" D I XX=-1 G EN1Q ; PRCA*4.5*326 - Since we don't want all payers
  1. . S RCPAR("TYPE")=RCTYPE ; prompt for payers we do want
  1. . S RCPAR("SELC")=RCPAY
  1. . S RCPAR("FILE")=344.31
  1. . S RCPAR("DICA")="Select Insurance Company NAME: "
  1. . S XX=$$SELPAY^RCDPEU1(.RCPAR)
  1. ;
  1. ;Get display type
  1. S RCDISPTY=$$DISPTY^RCDPEM3() G:RCDISPTY<0 EN1Q
  1. ; display device info about Excel format, set ListMan flag to prevent question
  1. I RCDISPTY S RCLSTMGR="^" D INFO^RCDPEM6
  1. I $D(DUOUT)!$D(DTOUT) G EN1Q
  1. ;
  1. ; if not output to Excel ask for ListMan display, exit if timeout or '^' - PRCA*4.5*298
  1. I RCLSTMGR="" S RCLSTMGR=$$ASKLM^RCDPEARL I RCLSTMGR<0 G EN1Q
  1. ; display in ListMan format and exit on return
  1. I RCLSTMGR D G EN1Q
  1. .S RCTMPND=$T(+0)_"^EFT UNMATCHED AGING" K ^TMP($J,RCTMPND) ; clean any residue
  1. .D RPTOUT
  1. .N H,L,HDR S L=0
  1. .S HDR("TITLE")=$$HDRNM
  1. .F H=1:1:7 I $D(RCHDR(H)) S L=H,HDR(H)=RCHDR(H) ; take first 3 lines of report header
  1. .I $O(RCHDR(L)) D ; any remaining header lines at top of report
  1. ..N N S N=0,H=L F S H=$O(RCHDR(H)) Q:'H S N=N+.001,^TMP($J,RCTMPND,N)=RCHDR(H)
  1. .D LMRPT^RCDPEARL(.HDR,$NA(^TMP($J,RCTMPND))) ; generate ListMan display
  1. ;
  1. S RCTMPND=""
  1. ; Ask device
  1. S %ZIS="QM" D ^%ZIS G:POP EN1Q
  1. I $D(IO("Q")) D G EN1Q
  1. .N ZTDESC,ZTRTN,ZTSAVE,ZTSTOP
  1. .S ZTRTN="RPTOUT^RCDPEAR2",ZTDESC="EFT AGING REPORT"
  1. .S ZTSAVE("RC*")="",ZTSAVE("VAUTD")=""
  1. .S ZTSAVE("^TMP(""RCDPEU1"",$J,")="" ; PRCA*4.5*326
  1. .D ^%ZTLOAD
  1. .W !!,$S($G(ZTSK):"Task number "_ZTSK_" has been queued.",1:"Unable to queue this task.")
  1. .K ZTSK,IO("Q") D HOME^%ZIS
  1. ;
  1. U IO D RPTOUT
  1. ;
  1. EN1Q ; exit and clean up
  1. I 'RCLSTMGR D ^%ZISC
  1. K ^TMP("RCSELPAY",$J),^TMP("RCPAYER",$J),^TMP("RCDPEU1",$J) ; PRCA*4.5*326
  1. Q
  1. ;
  1. RPTOUT ; Entry point for queued job, nightly job
  1. ; RCTMPND = name of the subscript for ^TMP to use to return all lines
  1. ; If undefined or null, output is printed
  1. ; Return global if RCTMPND not null: ^TMP($J,RCTMPND,line#)=line text
  1. N DIC,DUOUT,RC0,RC13,RC3443,RCCT,RCIEN,RCNT,RCOUT,RCPAYER,RCPAYID
  1. N RCSTOP,RCTOT,RCZ,X,XX,YY,Z,Z0,ZZ
  1. S RCTMPND=$G(RCTMPND)
  1. S (RCCT,RCSTOP,RCNT,RCTOT)=0
  1. K ^TMP($J,"RCERA_AGED"),^TMP($J,"RCERA_ADJ")
  1. ; build local payer array here
  1. I RCTMPND'="" K ^TMP($J,RCTMPND)
  1. ; cross-ref on file #344.31 field #.08 - MATCH STATUS
  1. S RCIEN=0 F S RCIEN=$O(^RCY(344.31,"AMATCH",0,RCIEN)) Q:'RCIEN D ;unmatched entries only
  1. .Q:$P($G(^RCY(344.31,RCIEN,3)),U) ; EFT has been removed
  1. .Q:$P($G(^RCY(344.31,RCIEN,0)),U,7)=0 ; payment of zero
  1. .;
  1. .S RC13=$P($G(^RCY(344.31,RCIEN,0)),U,13) ; date received
  1. .; Check for payer match
  1. .I RCPAY'="A" D Q:'XX
  1. .. S XX=$$ISSEL^RCDPEU1(344.31,RCIEN) ; PRCA*4.5*326 Check if payer was selected
  1. .E I RCTYPE'="A" D Q:'XX ; If all of a give type of payer selected
  1. .. S XX=$$ISTYPE^RCDPEU1(344.31,RCIEN,RCTYPE) ; check that payer matches type
  1. .; Check date range
  1. .Q:(RCSTART>RC13)!(RC13>RCEND)
  1. .; Passed all the filters - include on report
  1. .S ^TMP($J,"RCEFT_AGED",$$FMDIFF^XLFDT(RC13,DT),RCIEN)=0,RCNT=RCNT+1
  1. ;
  1. D:'RCLSTMGR HDRBLD ; create header
  1. D:RCLSTMGR HDRLM ; create Listman header
  1. ;
  1. I RCDISPTY D EXCEL Q
  1. ;
  1. ; Find total amount of EFTs
  1. S RCZ="" F S RCZ=$O(^TMP($J,"RCEFT_AGED",RCZ)) Q:RCZ="" S RCIEN=0 F S RCIEN=$O(^TMP($J,"RCEFT_AGED",RCZ,RCIEN)) Q:'RCIEN D G:RCSTOP PRTQ
  1. .I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCPGNUM) W:RCTMPND="" !!,"***TASK STOPPED BY USER***" Q
  1. .S RC0=$G(^RCY(344.31,RCIEN,0)),RC3443=$G(^RCY(344.3,+RC0,0))
  1. .D DEBEFT^RCDPEARL(.RC0) ;Add minus sign for debit amounts PRCA*4.5*432
  1. .S RCTOT=RCTOT+$P(RC0,U,7)
  1. ;
  1. D:'RCLSTMGR HDRLST^RCDPEARL(.RCSTOP,.RCHDR) ; initial report header
  1. ;
  1. S Z=$$SETSTR^VALM1("Totals:","",1,79)
  1. D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. S Z=$$SETSTR^VALM1(" Number Aged Electronic EFT Messages Found: "_RCNT,"",1,79)
  1. D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. S Z=$$SETSTR^VALM1(" Amount Aged Electronic EFT Messages Found: $"_$FN(+RCTOT,",",2),"",1,79)
  1. D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. D SL^RCDPEARL($TR($J("",IOM)," ","="),.RCCT,RCTMPND)
  1. ;
  1. S RCZ="" F S RCZ=$O(^TMP($J,"RCEFT_AGED",RCZ)) Q:RCZ="" S RCIEN=0 F S RCIEN=$O(^TMP($J,"RCEFT_AGED",RCZ,RCIEN)) Q:'RCIEN D G:RCSTOP PRTQ
  1. .I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCPGNUM) W:RCTMPND="" !!,"***TASK STOPPED BY USER***" Q
  1. .I RCPGNUM D SL^RCDPEARL(" ",.RCCT,.RCTMPND) ; On detail list, skip line
  1. .I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
  1. .S RC0=$G(^RCY(344.31,RCIEN,0)),RC3443=$G(^RCY(344.3,+RC0,0))
  1. .D DEBEFT^RCDPEARL(.RC0) ;Add minus sign for debit amounts PRCA*4.5*432
  1. .S RCTOT=RCTOT+$P(RC0,U,7)
  1. .S Z=$$SETSTR^VALM1($J(-RCZ,4),"",1,4)
  1. .; PRCA*4.5*318 moved deposit date up a row to give more room for payer/payer ID
  1. .S Z=$$SETSTR^VALM1(" "_$P(RC0,U,4),Z,5,52) ;trace#
  1. .S Z=$$SETSTR^VALM1($$FMTE^XLFDT($P(RC0,U,12),2),Z,73,8) ; deposit date
  1. .D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. .N RCPAY S RCPAY=$P(RC0,U,2) S:RCPAY="" RCPAY="NO PAYER NAME RECEIVED" ; PRCA*4.5*298
  1. .S RCPAYID=$P(RC0,U,3) ; Payer ID ;PRCA*4.5*298
  1. .;PRCA*4.5*318 dynamically display payer name/ID based on length
  1. .S RCPAYER=RCPAY_"/"_RCPAYID
  1. .I $L(RCPAYER)>76 D
  1. . . S ZZ=$L(RCPAYER,"/"),XX=$P(RCPAYER,"/",1,ZZ-1),YY=$P(RCPAYER,"/",ZZ)
  1. . . S XX=$E(RCPAYER,1,$L(XX)-($L(RCPAYER)-76)),RCPAYER=XX_"/"_YY
  1. .S Z=$$SETSTR^VALM1(RCPAYER,"",5,76) ; PRCA*4.5*298 (payer/payer ID)
  1. .;S Z=$$SETSTR^VALM1(" "_$$FMTE^XLFDT($P(RC0,U,12),2),Z,70,10) ; deposit date
  1. .;end of PRCA*4.5*318 display change
  1. .D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. .S Z=$$SETSTR^VALM1($J("",6)_$S($P(RC0,U,13):$$FMTE^XLFDT($P(RC0,U,13),2),1:""),"",1,17)
  1. .S Z=$$SETSTR^VALM1(" "_$J($P(RC0,U,7),15,2),Z,18,17)
  1. .; PRCA*4.5*283 - change length from 8 to 11 to allow for 9 digit DEP #'s
  1. .; PRCA*4.5*326 - add EFT identifier
  1. .S Z=$$SETSTR^VALM1(" "_$P(RC3443,U,6)_"/"_$$GET1^DIQ(344.31,RCIEN_",",.01,"E"),Z,35,17)
  1. .S Z=$$SETSTR^VALM1(" "_$S($P(RC3443,U,12):"",1:"NOT ")_"Posted to 8NZZ"_$S($P(RC3443,U,12):" "_$$FMTE^XLFDT($P(RC3443,U,11),2),1:""),Z,52,36)
  1. .D SL^RCDPEARL(Z,.RCCT,RCTMPND)
  1. .K RCOUT
  1. .D GETS^DIQ(344.31,RCIEN_",",2,"E","RCOUT")
  1. .Q:'$O(RCOUT(344.31,RCIEN_",",2,0))
  1. .D SL^RCDPEARL($J("",8)_"--EXCEPTION NOTES--",.RCCT,RCTMPND)
  1. .S Z=0 F S Z=$O(RCOUT(344.31,RCIEN_",",2,Z)) Q:'Z D Q:RCSTOP
  1. ..I 'RCLSTMGR,$Y>(IOSL-RCHDR(0)) D HDRLST^RCDPEARL(.RCSTOP,.RCHDR) Q:RCSTOP
  1. ..D SL^RCDPEARL($J("",8)_" "_RCOUT(344.31,RCIEN_",",2,Z),.RCCT,RCTMPND)
  1. ;
  1. ;
  1. ; PRCA*4.5*298, put end-of-report into SL^RCDPEARL
  1. D SL^RCDPEARL(" ",.RCCT,RCTMPND) ; skip a line
  1. D SL^RCDPEARL($$ENDORPRT^RCDPEARL,.RCCT,RCTMPND)
  1. ;
  1. PRTQ ;
  1. ; PRCA*4.5*298, added ListMan check
  1. I '$D(ZTQUEUED),'RCLSTMGR,'RCSTOP D ASK^RCDPEARL(.RCSTOP)
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. K ^TMP($J,"RCEFT_AGED"),ZTQUEUED
  1. K ^TMP("RCDPEU1",$J) ; PRCA*4.5*326
  1. Q
  1. ;
  1. ; extrinsic variable, text for header PRCA*4.5*298
  1. HDRNM() Q "EFT UNMATCHED AGING REPORT"
  1. ;
  1. HDRBLD ; create the report header
  1. ; returns RCHDR, RCPGNUM, RCSTOP
  1. ; RCHDR(0) = header text line count
  1. ; RCHDR("XECUTE") = M code for page number
  1. ; RCHDR("RUNDATE") = date/time report generated, external format
  1. ; RCPGNUM - page counter
  1. ; RCSTOP - flag to exit
  1. ;INPUT:
  1. ; RCDTRNG - date range filter value to be printed as part of the header
  1. ; RCPAY - Payer filter value(s)
  1. ; RCLSTMGR
  1. ;
  1. K RCHDR S RCHDR("RUNDATE")=$$NOW^RCDPEARL,RCPGNUM=0,RCSTOP=0
  1. ;
  1. I RCDISPTY D Q ; Excel format, xecute code is QUIT, null page number
  1. .S RCHDR(0)=1,RCHDR("XECUTE")="Q",RCPGNUM=""
  1. .S RCHDR(1)="Aged Days^Trace #^Deposit From/ID^File Date^Deposit Amount^Dep#/EFT#^Deposit Post Status^Deposit Date" ; PRCA*4.3*326
  1. ;
  1. N START,END,MSG,DATE,Y,DIV,HCNT
  1. S START=$$FMTE^XLFDT($P(RCDTRNG,U,2),2),END=$$FMTE^XLFDT($P(RCDTRNG,U,3),2)
  1. ;
  1. S Y=$$HDRNM,HCNT=1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y ; line 1 will be replaced by XECUTE code below
  1. S RCHDR("XECUTE")="N Y S RCPGNUM=RCPGNUM+1,Y=$$HDRNM^"_$T(+0)_"_$S(RCLSTMGR:"""",1:$J(""Page: ""_RCPGNUM,12)),RCHDR(1)=$J("" "",80-$L(Y)\2)_Y"
  1. S Y="RUN DATE: "_RCHDR("RUNDATE"),HCNT=HCNT+1,RCHDR(HCNT)=$J("",80-$L(Y)\2)_Y ; line 1 will be replaced by XECUTE code below
  1. ;
  1. ; Payer(s) - PRCA*4.5*326 Add MPT filter
  1. S Y="PAYERS: "_$S(RCPAY="R":"RANGE",RCPAY="S":"SELECTED",1:"ALL")
  1. S Y=$E(Y_$J("",80),1,38)_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: " ; PRCA*4.5*4.32 CHAMPVA, 41->38
  1. S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ; PRCA*4.5*4.32 CHAMPVA
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y="DATE RANGE: "_$P($$FMTE^XLFDT(START,2),"@")_" - "_$P($$FMTE^XLFDT(END,2),"@")_" (DATE EFT FILED)"
  1. S Y=$J("",80-$L(Y)\2)_Y,HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ;
  1. S Y="AGED",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ; PRCA*4.5*318 moved deposit date up a row
  1. S Y="DAYS TRACE # DEP DATE",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" DEPOSIT FROM/ID",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" FILE DATE DEPOSIT AMOUNT DEP#/EFT# DEPOSIT POST STATUS",HCNT=HCNT+1,RCHDR(HCNT)=Y ; PRCA*4.5*326
  1. S Y="",$P(Y,"=",81)="",HCNT=HCNT+1,RCHDR(HCNT)=Y ; row of equal signs at bottom
  1. ;
  1. S RCHDR(0)=HCNT
  1. ;
  1. Q
  1. ;
  1. HDRLM ; create the Listman header section
  1. ; returns RCHDR
  1. ; RCHDR(0) = header text line count
  1. ;INPUT:
  1. ; RCDTRNG - date range filter value to be printed as part of the header
  1. ; RCPAY - Payer filter value(s)
  1. ;
  1. K RCHDR S RCPGNUM=0,RCSTOP=0
  1. ;
  1. N START,END,MSG,DATE,Y,DIV,HCNT
  1. S START=$$FMTE^XLFDT($P(RCDTRNG,U,2),2),END=$$FMTE^XLFDT($P(RCDTRNG,U,3),2)
  1. S Y="DATE RANGE: "_$P($$FMTE^XLFDT(START,2),"@")_" - "_$P($$FMTE^XLFDT(END,2),"@")_" (DATE EFT FILED)"
  1. S HCNT=1,RCHDR(HCNT)=Y
  1. ; Payer(s) - PRCA*4.5*326 Add MPT filter
  1. S Y="PAYERS: "_$S(RCPAY="R":"RANGE",RCPAY="S":"SELECTED",1:"ALL")
  1. S Y=$E(Y_$J("",80),1,38)_"MEDICAL/PHARMACY/TRICARE/CHAMPVA: " ; PRCA*4.5*4.32 CHAMPVA, 41->38
  1. S Y=Y_$S(RCTYPE="M":"MEDICAL",RCTYPE="P":"PHARMACY",RCTYPE="T":"TRICARE",RCTYPE="C":"CHAMPVA",1:"ALL") ; PRCA*4.5*4.32 CHAMPVA
  1. S HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ;
  1. S HCNT=HCNT+1,RCHDR(HCNT)=""
  1. S Y="AGED",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. ; PRCA*4.5*318 moved deposit date up a row
  1. S Y="DAYS TRACE # DEP DATE",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" DEPOSIT FROM/ID",HCNT=HCNT+1,RCHDR(HCNT)=Y
  1. S Y=" FILE DATE DEPOSIT AMOUNT DEP#/EFT# DEPOSIT POST STATUS",HCNT=HCNT+1,RCHDR(HCNT)=Y ; PRCA*4.5*326
  1. ;
  1. S RCHDR(0)=HCNT
  1. ;
  1. Q
  1. ;
  1. EXCEL ; Print report to screen, one record per line for export to MS Excel.
  1. ; RCTMPND = name of the subscript for ^TMP to use
  1. W !!,"Aged Days^Trace #^Deposit From/ID^File Date^Deposit Amount^Dep#/EFT#^Deposit Post Status^Deposit Date" ; PRCA*4.5*326
  1. S RCZ="" F S RCZ=$O(^TMP($J,"RCEFT_AGED",RCZ)) Q:RCZ="" S RCIEN=0 F S RCIEN=$O(^TMP($J,"RCEFT_AGED",RCZ,RCIEN)) Q:'RCIEN D G:RCSTOP PRTQ2
  1. .I $D(ZTQUEUED),$$S^%ZTLOAD S (RCSTOP,ZTSTOP)=1 K ZTREQ I +$G(RCPG) W:RCTMPND="" !!,"***TASK STOPPED BY USER***" Q
  1. .S RC0=$G(^RCY(344.31,RCIEN,0)),RC3443=$G(^RCY(344.3,+RC0,0))
  1. .D DEBEFT^RCDPEARL(.RC0) ;Add minus sign for debit amounts PRCA*4.5*432
  1. .N RCPAY S RCPAY=$P(RC0,U,2) S:RCPAY="" RCPAY="NO PAYER NAME RECEIVED" ; PRCA*4.5*298
  1. .S Z=$J(-RCZ,4)_"^"_$P(RC0,U,4)_"^"_RCPAY_"/"_$P(RC0,U,3)_"^"_$S($P(RC0,U,13):$$FMTE^XLFDT($P(RC0,U,13),2),1:"")_"^" ; PRCA*4.5*298
  1. .S Z=Z_$P(RC0,U,7)_"^"_$P(RC3443,U,6)_"/"_$P(RC0,U)_"."_$P(RC0,U,14)_"^" ; PRCA*4.5*326
  1. .S Z=Z_$S($P(RC3443,U,12):"",1:"NOT ")_"Posted to 8NZZ"_$S($P(RC3443,U,12):"^"_$$FMTE^XLFDT($P(RC0,U,12),2),1:"") ; PRCA*4.5*326
  1. .W !,Z
  1. W !!,"*** END OF REPORT ***",!
  1. ;
  1. PRTQ2 ;
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. I '$D(ZTQUEUED) D ^%ZISC
  1. K ^TMP($J,"RCEFT_AGED"),^TMP("RCSELPAY",$J),^TMP("RCPAYER",$J),^TMP($J,"RCERA_ADJ")
  1. Q
  1. ;
  1. ;PRCA*4.5*298
  1. ; removed RCIND local variable
  1. ; changed RC00 to RC3443
  1. ; replaced SETLINE with SL^RCDPEARL
  1. ; added $$HDRNM
  1. ; added RCLSTMGR in checks for header
  1. ; changed upper case text to mixed case throughout
  1. ;