Aktualności i artykuły

Opublikowano: 14 listopada 2012
Kategoria wpisu: poradnikiprogramowanie

ILE RPG – parametry kompilacji i dyrektywy kompilatora

Parametry kompilacji ILE RPGOdpowiednie wykorzystanie mechanizmów kompilatora oraz parametrów kompilacji może znacznie uÅ‚atwić tworzenie kodu programu i peÅ‚nić znaczÄ…cÄ… rolÄ™ w „utrzymywaniu” dobrze napisanego kodu, szczególnie tego stworzonego w ILE RPG.

Parametry kompilacji

Zacznijmy od kompilacji i parametru najważniejszego z „developerskiego” punktu widzenia.

Parametr „Debugging View” :

  • *SOURCE – brak fragmentów kodu wstawianych za pomocÄ… dyrektywy /COPY, brak zmiennych watch, operacja wejÅ›cia/wyjÅ›cia powoduje zatrzymanie na definicji pliku
  • *COPY – tak samo jak *SOURCE lecz bloki kodu wstawione za pomoca /COPY sÄ… widoczne
  • *LIST – wszystkie ograniczenia z *SOURCE znikajÄ… (copysource’y sÄ… widoczne, można definiować zmienne do „Å›ledzenia”, operacja I/O nie zatrzymuje procesu)
  • *ALL – podobnie jak dla *LIST ale w zależnoÅ›ci od innego parametru – Compiler option (OPTION)
  • *NONE – wykorzystywana do tworzenia wersji „produkcyjnych” – żadne widoki nie sÄ… doÅ‚Ä…czane do kompilowanego obiektu;

Wnioski praktyczne:

  • dobrÄ… metodÄ… na zapobieżenie zatrzymywania siÄ™ na operacjach wejÅ›cia/wyjÅ›cia jest zdefiniowanie parametru *NODEBUGIO w sekcji H źródÅ‚a programu;
  • równie dobrÄ… praktykÄ… jest ustawienie parametru *SRCSTMT, co pozwala na numerowanie linii programu w widoku debuger’a tak samo jak w źródÅ‚ach programu; innymi sÅ‚owy zapobiega przenumerowaniu linii przez debuger.

Konkluzja jest następująca: domyślne parametry kompilacji w przypadku prac developerskich powinny być ustawiane na *LIST lub *ALL (w przypadku parametru Debugging View), ale należy pamiętać że parametry wprowadzone w źródle programu w sekcji H będą miały zawsze pierwszeństwo przed tymi podawanymi podczas kompilacji.

Dyrektywy kompilatora

Jak sama nazwa wskazuje dyrektywy kompilatora to instrukcje wykonywane podczas kompilacji źródła programu. Te najbardziej znane to /COPY oraz /INCLUDE, ale poza nimi istnieje cały szereg innych nie mniej pomocnych.

Przykładowe źródło programu z wprowadzonymi dyrektywami kompilacji mogłoby wyglądać następująco:

H Debug DatEdit(*MDY/)
H Option(*SrcStmt:*NoDebugIO)

 /If Defined(*CRTBNDRPG)
H DftActGrp(*No) ActGrp('NEWGRP') BndDir('NEWBNDDIR')
 /EndIf

Dyrektywa /IF DEFINED(*CRTBNDRPG) pozwala na rozpoznanie czy źródło programu będzie skompilowane za pomocą komendy Create Bound RPG program (CRTBNDRPG). *CRTBNDRPG jest nazwą predefiniowaną. Jeśli do kompilacji zostanie użyta komenda CRTBNDRPG to można podać kolejne parametry kompilacji związane z ta komendą, a więc: grupy aktywacji oraz tzw. binding directory (katalogi wykorzystywane do określenia modułów oraz tzw. programów serwisowych które należy dołączyć do skompilowanego obiektu). W przypadku kompilacji za pomocą komendy CRTRPGMOD parametry te byłyby błędne.

Wykorzystując powyższe mechanizmy możemy stworzyć szablony z definicjami dla kompilatora, które w zależności od wykonywanej kompilacji odpowiednio przygotują nasze obiekty. Niewątpliwie pozwala to uprościć i w pewien sposób zautomatyzować proces przygotowania obiektów składających się na nasze aplikacje.

^