Look
into the date API's. You should be able to take Jan 1 of any year and find
the day, (Sun-Sat), as well as test for valid dates, e.g.
02/30/##.
Regards, Jon A. Erickson Sr. Programmer
Analyst 800.COM Inc. 1516 NW Thurman St Portland, OR 97209-2517 Direct:
503.944.3613 Fax: 503.944.3690
Web: http://800.com
Dear Alistair,
Could you help me with the
following:-
How do i design and write a print program in RPG400 to produce a
single page calendar, as in the example below. It should be able to accept any
year between 1900 and 2099, passed as a four-character parameter via a data
area.
NB.
- Leap years may be calculated by dividing the year by four. With the
exception of years ending in 00, unless it is divisible by 400. Eg 2000 is a
leap year is not
- the 1st of January 1990 was a Monday
- The range of years tested will be within 1900 to 2099.
- Jan, Mar, May, July, Aug, Oct ,Dec have 31 days
Calendar 97
January
February
March April
M T W T F S
S M T W T F S
S M T W T F S
S M T W T F S S
01 02 03 04 05
etc.
I would be grateful for any help
Thanks
----- Original Message -----
Sent: Wednesday, January 24, 2001 1:21
PM
Subject: RE: RPG IV Performance
And another thing. I can show you a pointer based
trigger program in ILE which only takes a few lines. Try doing that with RPG
III.
F* FILE
SPECIFICATIONS
F*****************************************************************
F* Inventory Transaction Image
file
FINVL9101 IF
E K
DISK
F* Inventory Transaction header
ile
FETSP960J O A
E K
DISK
F*
F/EJECT
D*****************************************************************
D* Data
structures
D*****************************************************************
D
ptr
s
*
D
arr
s
1 dim(32767)
based(ptr)
D
Parm1
ds
32767
D
FileName
1
10
D
FileLibr
11 20
D
FileMbr
21
30 D
TrEvent
31
31 D
TrTime
32
32 D
CommLck
33
33 D
Reserve
34
36 D
CCSID
37 40B 0 D
Reserve2
41
48 D
OffsOld
49 52B 0 D
LenOld
53 56B 0 D
OnOff
57 60B 0 D
OnLen
61 64B 0 D
newoff
65 68B 0 D
LenNew
69 72B 0 D
NNoff
73 76B 0 D
NNLen
77 80B 0 D
parm2
ds
D
plen
9b 0
* - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - D
newptr
s
*
D newrec e
ds
extname(invp960j) based(newptr) * - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- C
*entry
plist
C
parm
parm1
C
parm
parm2
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
C
eval ptr =
%addr(parm1)
C
eval newptr = %addr(arr(newoff +
1))
C
VendrJ
IfEq 'SKB
'
C
WRNUMJ
Chain
INV910I
55
C
move
INNO@I
REFNOJ
C
Write
ETS960J
C
Endif
C
return
****************** End of data
****************************************
Sounds like they know not what they
do.
Alistair
Lisa, et al,
In a message dated 1/19/01 8:15:37 AM Eastern
Standard Time, Lisa.Abney@universalflavors.com writes:
Hi all! I've just heard some rather negative
performance things on RPG IV, and wonder if anyone can give me
some feedback on how true this might be.
We're working with a
consulting company who is doing some performance analysis on
some of our programs. They seem very knowledgeable, and I have a
lot of confidence in what they've done up until now. However,
today they were showing us a mock-up of a trigger program they
want to use. As they explained it, this trigger program
will be constantly running in the background for every user on
the system to monitor changes to two files, and will feed data to a
dataque. The program they showed me was written in RPGIII, and I
made my usual request to an outside contractor that this be done in
RPGIV. His response was "Sure, if you want the program
size to be 5 - 10 times the size of an RPGIII program." When I asked
him to explain that, he only said that, in his experience, this is
always true, and that it would have a very negative performance.
I even mentioned removing observability (not that I really
understand what that means, but I just read something the other
day about that being a way to reduce program size!), and he said
that might move it down to 3 - 5 times the size of an equivalent
RPGIII program. The program will only be about 50 - 100 lines of
code.
Can someone explain if this is true, and, if so, why?
And, if true, what does this really mean from a
performance standpoint?
To reiterate some points
already made, and to highlight some that weren't. Program size
has absolutely no impact on it's performance. I could write an
absolutely enormous program in RPG III that, given a single
unexecutable IF statement skipping 98% of the logic, would still
perform quite well. However, comparing apples to apples, RPG IV
will almost always be larger given the same functionality. This
is a case where size doesn't matter.
Now to the unmentioned!
Unless you're running SETOBJACC against it, a trigger program is
_NOT_ constantly running in the background. It is invoked as
part of whatever job "triggers" it by performing the proscribed change
action against the relative file. Unless the only thing that
every single one of your users is doing is constantly updating one or
both of these two files at the same time, the trigger is not running
at all times. The trigger also does _NOT_ write to a data queue
unless that's how you wrote it.
It sounds to _ME_, with the
information given, that one of two things is happening here:
1. Simon and Mr. Peabody have stepped into the "Wayback"
machine and we're rehashing ILE performance on CISC in the days when
there weren't many RISC machines on the market (see the archives from
three or so years ago). There was no performance advantage
indeed, a degradation, of ILE on CISC.
2. These
"consultants" do not understand true UDB/400 triggers, and have
written some sort of "NEP" solution involving read waits and data
queues instead of utilizing the native "TRG" commands.
The
more I think about it, the more the latter seems to be the case. I
suppose that the "acid test" would be to ask your consultants which
AS/400 command adds a trigger to a file, and which removes it.
During add, what is the significance of the ALWRPTCHG parameter?
Finally, I don't know what we're talking about in terms of "lines
of code", but I have yet to write a trigger that required more than 20
"C" specs. If you need more than that, you either need to
normalize your database or reconsider why you're using triggers...
JMHO,
Dean Asmussen Enterprise Systems Consulting,
Inc. Fuquay-Varina, NC USA E-mail: DAsmussen@aol.com
"Without a struggle, there can be no progress." -- Frederick
Douglass
|