A jól megszokott karakteres képernyő egyik talán kevésbé ismert "grafikus" lehetősége a jelölőnégyzetek és a rádiógombok használata. A fenti videóban ennek egy lehetséges megvalósítását mutatom be. Meg kell mondjam, ezt tényleg csak mint érdekességet mutatom be, 13 évnyi AS/400-as programozói munkám során még sohasem használtam. Ennek oka az, hogy vannak hátrányai. A legnagyobb az az, hogy a védelme (pl. egy adatmódosításkor) elég nehéz. Itt ugyanis nem lehet használni a jól bevált Protect Field-et (DSPATR(PR)). Az SDA ugyan értelmezi és be is lehet rá állítani, de fordításkor hibát jelez,
"Specified keyword not allowed with SNGCHCFLD, MLTCHCFLD or PSHBTNFLD", azaz a megadott kulcsszó nem megengedett SNGCHCFLD, MLTCHCFLD vagy a PSHBTNFLD használatakor.
Persze lehet trükközni, például rekordokra bontani a rádiógombokat és nem EXFMT-t használni, hanem csak WRITE-ot. De mindenkinek azt javaslom, gondolja meg hogy hol, miért használná.
Most azonban nézzünk kicsit bele a programba. Kiválasztottam a 3. rádiógomb sort, ami a képernyőfájlban így néz ki:
A F1R3 2Y 0B 12 51SNGCHCFLD((*NUMROW 3))
A CHOICE(1 &RB031)
A CHOICE(2 &RB032)
A CHOICE(3 &RB033)
A RB031 10A P
A RB032 10A P
A RB033 10A P
A NUMROW értéke itt 3, ami azt jelenti, hogy a 3 választási lehetőség egymás alatt fog elhelyezkedni. Ha ezt 2-re állítjuk, akkor az első kettő lesz egymás alatt, a harmadik pedig külön, az első mellett.
Az értékek (RB031..RB033) hossza itt most 10 karakter, de ezt módosítani lehet (és kell is), ha hosszabb a kiválasztható érték. Ezeket a változókat a programban töltjük fel értékekkel.
A SNGCHCFLD (single-choice selection field) kulcsszó mondja meg a programnak, hogy csak egyetlen választás lehetséges.
Az F1R3 változó értéke lesz a kiválasztás eredménye. Ha ez 1, akkor az elsőt választották, míg ha 2, akkor a másodikat, és 3, ha a harmadikat.
A programban másik használt kulcsszó a MLTCHCFLD (Multiple-Choice Selection Field), ahol több értéket is ki lehet választani. Most azonban csak az első választási lehetőséget mutatom be, a többi értelemszerűen hasonló módon működik - csak a számozás emelkedik.
A CHOICE(1 &CB01)
A CHCCTL(1 &CB01CHC)
A CB15CHC 1Y 0H
A CB01 10A P
Itt a CB01 (10 karakter hosszú) változó lesz a megjelenített érték, míg az eredményt, az esetleges kiválasztást a CB01CHC tartalmazza.
A program kódja itt, a képernyő forráskódjai itt található.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.