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

SCDXPRGD.m

Go to the documentation of this file.
  1. SCDXPRGD ;ALB/JRP - DATE UTILITIES FOR ACRP PURGING;04-SEP-97
  1. ;;5.3;Scheduling;**128,1015**;AUG 13, 1993;Build 21
  1. ;
  1. FY4DT(DATE) ;Return fiscal year given date falls within
  1. ;
  1. ;Input : DATE - Date (FileMan) (Defaults to TODAY)
  1. ;Output : YYYY - Fiscal year date falls within (ex: 1997)
  1. ;
  1. ;Check input
  1. S DATE=+$P($G(DATE),".",1)
  1. S:(DATE'?7N) DATE=$$DT^XLFDT()
  1. ;Declare variables
  1. N YEAR,MONTH
  1. ;Pull year from given date
  1. S YEAR=$E(DATE,1,3)
  1. ;Pull month from given date
  1. S MONTH=+$E(DATE,4,5)
  1. ;Fiscal year begins in October (add one to year for Oct, Nov, and Dec)
  1. S:(MONTH>9) YEAR=YEAR+1
  1. ;Convert year to external format
  1. S YEAR=YEAR+1700
  1. ;Done
  1. Q YEAR
  1. ;
  1. PREVFY(DATE) ;Return previous fiscal year from given date
  1. ;
  1. ;Input : DATE - Date (FileMan) (Defaults to TODAY)
  1. ;Output : YYYY - Previous fiscal year from given date (ex: 1996)
  1. ;
  1. ;Check input
  1. S DATE=+$P($G(DATE),".",1)
  1. S:(DATE'?7N) DATE=$$DT^XLFDT()
  1. ;Declare variables
  1. N YEAR
  1. ;Convert date to same date of previous year
  1. S YEAR=+$E(DATE,1,3)
  1. S YEAR=YEAR-1
  1. S DATE=YEAR_$E(DATE,4,7)
  1. ;Return fiscal year for date in last year (done)
  1. Q $$FY4DT(DATE)
  1. ;
  1. DR4FY(FISCAL) ;Return date range for a given fiscal year
  1. ;
  1. ;Input : FISCAL - Year (external) (Default to current year)
  1. ;Ouput : Begin ^ End - Beginning and ending dates (FileMan)
  1. ;
  1. ;Check input
  1. S FISCAL=+$G(FISCAL)
  1. S:(FISCAL'?4N) FISCAL=1700+$E($$DT^XLFDT(),1,3)
  1. ;Declare variables
  1. N BEGIN,END
  1. ;Fiscal year begins in October of previous year
  1. S BEGIN=((FISCAL-1)-1700)_"1001"
  1. ;Fiscal year ends in September of given year
  1. S END=(FISCAL-1700)_"0930"
  1. ;Done
  1. Q (BEGIN_"^"_END)
  1. ;
  1. LASTDBCO(DATE) ;Return last NPCD database close-out from given date
  1. ;
  1. ;Input : DATE - Date (FileMan) (Defaults to TODAY)
  1. ;Output : Date - Date that NPCD was last closed for database credit
  1. ;Notes : If the database close-out date for the input date can not
  1. ; be determined, the first day of the fiscal year will be
  1. ; returned. The same holds true if the database close-out
  1. ; date for a previous month can not be determined.
  1. ;
  1. ;Check input
  1. S DATE=+$P($G(DATE),".",1)
  1. S:(DATE'?7N) DATE=$$DT^XLFDT()
  1. ;Declare variables
  1. N MONTH,YEAR,CLOSEOUT,DBCLOSE,TMP
  1. ;Get current database close-out date
  1. S DBCLOSE=+$$CLOSEOUT^SCDXFU04(DATE)
  1. ;Error - return first day of fiscal year
  1. I (DBCLOSE<0) S YEAR=$$FY4DT(DATE) Q +$$DR4FY(YEAR)
  1. S CLOSEOUT=DBCLOSE
  1. ;Break year & month off of given date
  1. S YEAR=$E(DATE,1,3)
  1. S MONTH=$E(DATE,4,5)
  1. ;Go backwards, one month at a time, from given month
  1. ; Stop when database close-out date is prior to current close-out date
  1. F S MONTH=MONTH-1 D Q:(CLOSEOUT<DBCLOSE)
  1. .;Account for jump from Jan to Dec
  1. .I ('MONTH) S MONTH=12,YEAR=YEAR-1
  1. .;Create FileMan date out of year/month
  1. .S MONTH="00"_MONTH
  1. .S TMP=$L(MONTH)
  1. .S MONTH=$E(MONTH,(TMP-1),TMP)
  1. .S TMP=YEAR_MONTH_"01"
  1. .;Get database close-out date
  1. .S CLOSEOUT=+$$CLOSEOUT^SCDXFU04(TMP)
  1. ;Error - return first day of fiscal year
  1. I (CLOSEOUT<0) S YEAR=$$FY4DT(DATE) Q +$$DR4FY(YEAR)
  1. ;Done
  1. Q CLOSEOUT
  1. ;
  1. PREVMNTH(DATE) ;Return first day of previous month
  1. ;
  1. ;Input : DATE - Month/year to return previous month from (FileMan)
  1. ; Defaults to TODAY
  1. ;Output : Date - First day of previous month (FileMan)
  1. ;
  1. ;Check input
  1. S DATE=+$P($G(DATE),".",1)
  1. S:(DATE'?7N) DATE=$$DT^XLFDT()
  1. ;Declare variables
  1. N MONTH,YEAR,TMP
  1. ;Break year & month off of given date
  1. S YEAR=$E(DATE,1,3)
  1. S MONTH=$E(DATE,4,5)
  1. ;Decrement month by 1
  1. S MONTH=MONTH-1
  1. ;Account for jump from Jan to Dec
  1. I ('MONTH) S MONTH=12,YEAR=YEAR-1
  1. ;Re-build FileMan date
  1. S MONTH="00"_MONTH
  1. S TMP=$L(MONTH)
  1. S MONTH=$E(MONTH,(TMP-1),TMP)
  1. S TMP=YEAR_MONTH_"01"
  1. ; Done - Return first day of previous month
  1. Q TMP
  1. ;
  1. LASTDAY(DATE) ;Return last day of specified month
  1. ;
  1. ;Input : DATE - Month/year to return last day of (FileMan)
  1. ; Defaults to TODAY
  1. ;Output : Date - Last day of month (FileMan)
  1. ;Notes : This call does not return the number of days in the month
  1. ;
  1. ;Check input
  1. S DATE=+$P($G(DATE),".",1)
  1. S:(DATE'?7N) DATE=$$DT^XLFDT()
  1. ;Declare variables
  1. N MONTH,YEAR,TMP
  1. ;Break year & month off of given date
  1. S YEAR=$E(DATE,1,3)
  1. S MONTH=$E(DATE,4,5)
  1. ;Last day of month is day before first day of next month
  1. ; Increment month by 1
  1. S MONTH=MONTH+1
  1. ; Account for jump from Dec to Jan
  1. I (MONTH=13) S MONTH=1,YEAR=YEAR+1
  1. ; Build FileMan date denoting first day of next month
  1. S MONTH="00"_MONTH
  1. S TMP=$L(MONTH)
  1. S MONTH=$E(MONTH,(TMP-1),TMP)
  1. S TMP=YEAR_MONTH_"01"
  1. ; Done - Return day prior to first day of next month
  1. Q $$FMADD^XLFDT(TMP,-1,0,0,0)