- GMRCCY ;SFVAMC/DAD - Consult Closure Tool: Date Range Selector ;01/20/17 15:19
- ;;3.0;CONSULT/REQUEST TRACKING;**89**;DEC 27, 1997;Build 62
- ;Consult Closure Tool
- ;
- ; IA# Usage Component
- ; ---------------------------
- ; 10003 Supported ^%DT
- ; 10103 Supported $$FMTE^XLFDT
- ; 10103 Supported $$SCH^XLFDT
- ; 10104 Supported $$UP^XLFSTR
- ;
- EN(GMTBEG,GMTEND,GMHEAD,GMRANG) ; *** Entry Point
- ; Input
- ; GMTBEG = Begin date - Default (FM Int) [Req, Pass by ref]
- ; GMTEND = End date - Default (FM Int) [Req, Pass by ref]
- ; GMHEAD = Header line [Opt, Pass by value]
- ; GMRANG = Date range type [Opt, Pass by value]
- ; M,M!,Q,Q!,S,S!,Y,Y!,F,F!,U,U! ("!" forces selection)
- ; Output
- ; $$EN() = 1 - Okay OR 0 - Exit
- ; GMTBEG = Begin date [If $$EN()=1 FM Int Date, Else ""]
- ; GMTEND = End date [If $$EN()=1 FM Int Date, Else ""]
- ;
- ; Example
- ; IF $$EN^GMDATE(.GMTBEG,.GMTEND,GMHEAD,GMRANG)'>0 QUIT
- ;
- N GM,GMDATA,GMDFLT,GMDONE,GMFRAM,GMQUIT,GMWHEN,X,Y
- S (GMFRAM,GMFRAM(0))=""
- F GM=1:1 S GMDATA=$P($T(FRAMDAT+GM),";;",2) Q:GMDATA=U D
- . S GMFRAM=GMFRAM_U_$$UP^XLFSTR(GMDATA)
- . S GMFRAM(0)=GMFRAM(0)_GMDATA_$S(GM<6:", ",1:"")
- . Q
- F D Q:GMQUIT!GMDONE
- . S (GMQUIT,GMDONE)=0
- . S GMTBEG=$S($G(GMTBEG)\1?7N:GMTBEG\1,1:"")
- . S GMTEND=$S($G(GMTEND)\1?7N:GMTEND\1,1:"")
- . S GMDFLT=$$UP^XLFSTR($G(GMRANG))_U_GMTBEG_U_GMTEND
- . I $G(GMHEAD)]"" W !,GMHEAD
- . W !,GMFRAM(0)
- . W !,"Select date range: "
- . W $S($TR($P(GMDFLT,U),"!")]"":$TR($P(GMDFLT,U),"!")_"// ",1:"")
- . S GMWHEN=""
- . I $P(GMDFLT,U)'["!" R GMWHEN:DTIME S:'$T GMWHEN=U
- . I GMWHEN="" S GMWHEN=$TR($P(GMDFLT,U),"!") W GMWHEN
- . I (GMWHEN="")!($E(GMWHEN)=U) S GMQUIT=1 Q
- . S GMWHEN=$$UP^XLFSTR(GMWHEN)
- . I $F(GMFRAM,U_GMWHEN)'>0 D Q
- .. D BELL(GMWHEN)
- .. I $P(GMDFLT,U)["!" S GMQUIT=1 Q
- .. W !!?5,"Enter the first few letters of "
- .. W "one of the choices listed below.",!
- .. Q
- . W $P($P(GMFRAM,U_GMWHEN,2),U)
- . S GMWHEN=$E(GMWHEN)
- . S GMQUIT=$$ASKDATE(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- . I GMQUIT D
- .. S GMQUIT=$S($P(GMDFLT,U)'["!":0,1:GMQUIT)
- .. I GMQUIT'>0 W !
- .. Q
- . E D
- .. S GMDONE=1
- .. Q
- . Q
- S GMQUIT='$G(GMQUIT)
- I GMQUIT>0 D
- . W !!,"Range selected: "
- . W $$FMTE^XLFDT(GMTBEG,"5Z")," to ",$$FMTE^XLFDT(GMTEND,"5Z")
- . Q
- E D
- . S (GMTBEG,GMTEND)=""
- . Q
- Q GMQUIT
- ;
- FRAMDAT ;; TimeFrameName
- ;;Monthly
- ;;Quarterly
- ;;Semi-Annually
- ;;Yearly
- ;;Fiscal Yearly
- ;;User Selectable
- ;;^
- ;
- ASKDATE(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Prompt for date range
- N GMQUIT
- S GMQUIT=1
- I GMWHEN="M" D
- . S GMQUIT=$$MONTH(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- . Q
- I (GMWHEN="Q")!(GMWHEN="S") D
- . S GMQUIT=$$QUART(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- . Q
- I (GMWHEN="F")!(GMWHEN="Y") D
- . S GMQUIT=$$YEAR(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- . Q
- I GMWHEN="U" D
- . S GMQUIT=$$USERSEL(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- . Q
- Q GMQUIT
- ;
- MONTH(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Monthly
- N %DT,GM,GMDATA,GMDONE,GMEND,GMEOM,GMMNYR,GMMOE,GMQUIT,GMYEAR,X,Y
- F GM=1:1 S GMDATA=$P($T(MONTHDAT+GM),";;",2) Q:GMDATA=U D
- . S GMEOM($P(GMDATA,U))=$P(GMDATA,U,2,3)
- . Q
- S (GMQUIT,GMDONE)=0
- F D Q:(GMQUIT>0)!(GMDONE>0)
- . K %DT
- . S %DT="AE"
- . S %DT("A")="Enter Month and Year: "
- . I $P(GMDFLT,U,2)]"" D
- .. S GMMNYR=$P(GMDFLT,U,2)
- .. S %DT("B")=$E(GMMNYR,4,5)_"/"_(1700+$E(GMMNYR,1,3))
- .. Q
- . W ! D ^%DT S GMEND=+$G(Y)
- . I GMEND'>0 S GMQUIT=1 Q
- . I ('+$E(GMEND,4,5))!(+$E(GMEND,6,7)) D Q
- .. D BELL("")
- .. W !!,"Please enter a month and year"
- .. W $S(+$E(GMEND,6,7):" only",1:"")
- .. Q
- . S GMMOE=$E(GMEND,4,5)
- . S GMTEND=$E(GMEND,1,5)_$P(GMEOM(GMMOE),U)
- . I $E(GMTEND,4,5)="02" D
- .. S GMYEAR=1700+$E(GMTEND,1,3)
- .. S GMTEND=GMTEND+((GMYEAR#4=0)&((GMYEAR#100)!(GMYEAR#400=0)))
- .. Q
- . S GMTBEG=$E(GMTEND,1,5)_"01"
- . S GMDONE=1
- . Q
- Q GMQUIT
- ;
- MONTHDAT ;; MonthNumber ^ DaysInMonth ^ MonthName
- ;;01^31^JANUARY
- ;;02^28^FEBRUARY
- ;;03^31^MARCH
- ;;04^30^APRIL
- ;;05^31^MAY
- ;;06^30^JUNE
- ;;07^31^JULY
- ;;08^31^AUGUST
- ;;09^30^SEPTEMBER
- ;;10^31^OCTOBER
- ;;11^30^NOVEMBER
- ;;12^31^DECEMBER
- ;;^
- ;
- QUART(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Quarterly & Semi-Annually
- N %DT,GM,GMDATA,GMDONE,GMMNDY,GMQU,GMQUIT,GMQUYR,GMSBEG,GMSEMI,GMYR,GMQART
- N GMQBEG,GMQEND,GMQQUA,X,Y
- S GMSEMI=$S(GMWHEN="S":1,1:0)
- F GM=1:1 S GMDATA=$P($T(QUARTDAT+GM),";;",2) Q:GMDATA=U D
- . S GMQQUA(GM)=$P(GMDATA,U)
- . S GMQBEG(GM)="000"_$P(GMDATA,U,2)
- . S GMSBEG(GM)="000"_$P(GMDATA,U,3)
- . S GMQEND(GM)="000"_$P(GMDATA,U,4)
- . Q
- S GMQUYR=""
- I $P(GMDFLT,U,2)]"" D
- . S GMMNDY=$E($P(GMDFLT,U,2),4,7)
- . I (GMMNDY'<GMQBEG(1))&(GMMNDY'>GMQEND(1)) S GMQU=1
- . I (GMMNDY'<GMQBEG(2))&(GMMNDY'>GMQEND(2)) S GMQU=2
- . I (GMMNDY'<GMQBEG(3))&(GMMNDY'>GMQEND(3)) S GMQU=3
- . I (GMMNDY'<GMQBEG(4))&(GMMNDY'>GMQEND(4)) S GMQU=4
- . S GMQUYR=$S(GMQU>0:GMQU_"/"_(1700+$E($P(GMDFLT,U,2),1,3)+(GMQU=1)),1:"")
- . Q
- S (GMQUIT,GMDONE)=0
- F D Q:(GMQUIT>0)!(GMDONE>0)
- . I GMSEMI>0 D
- .. W !!,"Enter Quarter Period and FY you "
- .. W "wish Semi-Annual range to end with"
- .. Q
- . W !
- . W !,"Enter Quarter and Year: ",$S(GMQUYR]"":GMQUYR_"// ",1:"")
- . R GMQART:DTIME S:'$T GMQART=U
- . I GMQART="" S GMQART=GMQUYR
- . I (GMQART=U)!(GMQART="") S GMQUIT=1 Q
- . I (GMQART'?1N1P2N)&(GMQART'?1N1P4N) D Q
- .. D BELL(GMQART)
- .. W !!,"Enter Quarter Period in this format: "
- .. W "2nd quarter 1988 would be 2-88, 2/88, 2 88"
- .. Q
- . I ($E(GMQART)>4)!($E(GMQART)<1) D Q
- .. D BELL("")
- .. W !!,"Enter Quarter 1 to 4 only"
- .. Q
- . S GMQU=$E(GMQART)
- . S GMYR=$E(GMQART,3,6)
- . K %DT S X=GMYR D ^%DT S GMYR=$E(Y,1,3)
- . F GM=1:1:4 D
- .. S GMQBEG(GM)=$S(GM=1:GMYR-1,1:GMYR)_$E(GMQBEG(GM),4,7)
- .. S GMSBEG(GM)=$S(GM'>2:GMYR-1,1:GMYR)_$E(GMSBEG(GM),4,7)
- .. S GMQEND(GM)=$S(GM=1:GMYR-1,1:GMYR)_$E(GMQEND(GM),4,7)
- .. Q
- . S GMTEND=GMQEND(GMQU)
- . S GMTBEG=$S(GMSEMI:GMSBEG(GMQU),1:GMQBEG(GMQU))
- . S GMDONE=1
- . Q
- Q GMQUIT
- ;
- QUARTDAT ;;Name ^ QuarterStart ^ SemiStart ^ QuarterEnd
- ;;FIRST^1001^0701^1231
- ;;SECOND^0101^1001^0331
- ;;THIRD^0401^0101^0630
- ;;FOURTH^0701^0401^0930
- ;;^
- ;
- YEAR(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Yearly & Fiscal Yearly
- N %DT,GMDONE,GMFY,GMQUIT,GMYEAR,GMYR,X,Y
- S GMFY=$S(GMWHEN="F":1,1:0)
- S (GMQUIT,GMDONE)=0
- F D Q:(GMQUIT>0)!(GMDONE>0)
- . W !!,"Enter ",$S(GMFY:"FISCAL ",1:""),"YEAR: "
- . S GMYEAR=$S($P(GMDFLT,U,2)]"":1700+$E($P(GMDFLT,U,2),1,3),1:"")
- . W $S(GMYEAR]"":GMYEAR_"// ",1:"")
- . R GMYR:DTIME S:'$T GMYR=U
- . I GMYR="" S GMYR=GMYEAR
- . I (GMYR=U)!(GMYR="") S GMQUIT=1 Q
- . I (GMYR'?2N)&(GMYR'?4N) D Q
- .. D BELL(GMYR)
- .. W !!,"Enter a 2 or 4 digit ",$S(GMFY:"fiscal ",1:""),"year"
- .. Q
- . K %DT S X=GMYR D ^%DT S GMYR=$E(Y,1,3)
- . I GMFY D
- .. S GMTBEG=GMYR-1_"1001"
- .. S GMTEND=GMYR_"0930"
- .. Q
- . E D
- .. S GMTBEG=GMYR_"0101"
- .. S GMTEND=GMYR_"1231"
- .. Q
- . S GMDONE=1
- . Q
- Q GMQUIT
- ;
- USERSEL(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** User Selectable
- N %DT,GMBEG,GMEND,GMQUIT,X,Y
- S GMQUIT=0
- W !!,"Enter beginning and ending dates for the desired time period:",!
- K %DT
- S %DT="AEX"
- S %DT("A")="Beginning Date: "
- I $P(GMDFLT,U,2)]"" S %DT("B")=$$FMTE^XLFDT($P(GMDFLT,U,2),"5Z")
- D ^%DT S GMBEG=+$G(Y)
- I GMBEG>0 D
- . K %DT
- . S %DT="AEX"
- . S %DT(0)=GMBEG
- . S %DT("A")="Ending Date: "
- . I $P(GMDFLT,U,3)]"",$P(GMDFLT,U,3)'<GMBEG D
- .. S %DT("B")=$$FMTE^XLFDT($P(GMDFLT,U,3),"5Z")
- .. Q
- . E D
- .. S %DT("B")=$$FMTE^XLFDT(GMBEG,"5Z")
- .. Q
- . D ^%DT S GMEND=+$G(Y)
- . I GMEND>0 D
- .. S GMTBEG=GMBEG
- .. S GMTEND=GMEND
- .. Q
- . E D
- .. S GMQUIT=1
- .. Q
- . Q
- E D
- . S GMQUIT=1
- . Q
- Q GMQUIT
- ;
- BELL(X) ; *** Write ?? <Beep>
- I $E(X)'="?" W " ??",$C(7)
- Q
- ;
- LASTMNTH(GMDATE,GMTBEG,GMTEND) ; *** Compute last month date range
- N GMMN,GMYR
- S GMYR=1700+$E(GMDATE,1,3)
- S GMMN=$E(GMDATE,4,5)
- I (GMMN'<1)&(GMMN'>12) D
- . S GMMN=GMMN-1
- . I GMMN=0 S GMMN=12,GMYR=GMYR-1
- . I $L(GMMN)=1 S GMMN="0"_GMMN
- . S GMTBEG=(GMYR-1700)_GMMN_"01"
- . S GMTEND=$$SCH^XLFDT("1M(1)",GMTBEG)\1
- . Q
- E D
- . S (GMTBEG,GMTEND)=""
- . Q
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRCCY 8149 printed Feb 18, 2025@23:11:48 Page 2
- GMRCCY ;SFVAMC/DAD - Consult Closure Tool: Date Range Selector ;01/20/17 15:19
- +1 ;;3.0;CONSULT/REQUEST TRACKING;**89**;DEC 27, 1997;Build 62
- +2 ;Consult Closure Tool
- +3 ;
- +4 ; IA# Usage Component
- +5 ; ---------------------------
- +6 ; 10003 Supported ^%DT
- +7 ; 10103 Supported $$FMTE^XLFDT
- +8 ; 10103 Supported $$SCH^XLFDT
- +9 ; 10104 Supported $$UP^XLFSTR
- +10 ;
- EN(GMTBEG,GMTEND,GMHEAD,GMRANG) ; *** Entry Point
- +1 ; Input
- +2 ; GMTBEG = Begin date - Default (FM Int) [Req, Pass by ref]
- +3 ; GMTEND = End date - Default (FM Int) [Req, Pass by ref]
- +4 ; GMHEAD = Header line [Opt, Pass by value]
- +5 ; GMRANG = Date range type [Opt, Pass by value]
- +6 ; M,M!,Q,Q!,S,S!,Y,Y!,F,F!,U,U! ("!" forces selection)
- +7 ; Output
- +8 ; $$EN() = 1 - Okay OR 0 - Exit
- +9 ; GMTBEG = Begin date [If $$EN()=1 FM Int Date, Else ""]
- +10 ; GMTEND = End date [If $$EN()=1 FM Int Date, Else ""]
- +11 ;
- +12 ; Example
- +13 ; IF $$EN^GMDATE(.GMTBEG,.GMTEND,GMHEAD,GMRANG)'>0 QUIT
- +14 ;
- +15 NEW GM,GMDATA,GMDFLT,GMDONE,GMFRAM,GMQUIT,GMWHEN,X,Y
- +16 SET (GMFRAM,GMFRAM(0))=""
- +17 FOR GM=1:1
- SET GMDATA=$PIECE($TEXT(FRAMDAT+GM),";;",2)
- if GMDATA=U
- QUIT
- Begin DoDot:1
- +18 SET GMFRAM=GMFRAM_U_$$UP^XLFSTR(GMDATA)
- +19 SET GMFRAM(0)=GMFRAM(0)_GMDATA_$SELECT(GM<6:", ",1:"")
- +20 QUIT
- End DoDot:1
- +21 FOR
- Begin DoDot:1
- +22 SET (GMQUIT,GMDONE)=0
- +23 SET GMTBEG=$SELECT($GET(GMTBEG)\1?7N:GMTBEG\1,1:"")
- +24 SET GMTEND=$SELECT($GET(GMTEND)\1?7N:GMTEND\1,1:"")
- +25 SET GMDFLT=$$UP^XLFSTR($GET(GMRANG))_U_GMTBEG_U_GMTEND
- +26 IF $GET(GMHEAD)]""
- WRITE !,GMHEAD
- +27 WRITE !,GMFRAM(0)
- +28 WRITE !,"Select date range: "
- +29 WRITE $SELECT($TRANSLATE($PIECE(GMDFLT,U),"!")]"":$TRANSLATE($PIECE(GMDFLT,U),"!")_"// ",1:"")
- +30 SET GMWHEN=""
- +31 IF $PIECE(GMDFLT,U)'["!"
- READ GMWHEN:DTIME
- if '$TEST
- SET GMWHEN=U
- +32 IF GMWHEN=""
- SET GMWHEN=$TRANSLATE($PIECE(GMDFLT,U),"!")
- WRITE GMWHEN
- +33 IF (GMWHEN="")!($EXTRACT(GMWHEN)=U)
- SET GMQUIT=1
- QUIT
- +34 SET GMWHEN=$$UP^XLFSTR(GMWHEN)
- +35 IF $FIND(GMFRAM,U_GMWHEN)'>0
- Begin DoDot:2
- +36 DO BELL(GMWHEN)
- +37 IF $PIECE(GMDFLT,U)["!"
- SET GMQUIT=1
- QUIT
- +38 WRITE !!?5,"Enter the first few letters of "
- +39 WRITE "one of the choices listed below.",!
- +40 QUIT
- End DoDot:2
- QUIT
- +41 WRITE $PIECE($PIECE(GMFRAM,U_GMWHEN,2),U)
- +42 SET GMWHEN=$EXTRACT(GMWHEN)
- +43 SET GMQUIT=$$ASKDATE(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- +44 IF GMQUIT
- Begin DoDot:2
- +45 SET GMQUIT=$SELECT($PIECE(GMDFLT,U)'["!":0,1:GMQUIT)
- +46 IF GMQUIT'>0
- WRITE !
- +47 QUIT
- End DoDot:2
- +48 IF '$TEST
- Begin DoDot:2
- +49 SET GMDONE=1
- +50 QUIT
- End DoDot:2
- +51 QUIT
- End DoDot:1
- if GMQUIT!GMDONE
- QUIT
- +52 SET GMQUIT='$GET(GMQUIT)
- +53 IF GMQUIT>0
- Begin DoDot:1
- +54 WRITE !!,"Range selected: "
- +55 WRITE $$FMTE^XLFDT(GMTBEG,"5Z")," to ",$$FMTE^XLFDT(GMTEND,"5Z")
- +56 QUIT
- End DoDot:1
- +57 IF '$TEST
- Begin DoDot:1
- +58 SET (GMTBEG,GMTEND)=""
- +59 QUIT
- End DoDot:1
- +60 QUIT GMQUIT
- +61 ;
- FRAMDAT ;; TimeFrameName
- +1 ;;Monthly
- +2 ;;Quarterly
- +3 ;;Semi-Annually
- +4 ;;Yearly
- +5 ;;Fiscal Yearly
- +6 ;;User Selectable
- +7 ;;^
- +8 ;
- ASKDATE(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Prompt for date range
- +1 NEW GMQUIT
- +2 SET GMQUIT=1
- +3 IF GMWHEN="M"
- Begin DoDot:1
- +4 SET GMQUIT=$$MONTH(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- +5 QUIT
- End DoDot:1
- +6 IF (GMWHEN="Q")!(GMWHEN="S")
- Begin DoDot:1
- +7 SET GMQUIT=$$QUART(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- +8 QUIT
- End DoDot:1
- +9 IF (GMWHEN="F")!(GMWHEN="Y")
- Begin DoDot:1
- +10 SET GMQUIT=$$YEAR(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- +11 QUIT
- End DoDot:1
- +12 IF GMWHEN="U"
- Begin DoDot:1
- +13 SET GMQUIT=$$USERSEL(GMWHEN,GMDFLT,.GMTBEG,.GMTEND)
- +14 QUIT
- End DoDot:1
- +15 QUIT GMQUIT
- +16 ;
- MONTH(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Monthly
- +1 NEW %DT,GM,GMDATA,GMDONE,GMEND,GMEOM,GMMNYR,GMMOE,GMQUIT,GMYEAR,X,Y
- +2 FOR GM=1:1
- SET GMDATA=$PIECE($TEXT(MONTHDAT+GM),";;",2)
- if GMDATA=U
- QUIT
- Begin DoDot:1
- +3 SET GMEOM($PIECE(GMDATA,U))=$PIECE(GMDATA,U,2,3)
- +4 QUIT
- End DoDot:1
- +5 SET (GMQUIT,GMDONE)=0
- +6 FOR
- Begin DoDot:1
- +7 KILL %DT
- +8 SET %DT="AE"
- +9 SET %DT("A")="Enter Month and Year: "
- +10 IF $PIECE(GMDFLT,U,2)]""
- Begin DoDot:2
- +11 SET GMMNYR=$PIECE(GMDFLT,U,2)
- +12 SET %DT("B")=$EXTRACT(GMMNYR,4,5)_"/"_(1700+$EXTRACT(GMMNYR,1,3))
- +13 QUIT
- End DoDot:2
- +14 WRITE !
- DO ^%DT
- SET GMEND=+$GET(Y)
- +15 IF GMEND'>0
- SET GMQUIT=1
- QUIT
- +16 IF ('+$EXTRACT(GMEND,4,5))!(+$EXTRACT(GMEND,6,7))
- Begin DoDot:2
- +17 DO BELL("")
- +18 WRITE !!,"Please enter a month and year"
- +19 WRITE $SELECT(+$EXTRACT(GMEND,6,7):" only",1:"")
- +20 QUIT
- End DoDot:2
- QUIT
- +21 SET GMMOE=$EXTRACT(GMEND,4,5)
- +22 SET GMTEND=$EXTRACT(GMEND,1,5)_$PIECE(GMEOM(GMMOE),U)
- +23 IF $EXTRACT(GMTEND,4,5)="02"
- Begin DoDot:2
- +24 SET GMYEAR=1700+$EXTRACT(GMTEND,1,3)
- +25 SET GMTEND=GMTEND+((GMYEAR#4=0)&((GMYEAR#100)!(GMYEAR#400=0)))
- +26 QUIT
- End DoDot:2
- +27 SET GMTBEG=$EXTRACT(GMTEND,1,5)_"01"
- +28 SET GMDONE=1
- +29 QUIT
- End DoDot:1
- if (GMQUIT>0)!(GMDONE>0)
- QUIT
- +30 QUIT GMQUIT
- +31 ;
- MONTHDAT ;; MonthNumber ^ DaysInMonth ^ MonthName
- +1 ;;01^31^JANUARY
- +2 ;;02^28^FEBRUARY
- +3 ;;03^31^MARCH
- +4 ;;04^30^APRIL
- +5 ;;05^31^MAY
- +6 ;;06^30^JUNE
- +7 ;;07^31^JULY
- +8 ;;08^31^AUGUST
- +9 ;;09^30^SEPTEMBER
- +10 ;;10^31^OCTOBER
- +11 ;;11^30^NOVEMBER
- +12 ;;12^31^DECEMBER
- +13 ;;^
- +14 ;
- QUART(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Quarterly & Semi-Annually
- +1 NEW %DT,GM,GMDATA,GMDONE,GMMNDY,GMQU,GMQUIT,GMQUYR,GMSBEG,GMSEMI,GMYR,GMQART
- +2 NEW GMQBEG,GMQEND,GMQQUA,X,Y
- +3 SET GMSEMI=$SELECT(GMWHEN="S":1,1:0)
- +4 FOR GM=1:1
- SET GMDATA=$PIECE($TEXT(QUARTDAT+GM),";;",2)
- if GMDATA=U
- QUIT
- Begin DoDot:1
- +5 SET GMQQUA(GM)=$PIECE(GMDATA,U)
- +6 SET GMQBEG(GM)="000"_$PIECE(GMDATA,U,2)
- +7 SET GMSBEG(GM)="000"_$PIECE(GMDATA,U,3)
- +8 SET GMQEND(GM)="000"_$PIECE(GMDATA,U,4)
- +9 QUIT
- End DoDot:1
- +10 SET GMQUYR=""
- +11 IF $PIECE(GMDFLT,U,2)]""
- Begin DoDot:1
- +12 SET GMMNDY=$EXTRACT($PIECE(GMDFLT,U,2),4,7)
- +13 IF (GMMNDY'<GMQBEG(1))&(GMMNDY'>GMQEND(1))
- SET GMQU=1
- +14 IF (GMMNDY'<GMQBEG(2))&(GMMNDY'>GMQEND(2))
- SET GMQU=2
- +15 IF (GMMNDY'<GMQBEG(3))&(GMMNDY'>GMQEND(3))
- SET GMQU=3
- +16 IF (GMMNDY'<GMQBEG(4))&(GMMNDY'>GMQEND(4))
- SET GMQU=4
- +17 SET GMQUYR=$SELECT(GMQU>0:GMQU_"/"_(1700+$EXTRACT($PIECE(GMDFLT,U,2),1,3)+(GMQU=1)),1:"")
- +18 QUIT
- End DoDot:1
- +19 SET (GMQUIT,GMDONE)=0
- +20 FOR
- Begin DoDot:1
- +21 IF GMSEMI>0
- Begin DoDot:2
- +22 WRITE !!,"Enter Quarter Period and FY you "
- +23 WRITE "wish Semi-Annual range to end with"
- +24 QUIT
- End DoDot:2
- +25 WRITE !
- +26 WRITE !,"Enter Quarter and Year: ",$SELECT(GMQUYR]"":GMQUYR_"// ",1:"")
- +27 READ GMQART:DTIME
- if '$TEST
- SET GMQART=U
- +28 IF GMQART=""
- SET GMQART=GMQUYR
- +29 IF (GMQART=U)!(GMQART="")
- SET GMQUIT=1
- QUIT
- +30 IF (GMQART'?1N1P2N)&(GMQART'?1N1P4N)
- Begin DoDot:2
- +31 DO BELL(GMQART)
- +32 WRITE !!,"Enter Quarter Period in this format: "
- +33 WRITE "2nd quarter 1988 would be 2-88, 2/88, 2 88"
- +34 QUIT
- End DoDot:2
- QUIT
- +35 IF ($EXTRACT(GMQART)>4)!($EXTRACT(GMQART)<1)
- Begin DoDot:2
- +36 DO BELL("")
- +37 WRITE !!,"Enter Quarter 1 to 4 only"
- +38 QUIT
- End DoDot:2
- QUIT
- +39 SET GMQU=$EXTRACT(GMQART)
- +40 SET GMYR=$EXTRACT(GMQART,3,6)
- +41 KILL %DT
- SET X=GMYR
- DO ^%DT
- SET GMYR=$EXTRACT(Y,1,3)
- +42 FOR GM=1:1:4
- Begin DoDot:2
- +43 SET GMQBEG(GM)=$SELECT(GM=1:GMYR-1,1:GMYR)_$EXTRACT(GMQBEG(GM),4,7)
- +44 SET GMSBEG(GM)=$SELECT(GM'>2:GMYR-1,1:GMYR)_$EXTRACT(GMSBEG(GM),4,7)
- +45 SET GMQEND(GM)=$SELECT(GM=1:GMYR-1,1:GMYR)_$EXTRACT(GMQEND(GM),4,7)
- +46 QUIT
- End DoDot:2
- +47 SET GMTEND=GMQEND(GMQU)
- +48 SET GMTBEG=$SELECT(GMSEMI:GMSBEG(GMQU),1:GMQBEG(GMQU))
- +49 SET GMDONE=1
- +50 QUIT
- End DoDot:1
- if (GMQUIT>0)!(GMDONE>0)
- QUIT
- +51 QUIT GMQUIT
- +52 ;
- QUARTDAT ;;Name ^ QuarterStart ^ SemiStart ^ QuarterEnd
- +1 ;;FIRST^1001^0701^1231
- +2 ;;SECOND^0101^1001^0331
- +3 ;;THIRD^0401^0101^0630
- +4 ;;FOURTH^0701^0401^0930
- +5 ;;^
- +6 ;
- YEAR(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** Yearly & Fiscal Yearly
- +1 NEW %DT,GMDONE,GMFY,GMQUIT,GMYEAR,GMYR,X,Y
- +2 SET GMFY=$SELECT(GMWHEN="F":1,1:0)
- +3 SET (GMQUIT,GMDONE)=0
- +4 FOR
- Begin DoDot:1
- +5 WRITE !!,"Enter ",$SELECT(GMFY:"FISCAL ",1:""),"YEAR: "
- +6 SET GMYEAR=$SELECT($PIECE(GMDFLT,U,2)]"":1700+$EXTRACT($PIECE(GMDFLT,U,2),1,3),1:"")
- +7 WRITE $SELECT(GMYEAR]"":GMYEAR_"// ",1:"")
- +8 READ GMYR:DTIME
- if '$TEST
- SET GMYR=U
- +9 IF GMYR=""
- SET GMYR=GMYEAR
- +10 IF (GMYR=U)!(GMYR="")
- SET GMQUIT=1
- QUIT
- +11 IF (GMYR'?2N)&(GMYR'?4N)
- Begin DoDot:2
- +12 DO BELL(GMYR)
- +13 WRITE !!,"Enter a 2 or 4 digit ",$SELECT(GMFY:"fiscal ",1:""),"year"
- +14 QUIT
- End DoDot:2
- QUIT
- +15 KILL %DT
- SET X=GMYR
- DO ^%DT
- SET GMYR=$EXTRACT(Y,1,3)
- +16 IF GMFY
- Begin DoDot:2
- +17 SET GMTBEG=GMYR-1_"1001"
- +18 SET GMTEND=GMYR_"0930"
- +19 QUIT
- End DoDot:2
- +20 IF '$TEST
- Begin DoDot:2
- +21 SET GMTBEG=GMYR_"0101"
- +22 SET GMTEND=GMYR_"1231"
- +23 QUIT
- End DoDot:2
- +24 SET GMDONE=1
- +25 QUIT
- End DoDot:1
- if (GMQUIT>0)!(GMDONE>0)
- QUIT
- +26 QUIT GMQUIT
- +27 ;
- USERSEL(GMWHEN,GMDFLT,GMTBEG,GMTEND) ; *** User Selectable
- +1 NEW %DT,GMBEG,GMEND,GMQUIT,X,Y
- +2 SET GMQUIT=0
- +3 WRITE !!,"Enter beginning and ending dates for the desired time period:",!
- +4 KILL %DT
- +5 SET %DT="AEX"
- +6 SET %DT("A")="Beginning Date: "
- +7 IF $PIECE(GMDFLT,U,2)]""
- SET %DT("B")=$$FMTE^XLFDT($PIECE(GMDFLT,U,2),"5Z")
- +8 DO ^%DT
- SET GMBEG=+$GET(Y)
- +9 IF GMBEG>0
- Begin DoDot:1
- +10 KILL %DT
- +11 SET %DT="AEX"
- +12 SET %DT(0)=GMBEG
- +13 SET %DT("A")="Ending Date: "
- +14 IF $PIECE(GMDFLT,U,3)]""
- IF $PIECE(GMDFLT,U,3)'<GMBEG
- Begin DoDot:2
- +15 SET %DT("B")=$$FMTE^XLFDT($PIECE(GMDFLT,U,3),"5Z")
- +16 QUIT
- End DoDot:2
- +17 IF '$TEST
- Begin DoDot:2
- +18 SET %DT("B")=$$FMTE^XLFDT(GMBEG,"5Z")
- +19 QUIT
- End DoDot:2
- +20 DO ^%DT
- SET GMEND=+$GET(Y)
- +21 IF GMEND>0
- Begin DoDot:2
- +22 SET GMTBEG=GMBEG
- +23 SET GMTEND=GMEND
- +24 QUIT
- End DoDot:2
- +25 IF '$TEST
- Begin DoDot:2
- +26 SET GMQUIT=1
- +27 QUIT
- End DoDot:2
- +28 QUIT
- End DoDot:1
- +29 IF '$TEST
- Begin DoDot:1
- +30 SET GMQUIT=1
- +31 QUIT
- End DoDot:1
- +32 QUIT GMQUIT
- +33 ;
- BELL(X) ; *** Write ?? <Beep>
- +1 IF $EXTRACT(X)'="?"
- WRITE " ??",$CHAR(7)
- +2 QUIT
- +3 ;
- LASTMNTH(GMDATE,GMTBEG,GMTEND) ; *** Compute last month date range
- +1 NEW GMMN,GMYR
- +2 SET GMYR=1700+$EXTRACT(GMDATE,1,3)
- +3 SET GMMN=$EXTRACT(GMDATE,4,5)
- +4 IF (GMMN'<1)&(GMMN'>12)
- Begin DoDot:1
- +5 SET GMMN=GMMN-1
- +6 IF GMMN=0
- SET GMMN=12
- SET GMYR=GMYR-1
- +7 IF $LENGTH(GMMN)=1
- SET GMMN="0"_GMMN
- +8 SET GMTBEG=(GMYR-1700)_GMMN_"01"
- +9 SET GMTEND=$$SCH^XLFDT("1M(1)",GMTBEG)\1
- +10 QUIT
- End DoDot:1
- +11 IF '$TEST
- Begin DoDot:1
- +12 SET (GMTBEG,GMTEND)=""
- +13 QUIT
- End DoDot:1
- +14 QUIT