Aztán eszembe jutott, hogy a volt munkahelyemen (a kenyérgyárban) is dosos programmal dolgoztunk amit Clipper-ben írtak kb. 22 évvel ezelőtt. Így muszály volt nekem is megtanulni ezt a rég elfeledett nyelvet ami első látásra igen könnyűnek látszik, ha jobban megnézed akkor azért húzod a szád.
Clipperben olyan, hogy SQL? Ne is álmodjunk róla. Egy csoportváltásos lista így néz ki:
DO WHILE !EOF()Ez azt csinálja, hogy sofőrönként kiírja a rendeléseket, cikkszámra gyűjtve amit persze egy korábbi eljárásban szépen összeadtunk egy új *.dbf fájlba.
SR:=SR+1
IF MSOFOR != SOFOR
@SR, 1 SAY REPLICATE(CHR(205), 130)
@SR+1, 1 SAY " Összesen:"+STR(OSULY, 8,2)+" "+STR(RERTEK, 10, 2)+" "+STR(EERTEK, 10, 2)
SR:=62
STORE 0 TO OSULY, RERTEK, EERTEK
MSOFOR:=SOFOR
ENDIF
IF SR > 60
EJECT
STORE 0 TO SR
LAP:=LAP + 1
DO ROS_FEJ
ENDIF
@SR, 1 SAY CIKKSZAM+" "+MEGNEV+" "+STR(RENDOSSZ, 10, 2)+" "+STR(ELFOGOSSZ, 10, 2)+" "+STR(ELFOGOSSZ - RENDOSSZ, 10, 2)+" "+STR(VISSZOSSZ, 10, 2)+" "+STR(SULYOSSZ, 8, 2)+" "+STR(RENDERTEK, 10, 2)+" "+STR(ELADERTEK, 10, 2)
OSULY:=OSULY + SULYOSSZ
RERTEK:=RERTEK + RENDERTEK
EERTEK:=EERTEK + ELADERTEK
SKIP
ENDDO
Érdekes az adatbeviteli technológiája ennek a programnyelvnek. Míg delphiben rádobunk a formra egy menüt, addig clipperben min 20 sor.
PROCEDURE RENDELESUgye milyen szép. Az adatbevitel is hasonlóan történik:
DECLARE MREND
DECLARE RKEP
DECLARE STATIC7, STATIC6
DECLARE STATIC8
DECLARE STATIC9
@4, 2 CLEAR TO 22, 78
@24,20 CLEAR TO 24, 40
DO WHILE .T.
STORE 1 TO HELP_CODE
DO KERET
DO PRFEJ WITH "RENDELÉSEK FELVITELE, MÓDOSÍTÁSA"
STORE 0 TO MREND
SET COLOR TO &SZIN1
@ 8, 15, 17, 65 BOX B_SINGLE
SET COLOR TO &SZIN5
@10, 20 PROMPT "1 - ELŐZETES RENDELÉSEK FELVITELE "
@11, 20 PROMPT "2 - NAPI RENDELÉSEK KEZELÉSE "
@12, 20 PROMPT "3 - RENDELÉSEK LEKÉRDEZÉSE "
@13, 20 PROMPT "4 - RENDELÉSEK TÖRLÉSE "
@14, 20 PROMPT "5 - RENDELÉSEK BEOLVASÁSA FLOPPYRÓL "
@15, 20 PROMPT "6 - JÁRAT SZERVEZÉS "
MENU TO MREND
IF MREND = 1
KERET()
SAVE SCREEN TO RKEP
RENDFELV()
RESTORE SCREEN FROM RKEP
ELSEIF MREND = 2
keret()
RMOD()
ELSEIF MREND = 3
KERET()
REND_KIIR()
ELSEIF MREND = 4
KERET()
REND_TORL()
ELSEIF MREND = 5
KERET()
REND_BE()
ELSEIF MREND = 6
DO KERET
DO TURASZ
ELSEIF MREND = 0
EXIT
ENDIF
ENDDO
RETURN
PROCEDURE T_ADATBESzóval minden adatbevitelhez legalább egy ilyen eljárást kellett megírni, meg még a szövegeket hozzá. 29.887 programsort írtam meg, ami lefordítva 1 Mbyte.
DO WHILE .T.
@6, 20 GET MTURANEV PICTURE "XXXXXXXXXXXXXXXXXXXX" COLOR SZIN6 VALID !EMPTY(MTURANEV)
@7, 20 GET MSOFOR PICTURE "XXXX" COLOR SZIN6 VALID JOSOFOR(MSOFOR,7,25)
@8, 20 GET MGK PICTURE "!!!-999" COLOR SZIN6 VALID JOGK(MGK)
READ
CLEAR GETS
IF LASTKEY() = 3 .OR. LASTKEY() = 18
LOOP
ENDIF
SET COLOR TO &SZIN1
IF LASTKEY() = 27
TKILEP := .T.
EXIT
ENDIF
DECLARE XM
STORE 0 TO XM
STORE ALERT("Helyes a kitöltés?",{"IGEN", "NEM"}) TO XM
IF LASTKEY() = 27
TKILEP := .T.
EXIT
ENDIF
IF XM = 1
EXIT
ENDIF
ENDDO
RETURN