Aktualności i artykuły

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)
Ekran komendy DSPDBF

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!


            
^