U»ytkowanie i programowanie systemu AS/400 J¦zyk RPG IV

Transkrypt

U»ytkowanie i programowanie systemu AS/400 J¦zyk RPG IV
Politechnika ‘l¡ska, Gliwice
Instytut Informatyki
U»ytkowanie i programowanie systemu
AS/400
J¦zyk RPG IV
15 pa¹dziernika 2003
1
1
Wprowadzenie
Przez wiele lat j¦zyk programowania RPG rozwin¡ª si¦ od narz¦dzia generuj¡cego
raporty do w peªni funkcjonalnego j¦zyka programowania. W wersji trzeciej systemu
OS /400 IBM wprowadziª now¡ wersj¦ RPG nazwanego RPG ILE dla AS /400. Wersja
ta byªa najbardziej znacz¡c¡ modykacj¡ oryginalnego j¦zyka.
Konwencja nazewnicza wersji j¦zyka RPG mo»e cz¦sto wprowadza¢ w zakªopotanie.
Terminy RPG ILE i RPG IV cz¦sto s¡ u»yte na przemian i w prawdzie s¡ one tym
samym produktem. Jednak»e, jest ró»nica mi¦dzy terminem RPG IV i ILE RPG.
Nazwa RPG IV oznacza kolejn¡ wersj¦ j¦zyka w stosunku do RPG III, natomiast
ILE RPG okre±la, »e j¦zyk ten jest zgodny z modelem ILE (Integrated Language
Environment).
ILE jest zbiorem funkcjonalno±ci, który wyst¦puje w wielu j¦zykach programowania
(C, C++, CL, Cobol) na platformie AS /400. Dostarcza mo»liwo±¢ tworzenia pojedynczego programu u»ywaj¡c wielu j¦zyków programowania. Dlatego, RPG IV jest
zgodny z modelem ILE.
Odkªadaj¡c na bok funkcjonalno±¢ ILE, RPG IV ma znaczn¡ liczb¦ ulepsze« w
stosunku do RPG III:
• Dªu»sze pola nazw
• Wsparcie dla zmiennych typu data i czasu
• Dodatkowe typy danych ( liczby zmienno przecinkowe, Boole'a, wska¹niki)
• Wyra»enia typu Free-format
• Funkcje wbudowane (BIF - Built In Functions)
• Procedury
2
Porównanie ILE i OPM
RPG przed wersj¡ RPG IV ILE u»ywa oryginalnego modelu programu (OPM - Original Model Program). Odpowiednik OPM jest ILE. OPM charakteryzuje si¦ tym, »e z
jednej jednostki kompilacji (zbiór pliku z ¹ródªami) tworzony jest jeden wykonywalny
program.
W przypadku modelu ILE proces tworzenia programu jest dwufazowy. Z danych
jednostek kompilacji tworzone s¡ obiekty typu moduª. Moduªy zwieraj¡ kod maszynowy, ale nie mog¡ by¢ bezpo±rednio wykonywane. Aby stworzy¢ program wykonywalny nale»y jeden lub wi¦cej moduªów powi¡za¢ wykorzystuj¡c polecenie systemowe
CRTPGM. Gªówn¡ zalet¡ ILE jest to, »e moduªy utworzone przy wykorzystaniu ró»nych j¦zyków programowania mog¡ zosta¢ powi¡zane w jeden program.
2
3
Wyra»enia typu Free-format
Wprowadzono wiele nowych instrukcji do j¦zyka RPG IV pozwalaj¡cych wykorzysta¢
poszerzone pole drugiego argumentu operacji. Poszerzone pole drugiego argumentu
pozwala na wprowadzanie wyra»e« i wykorzystanie mo»liwo±¢ funkcji wbudowanych
(BIF).
Wszystkie instrukcje RPG III, które zawieraj¡ operacje porównania (np.: IFEQ,
DOWLT) mog¡ zosta¢ zapisane w ROG IV u»ywaj¡c roszeroznego pola drugiego
argumentu. Na przykªad:
C
C
C
*in99
A
ifeq
andne
...
*off
C
Mo»e zosta¢ zapisane w RPG IV
C
C
if
...
*in99 = *off and A <> C
Oba powy»sze instrukcje opisuj¡ ten sam przebieg sterowania, podczas gdy wykorzystanie rozszerzonego pola drugiego argumentu mo»e by¢ znacznie czytelniejsze,
zwªaszcza przy skomplikowanych wyra»eniach. Wyra»enia obj¦te w nawiasy zawsze
wykonywane s¡ pierwsze.
C
C
if
...
*in99 = *off and (a + b = c)
Poni»sze instrukcje wykorzystuj¡ rozszerzone pole drugiego argumentu:
RPG IV
IF
DOW
DOU
WHEN
EVAL
EVALR
FOR
RPG III
IFxx
DOWxx
DOUxx
WHxx
brak
brak
brak
3
4
Instrukcja EVAL/EVALR
Instrukcja EVAL pozwala na przypisanie warto±ci zmiennej wykorzystuj¡c wyra»enia.
C
C
C
eval
eval
eval
x = y + 10
napis = "Hello Word"
Z = (X / Y) * 3.14159
Instrukcja mo»e by¢ u»ywana na dowolnego typu zmiennych, jednak»e prawa i
lewa strona przypisania musz¡ by¢ tego samego typu. Instrukcja EVAL zawiera funkcjonalno±¢ nast¦puj¡cych instrukcji j¦zyka RPG III: Z-ADD, MOVE, ADD, SUB,
MULT, DIV.
5
Deklaracja zmiennych
Specykacja D pozwala na deklaracje zmiennych. W RPG IV poza zmiennymi typu zankowego i numerycznego staªoprzecinkowego istnieje typ zmiennoprzecinkowy
(FLOAT DOUBLE) oraz typy reprezentuj¡ce czas, date oraz stempel czasowy. Sªowo
kluczowe INZ mo»e posªu»y¢ do inicjalizacji zmiennych.
* zmienna
d napis
* zmienna
d alfa
* zmienna
d data
* zmienna
d czas
* zmienna
d stemp
* zmienna
d beta
* zmienna
d gama
6
znakowa
s
20
inz('Hello World')
numeryczna (staªoprzecinkowa)
s
6 0 inz(256)
reprezentuj¡ca date
s
D
inz(d'2000-01-01')
reprezentuj¡ca czas
s
T
inz(t'23:59:59')
reprezentuj¡ca stempel czasowy
s
Z
inz(*sys)
zmiennoprzecinkowa typu FLOAT
s
4F
zmiennoprzecinkowa typu DOUBLE
s
8F
Funkcje wbudowane BIF
Funkcje wbudowane s¡ to funkcje napisane przez IBM'a dostarczane z j¦zykiem RPG
IV. Mog¡ zosta¢ u»yte w wyra»eniach. Nazwa wszystkich funkcji wbudowanych jest
poprzedzona znakiem % ,wi¦kszo±¢ z nich pobiera parametry. Kompletn¡ list¦ funkcji
wbudowanych mo»na znale¹¢ w dokumentacji j¦zyka RPG IV.
Przykªad:
C
* index = 3
eval
index = %int(%abs(-3.14))
4
Szczególnie wa»n¡ role odgrywaj¡ funkcje wbudowane zwi¡zane z operacjami wej±cia wyj±cia, pozwalaj¡ na eliminacj¦ potrzeby u»ywania indykatorów.
• %Eof - zwraca warto±¢ *ON, gdy wyst¡pi koniec pliku, u»ywana w kooperacji
z instrukcjami: READ, READE
• %Found - zwraca warto±¢ *ON, gdy ostatnia operacja na pliku odnalazªa rekor-
dy, u»ywana w kooperacji z instrukcjami: CHAIN, SETLL, SETGT
C
C
C
KLUCZ
C
C
C
KLUCZ
7
CHAIN
IF
DOW
...
READE
ENDDO
ENDIF
PLIK
%FOUND
NOT %EOF
PLIK
Procedury
7.1 Denicja procedury
Denicja wszystkich procedur musi si¦ rozpocz¡¢ i zako«czy¢ specykacj¡ P.
PName+++++++++++..T...................Keywords
P FUN
B
.
.
P FUN
E
7.2 Interfejs procedury
Wszystkie procedury musz¡ mie¢ zdeniowany interfejs. Okre±la on wszystkie parametry jakie musz¡ zosta¢ przekazane do procedury, oraz deniuje typ zwracanej
warto±ci.
P
D
D
D
FUN
FUN
ARG1
ARG2
B
PI
3 0
20
6 0
* Procedura FUN zwraca warto±¢ typu numerycznego (3 0)
* pobiera ARG1 typu znakowego (20) i ARG2 typu numerycznego (6 0)
P FUN
E
5
7.3 Wywoªanie procedury
Aby móc wywoªa¢ z procedure nale»y zdeklarowa¢ jej prototyp. Procedury mog¡
zosta¢ wywoªane w wyra»eniach w analogiczny sposób jak funkcje wbudowane lub
wykorzystuj¡c instrukcj¦ CALLP. Parametry s¡ przekazywane do procedury przez
referencje.
* deklaracja prototypu procedury
D FUN
PR
9 0
D ARG1
20 0
D ARG2
9 0
* wywoªanie procedury w wyra»eniu
C
eval
A = FUN( NAPIS : ALFA )
* wywoªanie procedury instrukcj¡ CALLP
* tracona jest warto±¢ zwracana
C
callp
FUN( NAPIS : ALFA )
7.4 Przykªad programu wykorzystuj¡cego procedury
* deklaracja prototypu procedury
D FUN
PR
9 0
D ARG1
9 0
D ARG2
9 0
* deklaracja zmiennych globalnych
D ALFA
9 0 inz(32)
D BETA
9 0 inz(32)
D GAMA
9 0
C
C
* program
eval
eval
* definicja procedury
P FUN2
B
* interfejs procedury
D FUN
PI
D ARG1
D ARG2
* zmienne lokalne
D wynik
S
*obliczenia
C
eval
C
return
P FUN2
E
GAMA = FUN( ALFA : BETA )
*inlr = *on
9 0
9 0
9 0
9 0
wynik = Arg1 + Arg2
wynik
6

Podobne dokumenty