date days 20100519 7 20100602 12 etc
may week m t w t f ... 19 0 0 1 1 1 20 1 1 1 1 0 21 0 june 21 0 1 1 1
Frank | |
prod: WF 7.6.10 platform Windows, databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7 test: WF 7.6.10 on the same platform and databases,IE7 |
-* dutch1.fex -SET &ECHO='ALL'; SET ASNAMES=ON SET HOLDLIST=PRINTONLY SET HOLDFORMAT=ALPHA -RUN -*-- Set up intput file ---------------------------------------------- FILEDEF MASTER DISK temp/dutch1.mas -RUN -WRITE MASTER FILENAME=DUTCH1, SUFFIX=FIX, $ -WRITE MASTER SEGNAME=DUTCH1, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_DT , USAGE=A8YYMD, ACTUAL=A8, $ -WRITE MASTER FIELDNAME=PROJECT_DAYS, USAGE=I4 , ACTUAL=A4, $ FILEDEF DUTCH1 DISK temp/dutch1.txt -RUN -WRITE DUTCH1 201005190007 -WRITE DUTCH1 201006020012 -WRITE DUTCH1 201006080001 -WRITE DUTCH1 201007120003 -*-- Create Alpha Hold file ------------------------------------------ TABLE FILE DUTCH1 PRINT * ON TABLE HOLD AS HDUTCH1 END -RUN -*-- Create Master for new Alpha file ------------- FILEDEF MASTER DISK temp/hdutch2.mas -RUN -WRITE MASTER FILENAME=HDUTCH2, SUFFIX=FIX, $ -WRITE MASTER SEGNAME=ONE, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_DT , USAGE=A8YYMD, ACTUAL=A8, $ -WRITE MASTER SEGNAME=TWO, PARENT=ONE, OCCURS=VARIABLE, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_FLAG, USAGE=A1 , ACTUAL=A1, $ -RUN -*-- Create new Alpha file ------------- -SET &DUMMYSTRING = - '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'; FILEDEF HDUTCH2 DISK temp/hdutch2.txt -RUN -READ HDUTCH1 NOCLOSE &PROJECT_DT.A8. &PROJECT_DAYS.I4. -REPEAT END_LOOP1 WHILE &IORETURN EQ 0 -* SUBSTR(inlength, parent, start, end, sublength, outfield) -SET &PROJECT_FLAG = SUBSTR(100, &DUMMYSTRING, 1, &PROJECT_DAYS, &PROJECT_DAYS, 'A&PROJECT_DAYS.EVAL'); -SET &OUTDATA = &PROJECT_DT || &PROJECT_FLAG; -WRITE HDUTCH2 NOCLOSE &OUTDATA -READ HDUTCH1 NOCLOSE &PROJECT_DT.A8. &PROJECT_DAYS.I4. -END_LOOP1 -CLOSE HDUTCH2 TABLE FILE HDUTCH2 PRINT PROJECT_DT PROJECT_FLAG END -RUN
-* dutch2.fex -SET &ECHO='ALL'; SET ASNAMES=ON SET HOLDLIST=PRINTONLY SET HOLDFORMAT=ALPHA -RUN -*-- Set up intput file ---------------------------------------------- FILEDEF MASTER DISK temp/dutch1.mas -RUN -WRITE MASTER FILENAME=DUTCH1, SUFFIX=FIX, $ -WRITE MASTER SEGNAME=DUTCH1, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_DT , USAGE=A8YYMD, ACTUAL=A8, $ -WRITE MASTER FIELDNAME=PROJECT_DAYS, USAGE=I4 , ACTUAL=A4, $ FILEDEF DUTCH1 DISK temp/dutch1.txt -RUN -WRITE DUTCH1 201005190007 -WRITE DUTCH1 201006020012 -WRITE DUTCH1 201006080001 -WRITE DUTCH1 201007120003 -*-- Create Alpha Hold file ------------------------------------------ TABLE FILE DUTCH1 PRINT * ON TABLE HOLD AS HDUTCH1 END -RUN -*-- Create Master for new Alpha file ------------- FILEDEF MASTER DISK temp/hdutch2.mas -RUN -WRITE MASTER FILENAME=HDUTCH2, SUFFIX=FIX, $ -WRITE MASTER SEGNAME=ONE, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_DT , USAGE=A8YYMD, ACTUAL=A8, $ -WRITE MASTER SEGNAME=TWO, PARENT=ONE, OCCURS=VARIABLE, SEGTYPE=S0, $ -WRITE MASTER FIELDNAME=PROJECT_FLAG, USAGE=A1 , ACTUAL=A1, $ -RUN -*-- Create new Alpha file ------------- -SET &DUMMYSTRING1 = - '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'; -SET &DUMMYSTRING2 = - '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'; FILEDEF HDUTCH2 DISK temp/hdutch2.txt -RUN -READ HDUTCH1 NOCLOSE &PROJECT_DT.A8. &PROJECT_DAYS.I4. -REPEAT END_LOOP1 WHILE &IORETURN EQ 0 -SET &PROJECT_NODAYS = 100 - &PROJECT_DAYS; -SET &PROJECT_FLAG1 = SUBSTR(100, &DUMMYSTRING1, 1, &PROJECT_DAYS , &PROJECT_DAYS , 'A&PROJECT_DAYS.EVAL'); -SET &PROJECT_FLAG2 = SUBSTR(100, &DUMMYSTRING2, 1, &PROJECT_NODAYS, &PROJECT_NODAYS, 'A&PROJECT_NODAYS.EVAL'); -SET &OUTDATA = &PROJECT_DT || &PROJECT_FLAG1 || &PROJECT_FLAG2; -WRITE HDUTCH2 NOCLOSE &OUTDATA -READ HDUTCH1 NOCLOSE &PROJECT_DT.A8. &PROJECT_DAYS.I4. -END_LOOP1 -CLOSE HDUTCH2 TABLE FILE HDUTCH2 PRINT PROJECT_DT PROJECT_FLAG END -RUNHopefully this helps in creating the calendar format report...
SET ASNAMES = ON SET HOLDLIST = PRINTONLY -* -* First section creates a master and some data to work/test with. APP FILEDEF DUTCHMAS DISK dutch.mas -RUN -* -WRITE DUTCHMAS FILENAME=DUTCH, SUFFIX=FIX, $ -WRITE DUTCHMAS SEGNAME=DUTCH, SEGTYPE=S0, $ -WRITE DUTCHMAS FIELDNAME=PROJECT_START, USAGE=YYMD, ACTUAL=A8, $ -WRITE DUTCHMAS FIELDNAME=PROJECT_DAYS , USAGE=I4 , ACTUAL=A4, $ -* FILEDEF DUTCH DISK dutch.txt -RUN -* -WRITE DUTCH 201005190007 -WRITE DUTCH 201006020012 -WRITE DUTCH 201006080023 -WRITE DUTCH 201007120035 -RUN -* DEFINE FILE DUTCH BEGIN_MONTH/YYM = PROJECT_START ; PROJECT_END/YYMD = PROJECT_START + PROJECT_DAYS ; END_MONTH/YYM = PROJECT_END ; END -* -* Save the project start dates and number of project days to SAVE file. TABLE FILE DUTCH PRINT PROJECT_DAYS BY PROJECT_START ON TABLE SAVE AS PROJSAVE END -* -RUN -SET &NUM_OF_PROJECTS = &LINES ; -* FILEDEF PROJCAL DISK projcal.txt -RUN -* -* Write a calendar of project dates for each project, skipping Saturdays and Sundays. -REPEAT ENDREPEAT1 &NUM_OF_PROJECTS TIMES -READ PROJSAVE &PROJECT_START.8 &PROJECT_DAYS.4 -SET &PROJECT_CNT = &PROJECT_DAYS - 1 ; -IF &PROJECT_CNT LT 0 GOTO ENDREPEAT1 ; -SET &P = 0 ; -SET &ADJUST = 0 ; -* -REPEAT ENDREPEAT2 FOR &I FROM 0 TO &PROJECT_CNT -SET &P = &I + &ADJUST ; -SET &PROJECT_DATE = AYMD(&PROJECT_START,&P,'I8'); -SET &DAY_NAME = DOWK(&PROJECT_DATE,'A3'); -SET &ADJUST = IF &DAY_NAME EQ 'SUN' THEN (&ADJUST + 1) ELSE - IF &DAY_NAME EQ 'SAT' THEN (&ADJUST + 2) ELSE &ADJUST ; -SET &P = &I + &ADJUST ; -SET &PROJECT_DATE = AYMD(&PROJECT_START,&P,'I8'); -WRITE PROJCAL &PROJECT_DATE..1 -ENDREPEAT2 -ENDREPEAT1 -* -* Create a master for the project date calendar generated above. APP FILEDEF PROJMAST DISK projcal.mas -RUN -* -WRITE PROJMAST FILENAME=PROJCAL, SUFFIX=FIX, $ -WRITE PROJMAST SEGNAME=PROJCAL, SEGTYPE=S0, $ -WRITE PROJMAST FIELDNAME=PROJECT_DATE, USAGE=YYMD, ACTUAL=A8, $ -WRITE PROJMAST FIELDNAME=CAL_COUNT , USAGE=I1 , ACTUAL=A1, $ -RUN -* -* Write the minimum and maximum project calendar dates to a SAVE file. TABLE FILE DUTCH SUM MIN.BEGIN_MONTH MAX.END_MONTH ON TABLE SAVE AS MINMAX END -* -* Calculate beginning and ending months for all project calendar dates. -RUN -READ MINMAX &BEGIN_MONTH.6 &END_MONTH.6 -SET &BEGIN_DATE = &BEGIN_MONTH || '01'; -SET &XMONTH = AYM(&END_MONTH,1,'I6'); -SET &XDATE = &XMONTH || '01'; -SET &END_DATE = AYMD(&XDATE,-1,'I8'); -SET &CALDAYS = YMD(&BEGIN_DATE,&END_DATE); -* FILEDEF CALENDAR DISK calendar.txt -RUN -SET &WEEK_NUMBER = 0 ; -* -* Write a calendar of dates from beginning to ending months. -REPEAT ENDREPEAT3 FOR &I FROM 0 TO &CALDAYS -SET &CAL_DATE = AYMD(&BEGIN_DATE,&I,'I8'); -SET &DAY_NAME = DOWK(&CAL_DATE,'A3'); -SET &DAY_NUMBER = DECODE &DAY_NAME ('SUN' 1 'MON' 2 'TUE' 3 'WED' 4 'THU' 5 'FRI' 6 'SAT' 7 ELSE 0 ); -SET &WEEK_NUMBER = IF &DAY_NUMBER EQ 1 THEN (&WEEK_NUMBER + 1) ELSE &WEEK_NUMBER ; -WRITE CALENDAR &CAL_DATE..&DAY_NAME..&DAY_NUMBER..&WEEK_NUMBER -ENDREPEAT3 -* APP FILEDEF CALMAST DISK calendar.mas -RUN -* -* Create a master for the date calendar. -WRITE CALMAST FILENAME=CALENDAR, SUFFIX=FIX, $ -WRITE CALMAST SEGNAME=CALENDAR, SEGTYPE=S0, $ -WRITE CALMAST FIELDNAME=CALENDAR_DATE, USAGE=YYMD, ACTUAL=A8, $ -WRITE CALMAST FIELDNAME=DAY_NAME , USAGE=A3 , ACTUAL=A3, $ -WRITE CALMAST FIELDNAME=DAY_NUMBER , USAGE=I1 , ACTUAL=A1, $ -WRITE CALMAST FIELDNAME=WEEK_NUMBER , USAGE=I2 , ACTUAL=A2, $ -RUN -* -* Combine the date calendar with the project calendar. MATCH FILE CALENDAR PRINT DAY_NAME DAY_NUMBER WEEK_NUMBER BY CALENDAR_DATE AS 'CAL_DATE' RUN FILE PROJCAL SUM CAL_COUNT BY PROJECT_DATE AS 'CAL_DATE' AFTER MATCH HOLD AS PROJHOLD OLD END -* -* Produce the final report. DEFINE FILE PROJHOLD MONTH_NUM/M = CAL_DATE ; MONTH_NAME/MtrYY = CAL_DATE ; CAL_DATEX/A8YYMD = CAL_DATE ; PRINT_TEXT/A8 = EDIT(CAL_DATEX,'$$$$99/99: ') | EDIT(CAL_COUNT); END -* TABLE FILE PROJHOLD SUM PRINT_TEXT BY MONTH_NUM NOPRINT BY MONTH_NAME NOPRINT BY WEEK_NUMBER NOPRINT ACROSS DAY_NUMBER NOPRINT ACROSS DAY_NAME AS '' ON MONTH_NAME SUBHEAD "<MONTH_NAME " END
SET ASNAMES = ON SET HOLDLIST = PRINTONLY -* -* First section creates a master and some data to work/test with. APP FILEDEF DUTCHMAS DISK dutch.mas -RUN -* -WRITE DUTCHMAS FILENAME=DUTCH, SUFFIX=FIX, $ -WRITE DUTCHMAS SEGNAME=DUTCH, SEGTYPE=S0, $ -WRITE DUTCHMAS FIELDNAME=PROJECT_START, USAGE=YYMD, ACTUAL=A8, $ -WRITE DUTCHMAS FIELDNAME=PROJECT_DAYS , USAGE=I4 , ACTUAL=A4, $ -* APP FILEDEF DUTCH DISK dutch.txt -RUN -* -WRITE DUTCH 201005190007 -WRITE DUTCH 201006020012 -WRITE DUTCH 201006080023 -WRITE DUTCH 201007120035 -RUN -* -* Save the project start dates and number of project days to SAVE file. TABLE FILE DUTCH PRINT PROJECT_DAYS BY PROJECT_START ON TABLE SAVE AS PROJSAVE END -* -RUN -SET &NUM_OF_PROJECTS = &LINES ; -* APP FILEDEF PROJCAL DISK projcal.txt -RUN -* -* Write a calendar of project dates for each project, skipping Saturdays and Sundays. -REPEAT ENDREPEAT1 &NUM_OF_PROJECTS TIMES -READ PROJSAVE &PROJECT_START.8 &PROJECT_DAYS.4 -SET &PROJECT_CNT = &PROJECT_DAYS - 1 ; -IF &PROJECT_CNT LT 0 GOTO ENDREPEAT1 ; -SET &P = 0 ; -SET &ADJUST = 0 ; -* -REPEAT ENDREPEAT2 FOR &I FROM 0 TO &PROJECT_CNT -SET &P = &I + &ADJUST ; -SET &PROJECT_DATE = AYMD(&PROJECT_START,&P,'I8'); -SET &DAY_NAME = DOWK(&PROJECT_DATE,'A3'); -SET &ADJUST = IF &DAY_NAME EQ 'SUN' THEN (&ADJUST + 1) ELSE - IF &DAY_NAME EQ 'SAT' THEN (&ADJUST + 2) ELSE &ADJUST ; -SET &P = &I + &ADJUST ; -SET &PROJECT_DATE = AYMD(&PROJECT_START,&P,'I8'); -WRITE PROJCAL &PROJECT_DATE..1 -ENDREPEAT2 -ENDREPEAT1 -* -* Create a master for the project date calendar generated above. APP FILEDEF PROJMAST DISK projcal.mas -RUN -* -WRITE PROJMAST FILENAME=PROJCAL, SUFFIX=FIX, $ -WRITE PROJMAST SEGNAME=PROJCAL, SEGTYPE=S0, $ -WRITE PROJMAST FIELDNAME=PROJECT_DATE, USAGE=YYMD, ACTUAL=A8, $ -WRITE PROJMAST FIELDNAME=PROJ_COUNT , USAGE=I1 , ACTUAL=A1, $ -RUN -* -* Write the minimum and maximum project calendar months to a SAVE file. DEFINE FILE DUTCH BEGIN_MONTH/YYM = PROJECT_START ; PROJECT_END/YYMD = PROJECT_START + PROJECT_DAYS ; END_MONTH/YYM = PROJECT_END ; END -* TABLE FILE DUTCH SUM MIN.BEGIN_MONTH MAX.END_MONTH ON TABLE SAVE AS MINMAX END -* -* Calculate beginning and ending dates for calendar months, and the number of days between the two. -RUN -READ MINMAX &BEGIN_MONTH.6 &END_MONTH.6 -SET &BEGIN_DATE = &BEGIN_MONTH || '01'; -SET &XMONTH = AYM(&END_MONTH,1,'I6'); -SET &XDATE = &XMONTH || '01'; -SET &END_DATE = AYMD(&XDATE,-1,'I8'); -SET &CALDAYS = YMD(&BEGIN_DATE,&END_DATE); -* APP FILEDEF CALENDAR DISK calendar.txt -RUN -* -* Write a calendar of all dates from beginning to ending dates. -REPEAT ENDREPEAT3 FOR &I FROM 0 TO &CALDAYS -SET &CAL_DATE = AYMD(&BEGIN_DATE,&I,'I8'); -SET &DAY_NAME = DOWK(&CAL_DATE,'A3'); -SET &DAY_NUMBER = DECODE &DAY_NAME ('SUN' 1 'MON' 2 'TUE' 3 'WED' 4 'THU' 5 'FRI' 6 'SAT' 7 ELSE 0 ); -SET &WEEK_ADJUST = &DAY_NUMBER - 1 ; -SET &WEEK_DATE = EDIT(AYMD(&CAL_DATE,-&WEEK_ADJUST,'I8'),'$$$$99/99'); -WRITE CALENDAR &CAL_DATE..&DAY_NAME..&DAY_NUMBER..&WEEK_DATE -ENDREPEAT3 -* APP FILEDEF CALMAST DISK calendar.mas -RUN -* -* Create a master for the date calendar. -WRITE CALMAST FILENAME=CALENDAR, SUFFIX=FIX, $ -WRITE CALMAST SEGNAME=CALENDAR, SEGTYPE=S0, $ -WRITE CALMAST FIELDNAME=CALENDAR_DATE, USAGE=YYMD, ACTUAL=A8, $ -WRITE CALMAST FIELDNAME=DAY_NAME , USAGE=A3 , ACTUAL=A3, $ -WRITE CALMAST FIELDNAME=DAY_NUMBER , USAGE=I1 , ACTUAL=A1, $ -WRITE CALMAST FIELDNAME=WEEK_DATE , USAGE=A5 , ACTUAL=A5, $ -RUN -* -* Combine the date calendar with the project calendar. MATCH FILE CALENDAR PRINT DAY_NAME DAY_NUMBER WEEK_DATE BY CALENDAR_DATE AS 'CAL_DATE' RUN FILE PROJCAL SUM PROJ_COUNT BY PROJECT_DATE AS 'CAL_DATE' AFTER MATCH HOLD AS PROJHOLD OLD END -* -* Produce the final report. DEFINE FILE PROJHOLD MONTH_NUM/M = CAL_DATE ; MONTH_NAME/MtrYY = CAL_DATE ; END -* TABLE FILE PROJHOLD SUM PROJ_COUNT BY MONTH_NUM NOPRINT BY MONTH_NAME NOPRINT BY WEEK_DATE AS '' ACROSS DAY_NUMBER NOPRINT ACROSS DAY_NAME AS '' ON MONTH_NAME SUBHEAD "<MONTH_NAME " END
Frank | |
prod: WF 7.6.10 platform Windows, databases: msSQL2000, msSQL2005, RMS, Oracle, Sybase,IE7 test: WF 7.6.10 on the same platform and databases,IE7 |