Szybki podgląd pliku bazy danych, część trzecia
Ostatnim stopniem wtajemniczenia przy podglÄ…dzie pliku bazy danych opisywanym wczeÅ›niej (… i jeszcze wczeÅ›niej) jest możliwość stworzenia nowej komendy, która posÅ‚uży nam jako uniwersalny sposób na prezentowanie zawartoÅ›ci dowolnego pliku fizycznego (innymi sÅ‚owy pliku bazy danych).
Zdefiniowanie nowej komendy w systemie OS/400 wymaga umiejętności obsługi i edycji tzw. plików źródłowych. Nie wdając się w szczegóły, bo nie tego dotyczy poradnik, należy utworzyć plik, który będzie przechowywał nasze źródła (komendy i programu realizującego jej działanie).
Za pomocą komendy CRTSRCPF, tworzymy pliki przechowujące źródła, podając jako parametry nazwę pliku (konwencja nazewnictwa dla tego typu plików sugeruje nazwę QCMDSRC dla źródła komendy i QCLSRC dla źródła programu) i bibliotekę w której ma być utworzony dany plik.
CRTSRCPF FILE(nazwa biblioteki /QCMDSRC) CRTSRCPF FILE(nazwa biblioteki /QCLSRC)
Edycję źródła komendy rozpoczynamy uruchamiając edytor: STRSEU, podając nazwę utworzonego pliku, biblioteki a także tzw. membra, który nazwiemy w naszym przypadku tak jak docelowo tworzona komenda, czyli: DSPDBF, oraz typu: CMD.
STRSEU SRCFILE(nazwa biblioteki /QCMDSRC) SRCMBR(DSPDBF) TYPE(CMD)
Do pliku źródłowego komendy wprowadzamy poniższy kod.
CMDÂ Â Â Â Â Â Â PROMPT('Display Database File') PARMÂ Â Â Â Â Â KWD(FILE) TYPE(*CHAR) LEN(10) MIN(1) + CHOICE('Name') PROMPT('File') PARMÂ Â Â Â Â Â KWD(LIBRARY) TYPE(*CHAR) LEN(10) RSTD(*NO) + DFT(*LIBL) CHOICE('Name, *LIBL') + PROMPT('Library')
Definiujemy w nim listę parametrów która będzie widoczna po uruchomieniu komendy wraz z ich typem, opisem i wartościami domyślnymi.
Podobnie jak miało to miejsce dla komendy, wprowadzamy źródło programu CL, który będzie realizował nasze zadanie.
STRSEU SRCFILE(nazwa biblioteki/QCLSRC) SRCMBR(DSPDBF) TYPE(CLP)
W programie umieszczamy poznaną już komendę RUNQRY, a jedyna nowość polega na zdefiniowaniu parametrów określających plik i bibliotekę , które to poprzednio określane były przy wywołaniu komendy RUNQRY, a teraz będą przekazywane z nowej komendy DSPDBF.
PGMÂ Â Â Â Â Â Â PARM(&FILENAME &LIBNAME) DCLÂ Â Â Â Â Â Â VAR(&LIBNAME) TYPE(*CHAR) LEN(10) DCLÂ Â Â Â Â Â Â VAR(&FILENAME) TYPE(*CHAR) LEN(10) RUNQRYÂ Â Â Â QRY(*NONE) QRYFILE((&LIBNAME/&FILENAME)) ENDPGM
Pozostaje tylko skompilować zarówno program języka CL jak i komendę. Wykonujemy to za pomocą odpowiednich komend:
CRTCLPGM PGM(nazwa biblioteki/DSPDBF) SRCFILE(nazwa biblioteki/QCLSRC) CRTCMD CMD(nazwa biblioteki/DSPDBF) PGM(nazwa biblioteki/DSPDBF) SRCFILE(nazwa biblioteki/QCMDSRC)
Jeśli kompilacja się udała, w naszej bibliotece zostały otworzone dwa obiekty. Jeden to program w języku CL: DSPDBF, a drugi to komenda DSPDBF (obiekt typu *CMD).
Wywołanie podglądu pliku bazy danych sprowadza się teraz do wpisania nowej komendy i podania parametrów pliku.
DSPDBF FILE(nazwa pliku) LIBRARY(nazwa biblioteki)
Oczywiście nie możemy zapominać o tym, że komenda będzie dostępna tylko jeśli biblioteka w której znajduje się obiekt komendy, będzie umieszczona na naszej liście bibliotek.
W przeciwnym wypadku musimy wywołać komendę za pomocą nazwy kwalifikowanej.
BIBLIOTEKA/DSPDBF FILE(nazwa pliku) LIBRARY(nazwa biblioteki)
Możliwość tworzenia nowych komend w systemie OS/400 to sposób na uproszczenie i zoptymalizowanie wielu wykonywanych czynności, mimo to rzadko wykorzystywana. Zrozumienie istoty działania tego mechanizmu na prostym przykładzie pozwala zastosować go w bardziej zaawansowanych przypadkach.
Zachęcam do eksperymentowania z własnymi komendami!