Έρχεται η στιγμή, ας πούμε μετά από τριάντα πέντε
έτη εργασίας, να αδειάσεις το υπηρεσιακό σου γραφείο από τα προσωπικά σου
αντικείμενα. Το πράττεις. Το μόνο σίγουρο, στην περίπτωση αυτή, ότι και θα
βρεις και θα θυμηθείς. Μου συνέβη.
Βρήκα! Τρία πλαστικά
ντοσιέ και τέσσερα χαρτιών σετ. Συνολικό πλήθος σελίδων: 304. Περιεχόμενο;
Προγράμματα! Προγράμματα σε Clipper για
εφαρμογές που, στα τέλη της δεκαετίας του 80 αρχές αυτής του 90, είχα φτιάξει
για την υπηρεσία.
Προγράμματα με ονόματα όπως: C_PASS.PRG, EPP.PRG,
EP_ETOYS.PRG, FUNCTION ANTIL (FRASH, ARADA, X_NUM), FUNCTION BALE() και άλλα τέτοια πολλά. Θυμήθηκα!
Ας το πιάσουμε από την αρχή. Καταφεύγω στο,
ψηφιοποιημένο, χειρόγραφο ημερολόγιο μου. Ψάχνω τη λέξη «υπολογιστή». Πέρα από
αυτόν που χρησιμοποίησα, στο ΕΜΠ, για την Διπλωματική μου εργασία, το 1979,
βρίσκω το απόσπασμα που ακολουθεί:
.
. . Σήμερα μάλιστα άρχισα να ασχολούμαι ενεργά με έναν PC υπολογιστή που διαθέτει ο ΑΗΣ (πακέτο dbase III plus κ.λ.π.).
Τότε, λοιπόν, ξεκίνησαν όλα. Θυμάμαι πόσο αγάπησα
την συγκεκριμένη ενασχόληση. Τα απογεύματα που, αμισθί, παρέμενα στο γραφείο
για να διαβάσω και να μάθω το άγιο DOS. Τότε που για να χρησιμοποιήσεις τον Η/Υ έπρεπε να
πληκτρολογείς υπαρκτές εντολές και όχι να κουνάς ένα ποντίκι και όπου σε
βγάλει.
Θυμάμαι και μία περίπτωση που, βραδάκι, μπήκε στο
γραφείο που διάβαζα μία νυχτερίδα! Είδα και έπαθα μέχρι να καταφέρω να την βγάλω σώα έξω από το γραφείο.
Ασχολήθηκα, λοιπόν και κυρίως, με την dBase III Plus η οποία δεν ήταν παρά
ένα σύστημα διαχείρισης βάσεων δεδομένων για τα, τότε, λειτουργικά συστήματα CP/M και DOS. Αγόρασα, μάλιστα, και το βιβλίο: «Εισαγωγή και Προγραμματισμός με την dBASE» του Κ. Καραΐσκου, έκδοση «Α. Παπασωτηρίου», στις
27/11/87 (αμ’ έπος αμ’ έργον) με κόστος 4,69 €. Ένα βιβλίο το οποίο, προφανώς,
με βοήθησε και από την άλλη με εξόργισε με τα αισχρά Ελληνικά του! Το ωραίο
είναι ότι, για την συγκεκριμένη έκδοση, υπήρχε και «επιμελητής»! Ατυχώς το
βιβλίο αυτό δεν υπάρχει, πλέον, στην βιβλιοθήκη μου. Ας όψεται το «Project Δήμητρα»!
Το ένα φέρνει το άλλο. Από την dBase III Plus πέρασα στο Clipper της Nantucket. To Clipper ήταν μία γλώσσα προγραμματισμού που επέτρεπε την
κατασκευή εφαρμογών διαχείρισης βάσεων δεδομένων που «έτρεχαν» σε περιβάλλον DOS. Σε Clipper,
λοιπόν, είναι τα προγράμματα εκτυπώσεις των οποίων βρήκα αδειάζοντας, πώς να το
πω;, το γραφείο μου.
Το αγάπησα το Clipper! Ξόδεψα δεκάδες ώρες μελετώντας το. Άρχισα, έτσι, να
προγραμματίζω. Θυμάμαι ότι έγραφα τα προγράμματα μου στο σπίτι, στο οποίο δεν
είχα, Η/Υ και είχα την αγωνία να πάω στο γραφείο να τα «τρέξω» και να δω αν και
πώς λειτουργούν. Με μεθούσε ο προγραμματισμός! Μου έδινε υψηλή πνευματική
απόλαυση. Το να ξεπερνάω προβλήματα, να εφευρίσκω λύσεις, να εμπλουτίζω τις
εφαρμογές με νέες δυνατότητες ήταν το καλύτερό μου!
Δουλεύαμε με δισκέτες τότε. Αρχικά 5 ¼ και κατόπιν 3,5 ιντσών. Οι
χωρητικότητες, με τα σημερινά μέτρα, κυριολεκτικά αστείες! Από 360 ΚΒ
μέχρι 1,44 ΜΒ! Θυμάμαι, λοιπόν, ότι, μέχρι να αποκτήσουμε εκτυπωτή στη
υπηρεσία, πήγαινα και εκτύπωνα τα προγράμματά μου σε μία Εταιρεία, με την οποία
συνεργαζόμασταν, προκειμένου να μπορώ να τα μελετήσω/ βελτιστοποιήσω απόγευμα
και βράδυ στο σπίτι. Τέτοιο πάθος!
Εξακολουθούσα να αγοράζω, προσωπικά ή / και
υπηρεσιακά, σχετικά βιβλία κυρίως, πλέον, για το Clipper. Αγαπημένο βιβλίο το “The Clipper Interface Handbook” του John Mueller (Windcrest / McGraw – Hill) το οποίο αγόρασα στις 26/5/1992 με κόστος 20,83 €.
Ατυχώς, και πάλι, έπεσε και αυτό θύμα του «Project Δήμητρα».
Η πρώτη εφαρμογή που έφτιαξα ήταν, αν θυμάμαι καλά,
σχετική με την αξιολόγηση μισθωτών. Μια εφαρμογή που έδινε τη δυνατότητα να αξιολογήσεις
(βαθμολογήσεις) να κατατάξεις και να έχεις πρόσβαση σε ένα πλήθος στατιστικών
στοιχείων. Ακολούθησαν, μεταξύ άλλων, μία εφαρμογή για την μισθοδοσία του
εκτάκτου προσωπικού και μία για την σύνταξη του Ετήσιου Προϋπολογισμού. Αυτή η
τελευταία θα πρέπει να ήταν από τις πρώτες, στην υπηρεσία, που προέκυπτε από
προγραμματισμό με τους Πίνακες Προϋπολογισμού εκτυπωμένους, με dot matrix εκτυπωτή, και όχι
δακτυλογραφημένους. Μια εφαρμογή για την οποία η δακτυλογράφος, που μέχρι τότε
δακτυλογραφούσε, κυρίως υπερωριακά, τους σχετικούς Πίνακες μου έκοψε
την «Καλημέρα»!
Ακολούθησαν εφαρμογές, όταν πια είχα μετατεθεί στην
Αθήνα τον Σεπτέμβριο του 1993, για την καταχώριση και επεξεργασία υπηρεσιακών
πληροφοριών για τους μισθωτούς, για την επίδοση «φύλλων επιστράτευσης», ανάλογα
με τον συνδικαλιστικό φορέα των εργαζομένων και, κυρίως, την τήρηση Πρωτοκόλλου
Εισερχομένων / Εξερχομένων εγγράφων στην κεντρική υπηρεσία. Η τελευταία αυτή
εφαρμογή ήταν και η «βαρύτερη» που είχα φτιάξει και έλυσε αρκετά προβλήματα επί
τριετία τουλάχιστον.
Είχε έλθει πλέον η εποχή του λειτουργικού συστήματος
Windows, κυρίως η έκδοσή
του 3.1 το 1992, και η Nantucket, η
Εταιρεία που είχε κατασκευάσει και καθιερώσει το Clipper, δεν μπόρεσε να προσαρμοστεί στην «παραθυρική» εποχή.
Έσβησε! Στην ουσία την ακολούθησα! Άλλαξε και το αντικείμενο εργασίας μου και
παράτησα τον προγραμματισμό. Έμεινα το διάστημα 1987 – 1994 να μου θυμίζει την
πνευματική χαρά και την ανάταση που μου είχε χαρίσει!
Έψαξα τον Η/Υ της Τ47 και, βεβαίως, είχα κρατήσει
αντίγραφα από τα Προγράμματα αυτά. Αντίγραφα δισκετών και στο σύνολο τους.
Αρχεία EXE, DBF, NTX, BAT. Όλα! Δεν επιθυμώ να
επεκταθώ σε τεχνικές λεπτομέρειες που ούτε εγώ πλέον καλοθυμάμαι. Θα παραθέσω όμως,
έτσι για να πάρετε μία γεύση, τον κώδικα μιας διαδικασίας (Procedure) και μίας συνάρτησης (Function). Ιδού:
**************************************************************
PROCEDURE MY_DBU( nTop,
nLeft, nBottom, nRight, aEPIKEF, aPEDIO, ;
aPERIOXH,
nPEDIA, aPLATOS, aTEXT, MyPlik )
**************************************************************
*Περιγραφή ----->
Συνάρτηση Εμφάνισης/Ενημέρωσης Αρχείου DBF
LOCAL browse // Το αντικείμενο
TBrowse
LOCAL cColorSave, nCursSave // "Φύλακες" Καταστάσεων
LOCAL nKeY // Πληκτροπάτημα
LOCAL lMore
// Έλεγχος
Βρόχου
LOCAL Fouli // Για να κάνουμε,
επιτέλους, την δουλειά μας
LOCAL column // Aμ πώς θα την
γαζώσουμε !
LOCAL lSavReadExit := READEXIT( .T. ) // Ενεργοποίηση πλήκτρων Άνω/Κάτω
//
για Εξοδο από READ
LOCAL SSS
MEMVAR QUI, MyFunc2
browse := TBrowseDB( nTop, nLeft,
nBottom, nRight )
FOR Fouli=1 TO nPEDIA
column := TBColumnNew( aEPIKEF[fouli],
;
FieldWblock( aPEDIO[fouli],
aPERIOXH[fouli] ) )
column : width := aPLATOS[Fouli]
browse : addColumn(column)
NEXT
TURN_OFF_APPEND_MODE(browse)
browse:skipBlock := { |x| Skipper(x,
browse) }
browse:headSep := MY_HEADSEP
browse:colSep := MY_COLSEP
browse:footSep := MY_FOOTSEP
FancyColors(browse)
cColorSave := SetColor("N/W")
ANTIL( PADC( aTEXT[1], T_STL+1 ), 0, 7, 7
)
ANTIL( PADC( aTEXT[2], T_STL+1 ),
T_GRM-1, 7, 7 )
ANTIL( PADC( aTEXT[3], T_STL+1 ), T_GRM,
7, 7 )
SetColor( "N/W" )
DISPBOX( nTop-1, nLeft-2, nBottom,
nRight+2, 2 ) // αντί nBottom + 1
SetColor("W/W")
@ nTop, nLeft-1 CLEAR TO nBottom-1,
nRight+1 // αντί nBottom
SetColor( "N/W" )
@ nTop+1, nLeft-2 SAY CHR(204) + CHR(205) // Για να οι του έσω
πλαισίου
@ nTop+1, nRight+1 SAY CHR(205) + CHR(185) // γραμμές κλείνουν
SetColor(cColorSave)
nCursSave := SetCursor(SC_NONE)
lMore := .T.
DO WHILE lMore // Βρόχος Βασικός κι
Ασήκωτος
if ( Browse:colPos <= Browse:freeze )
Browse:colPos := ( Browse:freeze + 1
)
endif
nKeY := 0
DO WHILE nKeY == 0 .AND. .NOT.
browse:stable
browse:stabilize()
nKeY := Hot_InKey()
ENDDO
* Αριθμός Εγγραφής / Σύνολο Εγγραφών
@ nBottom, nRight-16 SAY "[ "
+ STR( RECNO(), 5 ) + ;
" / "
+ STR( LASTREC(), 5 ) + " ]" ;
COLOR
"N/W"
IF DELETED()
@ nTop-1, nRight-16 SAY "<
Διεγράφη >" ;
COLOR IF( QUI,
"W+/R", "N/W" )
ELSE
@ nTop-1, nRight-16 SAY REPLICATE(
CHR(205), 13 ) ;
COLOR "N/W"
ENDIF
SSS := &MyFunc2
IF browse:stable
IF browse:hitBottom .AND. .NOT.
IS_APPEND_MODE(browse)
TURN_ON_APPEND_MODE( Browse )
nKey := K_DOWN
ELSE
IF browse:hitTop .OR.
browse:hitBottom
TONOS( 125, 0 )
ENDIF
browse:refreshCurrent()
ForceStable(browse)
nKeY := HOT_INKEY(0)
ENDIF
ENDIF
IF nKeY == K_ESC
lMore := .F.
ELSE
MYAPPKEY(browse, nKeY, MyPlik )
ENDIF
ENDDO
SETCURSOR(nCursSave)
READEXIT( lSavReadExit )
RETURN
*********************
FUNCTION SEEK_AP()
*********************
LOCAL REC, SCR, mAREGG
MEMVAR InOut
REC := RECNO()
DBSETORDER( 1 )
SCR := SCRNSAVE( T_GRM-2, 0, T_GRM, T_STL )
IF InOut < 3
mAREGG := DTOC(DATE())
ELSE
mAREGG := SPACE(2)
ENDIF
XROMA(1)
ANTIL( PADC( " ΠΛΗΚΤΡΟΛΟΓΕΙΣΤΕ " + ;
IIF( InOut<3 o:p="">3>
T_STL+1 ), T_GRM, 2, 2 )
ANTIL( PADC( IIF( InOut<3 nbsp="" o:p="">3>
"EΤΟΙΜΟΣ ! [ ]"), T_STL+1 ), T_GRM-1, 7, 7 )
CLEAR GETS
SET CURSOR ON
IF InOut < 3
@ T_GRM-1, CENT(SPACE(20)) + 11 GET mAREGG ;
COLOR IF(
QUI, "W+/BG", "N/W" ) PICTURE "99/99/99"
ELSE
@ T_GRM-1,
CENT(SPACE(14)) + 11 GET mAREGG ;
COLOR IF(
QUI, "W+/BG", "N/W" ) PICTURE "99"
ENDIF
READ
SET CURSOR OFF
SET SOFTSEEK ON
IF InOut < 3
SEEK DTOS(CTOD(mAREGG))
ELSE
SEEK SPACE( 2
-LEN(ALLTRIM(mAREGG)))+ALLTRIM(mAREGG)
ENDIF
SET SOFTSEEK OFF
IF EOF() // Αλλως ! FOUND() διότι
βεβαίως έχουμε και το SOFTSEEK ON !
IF InOut < 3
ANTIL( PADC( "ΔΕΝ
ΥΠΑΡΧΕΙ ΕΙΣΕΡΧΟΜΕΝΟ ΜΕ ΗΜΕΡΟΜΗΝΙΑ ΠΑΡΑΛΑΒΗΣ " + ;
mAREGG, T_STL+1 ),
T_GRM, 6, 6 )
ELSE
ANTIL( PADC( "ΔΕΝ
ΥΠΑΡΧΕΙ ΤΜΗΜΑ ΜΕ ΚΩΔΙΚΟ ΑΡΙΘΜΟ " + ;
mAREGG, T_STL+1
), T_GRM, 6, 6 )
ENDIF
BEEP()
HOT_INKEY(3)
ELSE
REC := RECNO()
ENDIF
GO REC
SCRNREST( SCR )
DBSETORDER( 0 )
Ένα κλικ μακριά και από το άλμπουμ «Εστουδιαντίνα
ΙΙ, Δάκρυ
στο Γυαλί» (2006) το τραγούδι «Κερύνεια» με τους Παντελή
Θαλασσινό, Γιώργο
Νταλάρα σε μουσική του πρώτου και στίχους του Πόλυ
Κυριάκου:
14/04/2019
Α τι ωραία!
ΑπάντησηΔιαγραφήΔεν κατάλαβα τίποτα!
Άσχετη γαρ με τα του προγραμματισμού!
Μόνο τα του βλογ κάπως κατέχω.
Κατά τα λοιπά, πλήρη μεσάνυχτα!
Οπότε θα ακούσω το τραγούδι, θα πω καλημέρα και καλή εβδομάδα και θα αποχωρήσω!
Καλημέρα, Καλημέρα! Κι εγώ που, από προγραμματισμό, γνώριζα τώρα, πλέον, δεν! Να είσαι Καλά, Καλή Εβδομάδα!
ΔιαγραφήΑν ξερατε τι διαβασμα εψω ριξει με την καταραμενη την java οταν σπουδαζε ο υιπς πληροφορικαριος θα με λυποσασταν.οχι οτι καταλαβαινα απλα ηθελα να βοηθησω.τρομαρα μου.το μαθημα περαστηκε αλλα το κενο στο κεφαλι μου οχι.Την καλημερα μου.
ΑπάντησηΔιαγραφήΣυγνωμη για τα λαθη το κινητο φταιει.ο πληροφορικαριος ακομη να διορθωσει τον υπολογιστη.
ΑπάντησηΔιαγραφήΚαλησπέρα. Το να βοηθάμε τα παιδιά μας είναι καλό, η υπερβολή, θα έλεγα, όχι. Κρίμα, λοιπόν, που δεν είχατε την ευκαιρία πνευματικής απόλαυσης στην, έμμεση αυτή, ενασχόλησή σας με τον προγραμματισμό. Να είσαστε Καλά!
ΔιαγραφήΚαλησπέρα κάτι αντίστοιχο και εγώ. Πολύ διάβασμα στο σπίτι που ξεκίνησε με έναν zx81. Μετά λόγω επαγγέλματος πολύ Lotus 123 και λιγότερα dbase & clipper. Όλα τα σάρωσε μετά η MS με το excel. Προχθές που έπρεπε να χρησιμοποιήσω κάποιες απλές functions του ίδρωσα. Τα έχω ξεχάσει. Καλό καλοκαίρι καλή συνέχεια με το ενδιαφέρον μπλογκ σας.
ΑπάντησηΔιαγραφήΚαλησπέρα,
ΔιαγραφήΤώρα είδα το σχόλιο. Σας ευχαριστώ πολύ.
Να είσαστε Καλά,
Καλό ξημέρωμα:)