Παρασκευή 28 Σεπτεμβρίου 2018

For a million IFs less

One of the first you learn in #Cobol, especially back in the day when indexed files where a common practice, is the use of SW-FIRST-READ.

In a program flow most probably there’s a loop on a cursor or a file. Many programmers inside that main loop they use an IF for controlling the first read. For example, if you want to match previous and current row/record.  The COBOL code would be something like:

01 SW-FIRST-READ PIC X VALUE ‘Y’.

  88 FIRST-READ-YES   VALUE ‘Y’.

  88 FIRST-READ-NOT   VALUE ‘N’.

MAIN-ROUTE.

   PERFORM READ-ROUTE

   #PERFORM UNTIL EOF

     #IF FIRST-READ-YES

        SET FIRST-READ-NOT TO TRUE

        MOVE CURRENT-RECORD TO PREVIOUS-RECORD

     END-IF

     IF CURRENT-RECORD = PREVIOUS-RECORD

        DISPLAY ‘SAME ACCOUNT’

        PERFORM SAME-ACCOUNT-ROUTE

     ELSE

        DISPLAY ‘NEW ACCOUNT’

        PERFORM NEW-ACCOUNT-ROUTE

     END-IF

     PERFORM READ-ROUTE

   END-PERFORM

  IF EOF AND SW-FIRST-READ

      DISPLAY ‘NO RECORDS/ROWS IN FILE/CURSOR’

      PERFORM EMPY-FILE-OR-CURSOR-ROUTE

   END-IF .

READ-ROUTE.

    READ FILE NEXT AT END SET SW-EOF TO TRUE

(OR)

   FETCH CURSOR

   IF SQLCODE = NOT-FOUND-NEXT

      SET SW-EOF TO TRUE

   END-IF

 IF SQLCODE/FILE-STATUS NOT-OK

      ERROR-HANDLING-ROUTE

    END-IF.

This is a very common practice with one fault for performance. The IF SW-FIRST-READ will execute as many times as the ROWS/RECORDS of the CURSOR/FILE – 1.000.000 or 50.000.000 times, and IF statement is not a fast one.

My recommendation would have some more code to be written, some paragraph rearrangements and involve a bit more thinking. But it will have 1.000.000 IFs less.

You will have to have separate paragraphs for #READ / #FETCH, for error handling and PERFORM these paragraphs twice, once before the main loop. That one would be the first time and will be executed only once. There’s no need to ask again. The code would look like this:

MAIN-ROUTE.

   PERFORM READ-ROUTE

   IF NOT-EOF

      MOVE CURRENT-RECORD TO PREVIOUS-RECORD

   ELSE

      DISPLAY ‘NO RECORDS/ROWS IN FILE/CURSOR’

      PERFORM EMPY-FILE-OR-CURSOR-ROUTE

   END-IF

   PERFORM UNTIL EOF

     IF CURRENT-RECORD = PREVIOUS-RECORD

        DISPLAY ‘SAME ACCOUNT’

        PERFORM SAME-ACCOUNT-ROUTE

     ELSE

        DISPLAY ‘NEW ACCOUNT’

        PERFORM NEW-ACCOUNT-ROUTE

     END-IF

   END-PERFORM

  PERFORM END-ROUTE  .

READ-ROUTE.

   READ FILE NEXT AT END SET SW-EOF TO TRUE

(OR)

   #FETCH #CURSOR

   IF SQLCODE = NOT-FOUND-NEXT

      SET SW-EOF TO TRUE

   END-IF

   IF SQLCODE/FILE-STATUS NOT-OK

      #ERRORHANDLING-ROUTE

    END-IF.

Σάββατο 22 Σεπτεμβρίου 2018

Όλα είναι ένα ψέμα


Κάθε φορά που ένας dr Muller βάζει τάξη στο σύμπαν η ζωή γελά


Aναφορές:

https://www.imdb.com/name/nm9971436/

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ
ΦΙΛΟΣΟΦΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΙΣΤΟΡΙΑΣ ΚΑΙ
ΑΡΧΑΙΟΛOΓΙΑΣ ΤΟΜΕΑΣ ΙΣΤΟΡΙΑΣ ΤΗΣ ΤΕΧΝΗΣ

