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.