
HOLD_BUF:
RECORD
CASE
INTEGER
OF
0
:
(SINGLE_INT
:
ARRAY
[1..2]
OF
SMALLINT);
1
:
(DOUBLE_INT
:
INTEGER);
END;
PROCEDURE
FMTCALENDAR;
INTRINSIC;
(*------------------------------------------------------- -*)
(*
THERE
ARE
TWO
DATES
IN
THE
DATA
BASE
TO
BE
FORMATTED.
*)
(*
ONE
IS
IN
THE
ORDER-D
DATA
SET,
THE
OTHER
IS
IN
THE
*)
(*
SHIP-D
DATA
SET.
BECAUSE
THE
SETS
HAVE
BEEN
JOINED,
*)
(*
IT
IS
POSSIBLE
TO
GET
BOTH
DATES
AND
FORMAT
THEM.
*)
(*
NOTE:
IT
IS
THE
APPLICATION'S
RESPONSIBILITY
TO
KNOW
*)
(*
WHERE
IN
THE
DATA
BUFFER
THE
VALUE
IS
LOCATED.
*)
(*------------------------------------------------------- -*)
(*------------------------------------------------------- -*)
(*
THE
DATE
IS
IN
A
TWO
WORD
INTEGER
AND
NEEDS
TO
BE
RE-
*)
(*
FORMATTED
BEFORE
PASSING
TO
FMTCALENDAR.
*)
(*------------------------------------------------------- -*)
(*------------------------------------------------------- -*)
(*
IF
CALL_NUM
IS
ONE
THEN
WE
CAN
ASSUME
THE
ENTRY
IS
*)
(*
FROM
THE
ORDER-D
DATA
SET,
SINCE
IT
IS
THE
FIRST
DATA
*)
(*
SET
MENTIONED
IN
THE
JOIN
COMMAND.
IF
CALL_NUM
IS
NOT
*)
(*
ONE
THEN
WE
CAN
ASSUME
THAT
THE
PROCEDURE
HAS
BEEN
*)
(*
CALLED
AGAIN,
AND
WE
NOW
HAVE
THE
ENTRY
FROM
THE
*)
(*
SHIP-D
DATA
SET.
*)
(*------------------------------------------------------- -*)
BEGIN
IF
CALL_NUM
=1
THEN
(*
FIRST
DATE
*)
BEGIN
HOLD_BUF.SINGLE_INT[1]
:=
DBBUF.DBBUF_INT[4];
HOLD_BUF.SINGLE_INT[2]
:=
DBBUF.DBBUF_INT[5];
END
ELSE
(*
SECOND
DATE
*)
BEGIN
HOLD_BUF.SINGLE_INT[1]
:=
DBBUF.DBBUF_INT[6];
HOLD_BUF.SINGLE_INT[2]
:=
DBBUF.DBBUF_INT[7];
END;
YEAR.D_YEAR
:=
HOLD_BUF.DOUBLE_INT
DIV
1000;
(*
ISOLATE
YEAR
*)
HOLD
:=
YEAR.D_YEAR
*
1000;
DAY.D_DAY
:=
HOLD_BUF.DOUBLE_INT
-
HOLD;
JDATE.DAY_YR.DAY
:=
DAY.DAY[2];
(*
DAY
IN
BITS
0-6
*)
JDATE.DAY_YR.YEAR
:=
YEAR.YEAR[2];
(*
YEAR
IN
BITS
7-15
*)
FMTCALENDAR
(JDATE.DATE,
FMTDATE);
(*------------------------------------------------------- -*)
(*
PUT
THE
FORMATTED
DATE
INTO
THE
OUTPUT
BUFFER
USED
BY
*)
(*
QUERY
FOR
THE
REPORT
OUTPUT
LINE.
AGAIN,
CALL_NUM
IS
*)
(*
USED
TO
DETERMINE
WHERE
IN
THE
OUTPUT
BUFFER
TO
PLACE
*)
(*
THE
VALUE.
ALSO,
IF
CALL_NUM
IS
ONE
THEN
WE
NEED
TO
*)
(*
SET
THE
DATA
BASE
NAME,
THE
DATA
SET
NAME,
AND
THE
*)
(*
CALLAGAIN
PARAMETERS
IN
ORDER
TO
GET
THE
ENTRY
FROM
*)
(*
THE
SHIP-D
DATA
SET
TO
FORMAT
THE
SHIPPING
DATE.
*)
(*------------------------------------------------------- -*)
IF
CALL_NUM
=
1
THEN
(*
ORDER-D
DATA
SET
*)
BEGIN
M
:=
1;
FOR
N
:=
19
TO
35
DO
BEGIN
LINEBUF.BLINEBUF[N]
:=
FMTDATE
[M];
M
:=
M
+
1;
END;
F-12
USER-DEFINED
PROCEDURES
Summary of Contents for QUERY
Page 10: ......
Page 17: ...Figure 1 1 ORDERS Data Base Structure Figure 1 2 Sample Entry Values INTRODUCING QUERY V 1 7 ...
Page 20: ...Figure 1 3 IMAGE QUERY Environments 1 10 INTRODUCING QUERY V ...
Page 36: ......
Page 165: ...REPORT G1 GROUP TITLE 11 END QUERY V COMMANDS 3 129 ...
Page 199: ...XEQ TF TOTAL DUE 9 SPACE B2 SKIP A TF R0 70 E2 S PURCH DATE END QUERY V COMMANDS 3 163 ...
Page 200: ......
Page 244: ......
Page 278: ......
Page 279: ...G ASCII CHARACTER SET This appendix is not available in this edition ASCII CHARACTER SET G 1 ...
Page 280: ......