Μεταπτυχιακή φοιτήτρια: Χριστίνα Γκωλέκα Θεσσαλονίκη, Σεπτέμβριος 2014

http://ikee.lib.auth.gr/record/273509/files/GRI-2015-15272.pdf


Τα έργα μου
http://www.greekanimation.com/artists/parioritsas-polykarpos/

Κυριακή 9 Σεπτεμβρίου 2018

Δεσμά αίματος

Ολοκλήρωσα τη συγγραφή και την επιμέλεια του νέου μου μυθιστορήματος "Δεσμά αίματος"
Η Συγγραφή είχε ξεκινήσει το 2010 όπου ξεκίνησα να κάνω την έρευνα που χρειαζόταν και είχα καταρτίσει το σκελετό.
Τότε, με το θάνατο του αγαπημένου από την εφηβεία τραγουδιστή Ronnie James Dio αποφάσισα να αφιερώσω το μυθιστόρημα στη μνήμη  του και στην εφηβεία μου.
Έτσι ξεκινά με τους πολύ ταιριαστούς στίχους από το Egypt(The chains are on) και κάθε κεφάλαιο έχει μία στροφή από διάφορα τραγούδια, εποχή και συγκρότημα.
Όσο αφορά το μυθιστόρημα, tο έργο μπορεί να χαρακτηριστεί horror thriller με έντονα στοιχεία ιστορικού μυθιστορήματος.
Το πρώτο μέρος του έργου κινείται στην άγνωστη εκστρατεία των Αθηναίων στην Αίγυπτο και τις συνεχόμενες ανατροπές στο αποτέλεσμα της εκστρατείας αυτής. Μέσα σε αυτό το μέρος υπάρχουν οι πινελιές μυστηρίου που οδηγούν στο δεύτερο μέρος όπου το εκστρατευτικό σώμα βρίσκεται αντιμέτωπο με το μεταφυσικό.



In the land of the lost horizon
Where the Queen lies dark and cold
And when the stars won’t shine
Then the story told…
(Στην γη του χαμένου ορίζοντα,
Όπου η βασίλισσα κείται στο σκοτάδι παγωμένη,
Και όταν τα άστρα έπαψαν να λάμπουν,
Τότε ειπώθηκε η ιστορία αυτή…)

Egypt, Ronnie James Dio
Δεσμά αίματος, εισαγωγή
Ο Ήλιος είχε αρχίσει να βυθίζεται στον χρυσό ορίζοντα της ερήμου χρωματίζοντάς τον πορφυρό. Από τα βάθη της η άμμος έπαιρνε μια ανάσα για να δροσίσει την θέρμη της καυτής μέρας. Στην ψευδαίσθηση μιας χρυσοκόκκινης λίμνης εκεί που η Γη συγχέεται με τον ουρανό και κοχλάζει, βούταγε ο βαθυκόκκινος δίσκος του Ήλιου. 
Η νύχτα της ερήμου πέφτει πάνω στη γη όπως πουθενά αλλού στον κόσμο. Αφού κυνηγά και εξαλείφει το τελευταίο ίχνος φωτός και ζεστασιάς, μετά σβήνει τους ήχους. Αυτό που απομένει είναι μόνο το ελαφρύ σούρσιμο των κόκκων της άμμου που τρίζουν ανήσυχα για να κατακάτσουν στην ηρεμία. Τόσο ανεπαίσθητος, τόσο διακριτικός όσο μια ανάσα αύρας πάνω σε απαλό γυναικείο δέρμα που ανατριχιάζει στενάζοντας από κάθε πόρο...

Περίληψη
Το 465 πχ οι Αθηναίοι με προτροπή του νεαρού τότε πολιτικού Περικλή αναλαμβάνουν με μεγάλες ναυτικές και χερσαίες οπλιτικές δυνάμεις να βοηθήσουν στην απελευθέρωση της Αιγύπτου από τον Περσικό ζυγό και στην στέψη του Ίναρου σε νέο Φαραώ. Ο λαός που πρώτος ξεκίνησε να στηρίζεται στην λογική και θεμελίωνε την επιστημονική μέθοδο λίγο πριν τον χρυσό αιώνα θα ανακάλυπτε σύντομα ότι η έρημος κρύβει πολλά μυστικά και έναν τρόμο που απειλεί να καταπιεί κάθε φως.