Subphyla question
Tim Ericson
tericson@denkor.com
Tue, 29 Feb 2000 15:08:20 -0800
Hi,
Valerie Scott wrote:
> How can I avoid needing a parm prompt entry in all 4 passes of
> a report? I am unable to pass the user date range beyond the
> first report.
>
> I am writing a Quiz program that runs 4 passes of data.
> Each pass for data require the same user entered Date range.
> I created a one record subfile(a) to accept the PARM PROMPTED
> date value. On the first report, I use a USE to run the
> subfile(a), prompting for the date.
> The remaining reports access other files and append to a
> separate subfile, which at the end is sorted and reported by
> type of record.
> I don't believe I can link to my 'date' subfile, because the
> data file is driving the reporting.
> Once the date range is captured, is there a way to hold the
> dates, throughout all four passes?
I created a generic date routine a few years ago, and
in each subsequent pass add a 'LINK' to record '0' of
the subfile (on MPE/iX) to use the dates there:
ACCESS whatever &
LINK TO RECORD 0 OF *DATES.SUBFILE
Here's the generic routine:
CANCEL CLEAR
SET DEFAULT
;*************************************************************
;*
;* DATES.SOURCER - 07/01/94 - TTE
;*
;* 10/23/1998 TTE Change DATE-START and DATE-END to YYYYMMDD.
;*
;*************************************************************
DEFINE SYSDATE-CHAR CHARACTER * 8 = ASCII ( SYSDATE )
DEFINE SYSDATE-YEAR ZONED SIZE 4 = NCONVERT ( SYSDATE-CHAR [1:4] )
DEFINE SYSDATE-MONTH ZONED SIZE 2 = NCONVERT ( SYSDATE-CHAR [5:2] )
DEFINE START-PROMPT CHAR*10 = PARM PROMPT &
"Starting Date (MMDDYYYY), Offset Month, or [RETURN] for today: "
EDIT START-PROMPT PATTERN "!0|##<|-#|########|##/##/####"
DEFINE START-DATE ZONED SIZE 8 = &
NCONVERT ( START-PROMPT [5:4] + &
START-PROMPT [1:2] + START-PROMPT [3:2] ) &
IF START-PROMPT [3:6] <> " " AND START-PROMPT [3:1] <> "/" &
ELSE NCONVERT ( START-PROMPT [7:4] + &
START-PROMPT [1:2] + START-PROMPT [4:2] ) &
IF START-PROMPT [3:8] <> " " AND START-PROMPT [3:1] = "/"
DEFINE START-OFFSET ZONED SIZE 2 = NCONVERT ( START-PROMPT [1:2] ) &
IF START-PROMPT [1:2] <> " " AND START-PROMPT [3:8] = " "
DEFINE START-OFFSET-MONTH ZONED SIZE 2 = &
SYSDATE-MONTH + MOD ( START-OFFSET, 12 ) &
IF START-PROMPT [1:2] <> " " AND START-PROMPT [3:8] = " " &
ELSE FLOOR ( START-DATE / 100 ) - &
( FLOOR ( START-DATE / 10000 ) * 100 ) &
IF START-PROMPT <> " " &
ELSE SYSDATE-MONTH
DEFINE START-DAY ZONED SIZE 2 = &
START-DATE - ( FLOOR ( START-DATE / 100 ) * 100 ) &
IF START-PROMPT [3:6] <> " " OR START-PROMPT [3:8] <> " " &
ELSE NCONVERT ( SYSDATE-CHAR [7:2] ) &
IF START-PROMPT = " " &
ELSE 01
DEFINE START-MONTH ZONED SIZE 2 = START-OFFSET-MONTH &
IF START-OFFSET-MONTH >= 1 AND START-OFFSET-MONTH <= 12 &
ELSE START-OFFSET-MONTH - 12 &
IF START-OFFSET-MONTH > 12 &
ELSE START-OFFSET-MONTH + 12
DEFINE START-YEAR ZONED SIZE 4 = &
FLOOR ( START-DATE / 10000 ) &
IF START-PROMPT [3:6] <> " " OR START-PROMPT [3:8] <> " " &
ELSE SYSDATE-YEAR &
IF 1 <= ( SYSDATE-MONTH + START-OFFSET ) AND &
12 >= ( SYSDATE-MONTH + START-OFFSET ) &
ELSE SYSDATE-YEAR + &
FLOOR ( ( SYSDATE-MONTH + START-OFFSET ) / 12 ) &
IF 12 < ( SYSDATE-MONTH + START-OFFSET ) &
ELSE SYSDATE-YEAR - 1
DEFINE DATE-START ZONED SIZE 8 = &
START-DATE &
IF START-PROMPT [3:6] <> " " OR START-PROMPT [3:8] <> " " &
ELSE ( START-YEAR * 10000 ) + ( START-MONTH * 100 ) + 01 &
IF START-PROMPT [1:2] <> " " AND START-PROMPT [3:8] = " " &
ELSE SYSDATE
DEFINE END-PROMPT CHAR*10 = PARM PROMPT &
"Ending Date (MMDDYYYY), Number of Months, or [RETURN] for 1 year: "
EDIT END-PROMPT PATTERN "!0|##<|########|##/##/####"
DEFINE END-DATE ZONED SIZE 8 = &
NCONVERT ( END-PROMPT [5:4] + &
END-PROMPT [1:2] + END-PROMPT [3:2] ) &
IF END-PROMPT [3:6] <> " " AND END-PROMPT [3:1] <> "/" &
ELSE NCONVERT ( END-PROMPT [7:4] + &
END-PROMPT [1:2] + END-PROMPT [4:2] ) &
IF END-PROMPT [3:8] <> " " AND END-PROMPT [3:1] = "/"
DEFINE END-OFFSET ZONED SIZE 2 = NCONVERT ( END-PROMPT [1:2] ) &
IF END-PROMPT [1:2] <> " " AND END-PROMPT [3:8] = " " &
ELSE 12
DEFINE END-OFFSET-MONTH ZONED SIZE 2 = &
START-MONTH + MOD ( END-OFFSET, 12 ) - 1 &
IF START-PROMPT [1:2] <> " " AND START-PROMPT [3:8] = " " &
ELSE START-MONTH + MOD ( END-OFFSET, 12 )
DEFINE END-MONTH ZONED SIZE 2 = END-OFFSET-MONTH &
IF END-OFFSET-MONTH <= 12 &
ELSE END-OFFSET-MONTH - 12
DEFINE END-YEAR ZONED SIZE 4 = START-YEAR &
IF START-MONTH = END-MONTH &
OR END-OFFSET-MONTH <= 12 &
ELSE START-YEAR + FLOOR ( END-OFFSET-MONTH / 12 )
DEFINE END-LASTDAY DATE = LASTDAY &
( ( END-YEAR * 10000 ) + ( END-MONTH * 100 ) + 01 )
DEFINE DATE-END ZONED SIZE 8 = &
END-DATE &
IF END-PROMPT [3:6] <> " " OR END-PROMPT [3:8] <> " " &
ELSE DATE ( DAYS ( DATE-START ) + 366 ) &
IF END-PROMPT = " " &
ELSE ( END-YEAR * 10000 ) + ( END-MONTH * 100 ) + START-DAY &
IF START-PROMPT = " " &
OR START-PROMPT [3:6] <> " " OR START-PROMPT [3:8] <> " " &
ELSE END-LASTDAY
REPORT SUMMARY &
DATE-START &
DATE-END
SET NOSTATISTICS
SET REPORT LIMIT 1
SET SUBFILE NAME DATES.SUBFILE
BUILD DATES.OBJR
I hope this helps!
+-------------------------------------------------------------------+
My mind is my own, as are my ideas and opinions.
My heart, body, and soul, however, all belong to others. Tim.
+-------------------------------------------------------------------+
Tim Ericson tericson DenKor Dental Management Corp.
Sr. Systems Analyst at denkor 503-526-4440 (my direct number)
(& Systems Manager) dot com http://www.denkor.com
Programming HP3000s since 1983! Quality dental care since 1970!
+-------------------------------------------------------------------+
UDCs and Command Files: http://www.denkor.com/hp3000/command_files
+-------------------------------------------------------------------+
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Subscribe: "subscribe powerh-l" in message body to majordomo@lists.swau.edu
Unsubscribe: "unsubscribe powerh-l" in message to majordomo@lists.swau.edu
This list is closed, thus to post to the list, you must be a subscriber.