 PS 9308



                             TARH

                                                    Ahmet Yldz


Aada iki ksmdan oluan programlarla, sistemdeki tarih ve saati okuyarak
ekrana yazdrmaktayz. lk olarak TARIH.CBL daha sonra da TIMEDATE.CBL
programn yazp derlemekteyiz. Derleyici program olarak COBOL (ver 4.50)
kullanlmtr.


Programlarn almas:

lk aamada TARIH.CBL programn ele alalm. Burada tarih bulmayla ilgili zel
hesaplar yaplmakta ve gnn tarihi tespit edilmektedir. kinci aamada
TIMEDATE.CBL devreye girmekte. Aylar ve gnler yazyla tantlmakta.

Sistemdeki tarih ve saat okunmakta, CANCEL komutuyla, ilk aamadaki TARIH.EXE
yklenmekte. Gerekli hesaplar yapldktan sonra tarih ve saat ekrana
yazlmaktadr.


rnek : C:\>COBOL TARIH;
        C:\>LINK TARIH;
        C:\>COBOL TIMEDATE;
        C:\>LINK TIMEDATE;
        C:\>TIMEDATE

-----------------------------------------------------------------------

                    Tarih < 21-Haziran-93 (Pazartesi)
                     Saat < 12:13.59_

-----------------------------------------------------------------------


      $SET ANS85 CONFIRM VSC2 MF(4)
      $SET NO OPTIONAL-FILE COMP FILESHARE NO BOUND
       IDENTIFICATION DIVISION.
       PROGRAM-ID. TARIH.
       AUTHOR. AHMET YILDIZ.
       SECURITY.
           TARIH.CBL             20.06.1993 (20:58) (Ver 4.50).
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. SCAN.
       OBJECT-COMPUTER. SCAN.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  SEC               PIC X VALUE SPACES.
       01  YANLIS-SW         PIC X VALUE "H".
           88 YANLIS               VALUE "E".
       01  TARIH-KONTROL-SAHALARI.
           02 KONT-TAR.
              03 KONT-YIL    PIC 99 VALUE 0.
              03 KONT-AY     PIC 99 VALUE 0.
              03 KONT-GUN    PIC 99 VALUE 0.
           02 KONT-TAR-R REDEFINES KONT-TAR PIC 9(6).
           02 NUM-YIL        PIC 9999 VALUE 0.
           02 ART-YIL.
              03 ART-YIL-INT PIC 999.
              03 ART-YIL-DEC PIC V99.
           02 ART-YIL1 REDEFINES ART-YIL PIC 999V99.
       01  VADE-BUL-SAHALARI.
           02 GG             PIC     99 VALUE ZEROS.
           02 AA             PIC     99 VALUE ZEROS.
           02 SS             PIC   9999 VALUE ZEROS.
           02 NN             PIC 999999 VALUE ZEROS.
           02 KALAN          PIC 999999 VALUE ZEROS.
           02 BOLEN          PIC 999999 VALUE ZEROS.
           02 BOLUM          PIC 999999 VALUE ZEROS.
           02 BOLUNEN        PIC 999999 VALUE ZEROS.
           02 GUN            PIC 999999 VALUE ZEROS.
           02 GUN1           PIC 999999 VALUE ZEROS.
           02 VADE           PIC 999999 VALUE ZEROS.
       LINKAGE SECTION.
       01  T006-TASI.
           02 T006-TAR.
              03 T006-YIL    PIC 99.
              03 T006-AY     PIC 99.
              03 T006-GUN    PIC 99.
           02 T006-TAR-R REDEFINES T006-TAR PIC 9(6).
           02 T006-DURUM     PIC 9.
       PROCEDURE DIVISION USING T006-TASI.
       BASLA.
           CALL x"E4".
           MOVE T006-TAR-R TO KONT-TAR-R.
           PERFORM KONT-TAR-PAR THRU KONT-TAR-PAR-SON.
           IF YANLIS MOVE "1" TO T006-DURUM GO SON.
           MOVE ZEROS TO T006-DURUM.
      *
           MOVE T006-GUN TO GG  MOVE T006-AY TO AA.
           COMPUTE SS = 1900 + T006-YIL.
           PERFORM GUN-BUL.
           MOVE GUN TO GUN1.
           DIVIDE GUN BY 7 GIVING BOLUM.
           MULTIPLY BOLUM BY 7 GIVING BOLUNEN.
           SUBTRACT GUN FROM BOLUNEN GIVING KALAN.
           IF KALAN = 0 MOVE 7 TO KALAN.
           MOVE KALAN TO T006-GUN.
           MOVE T006-TAR-R TO KONT-TAR-R.
           PERFORM GUN-TAR-PAR.
       SON.
           EXIT PROGRAM.
       SSS.
           STOP RUN.
       GUN-BUL.
           COMPUTE NN = (30.42 * (AA - 1)) + GG.
           IF AA = 2 ADD 1 TO NN.
           IF (AA > 2) AND (AA < 8) SUBTRACT NN FROM 1 GIVING NN.  DIVIDE   SS
           BY 4         GIVING BOLUM.
           MULTIPLY BOLUM BY 4         GIVING BOLUNEN.
           SUBTRACT SS    FROM BOLUNEN GIVING KALAN.
           IF (KALAN = 0) AND (AA > 2) ADD 1 TO NN.
           SUBTRACT SS    FROM 1960    GIVING SS.
           DIVIDE   SS    BY 4         GIVING BOLUM.
           MULTIPLY BOLUM BY 4         GIVING BOLUNEN.
           SUBTRACT SS    FROM BOLUNEN GIVING KALAN.
           IF BOLUM > 0 COMPUTE NN = NN + (1461 * BOLUM).
           IF KALAN > 0 COMPUTE NN = NN + (365  * KALAN) + 1.
           MOVE NN TO GUN.
           SUBTRACT GUN FROM 1 GIVING GUN.
       KONT-TAR-PAR.
           MOVE "H" TO YANLIS-SW.
           IF KONT-YIL = 0 MOVE "E" TO YANLIS-SW.
           MOVE KONT-YIL TO NUM-YIL.
           ADD 1900 TO NUM-YIL.
           IF KONT-AY > 12 OR KONT-AY < 1 OR KONT-GUN > 31
              OR KONT-GUN < 1  MOVE "E" TO YANLIS-SW.
           IF KONT-AY = 2 DIVIDE NUM-YIL BY 4 GIVING ART-YIL1.
           IF KONT-AY = 2 AND ART-YIL-DEC NOT = .00
              AND KONT-GUN > 28 MOVE "E" TO YANLIS-SW.
           IF KONT-AY = 2 AND ART-YIL-DEC = .00 AND KONT-GUN > 29
                                MOVE "E" TO YANLIS-SW.
           IF (KONT-AY = 4 OR KONT-AY = 6 OR KONT-AY = 9
              OR KONT-AY = 11) IF KONT-GUN > 30
                                MOVE "E" TO YANLIS-SW.
           IF (KONT-AY   = 1 OR KONT-AY = 3 OR KONT-AY = 5
              OR KONT-AY = 7 OR KONT-AY = 8 OR KONT-AY = 10
                 OR KONT-AY = 12) IF KONT-GUN > 31
                                MOVE "E" TO YANLIS-SW.  KONT-TAR-PAR-SON.
           EXIT.
       GUN-TAR-PAR.
           MOVE KONT-YIL TO NUM-YIL.
           ADD 1900      TO NUM-YIL.
           IF KONT-AY = 2 DIVIDE NUM-YIL BY 4 GIVING ART-YIL1
              IF ART-YIL-DEC = .00 MOVE 29 TO T006-AY
                 ELSE              MOVE 28 TO T006-AY.
           IF KONT-AY = 4 OR 6 OR 9 OR 11
                                   MOVE 30 TO T006-AY.
           IF KONT-AY = 1 OR 3 OR 5 OR 7 OR 8 OR 10 OR 12
                                   MOVE 31 TO T006-AY.







      $SET ANS85 CONFIRM VSC2 MF(4)
      $SET NO OPTIONAL-FILE COMP FILESHARE NO BOUND
       IDENTIFICATION DIVISION.
       PROGRAM-ID. TIMEDATE.
       AUTHOR. AHMET YILDIZ.
       SECURITY.
           TIMEDATE.CBL          20.06.1993 (20:31) (Ver 4.50).
       ENVIRONMENT DIVISION.
       CONFIGURATION SECTION.
       SOURCE-COMPUTER. SCAN.
       OBJECT-COMPUTER. SCAN.
       SPECIAL-NAMES.
           CRT STATUS IS KEY-STATUS.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
       DATA DIVISION.
       FILE SECTION.
      *
       WORKING-STORAGE SECTION.
       77  SEC        PIC X        VALUE SPACES.
       01  TUSBAS-SW  PIC 9 COMP-X VALUE ZEROS.
           88 TUSBAS               VALUE 01.
       01  SYS-SAAT.
           02 SAAT    PIC 99.
           02 DAKIKA  PIC 99.
           02 SANIYE  PIC 99.
       01  SYS-TARIH.
           02 YIL     PIC 99.
           02 AY      PIC 99.
           02 GUN     PIC 99.
       01  TARIH      PIC X(27) VALUE SPACES.
       01  AYLAR.
           02 AY-I    PIC X(84) VALUE "OCAK   UBAT  MART   NSAN "
      -    " MAYIS "
      -    "  HAZRANTEMMUZ AUSTOSEYLL  EKM   KASIM  ARALIK ".
       01  AYLAR-R REDEFINES AYLAR.
           02 AY-II    PIC X(7) OCCURS 12 TIMES.
       01  GUNLER.
           02 GUN-I   PIC X(63) VALUE "CUMARTESPAZAR    PAZARTESSALI "
      -    "   ARAMBA PEREMBE CUMA     ".
       01  GUNLER-R REDEFINES GUNLER.
           02 GUN-II        PIC X(9) OCCURS 7 TIMES.
       01  T006-TASI.
           02 T006-TARIH    PIC 9(6).
           02 T006-TARIH-R REDEFINES T006-TARIH.
              03 T006-YIL   PIC 99.
              03 T006-AY    PIC 99.
              03 T006-GUN   PIC 99.
           02 T006-DURUM    PIC 9.
       01  TAM-STAT         PIC XX VALUE SPACES.
           88 DUR1-T               VALUE "00" "02".
           88 DUR5-T               VALUE "23".
       01  GEN-STAT         PIC XX VALUE SPACES.
           88 D00                  VALUE "00".
           88 D10                  VALUE "10".
           88 D21                  VALUE "21".
           88 D22                  VALUE "22".
           88 D23                  VALUE "23".
           88 D24                  VALUE "24".
           88 D34                  VALUE "34".
           88 D35                  VALUE "35".
           88 D91                  VALUE "91".
           88 D92                  VALUE "92".
           88 D93                  VALUE "93".
           88 D94                  VALUE "94".
           88 D95                  VALUE "95".
           88 D96                  VALUE "96".
           88 D97                  VALUE "97".
           88 D98                  VALUE "98".
           88 D99                  VALUE "99".
       01  SET-BIT-PAIRS    PIC 99 COMP-X VALUE 1.
       01  KEY-STATUS.
           02  KEY-TAPE     PIC X.
           02  KEY-CODE-1   PIC 9(2) COMP-X.
           02  KEY-CODE-1-X REDEFINES KEY-CODE-1 PIC X.
           02  ESKOD        PIC 9(2) COMP-X.
           02  E REDEFINES ESKOD PIC 9(2) COMP-X.
       01  ENABLE-ESC-AND-F1.
           02  FILLER       PIC 9(2) COMP-X VALUE 1.
           02  FILLER       PIC X           VALUE "1".
           02  FILLER       PIC 9(2) COMP-X VALUE 0.
           02  FILLER       PIC 9(2) COMP-X VALUE 117.
       01  TUS.
           02 ENT           PIC 99   COMP-X VALUE 13.
           02 ESC           PIC 99   COMP-X VALUE 57.
           02 F1            PIC 99   COMP-X VALUE 01.
           02 F2            PIC 99   COMP-X VALUE 02.
           02 F3            PIC 99   COMP-X VALUE 03.
           02 F4            PIC 99   COMP-X VALUE 04.
           02 F5            PIC 99   COMP-X VALUE 05.
           02 F6            PIC 99   COMP-X VALUE 06.
           02 F7            PIC 99   COMP-X VALUE 07.
           02 F8            PIC 99   COMP-X VALUE 08.
           02 F9            PIC 99   COMP-X VALUE 09.
           02 F10           PIC 99   COMP-X VALUE 10.
           02 SBAR          PIC 99   COMP-X VALUE 32.
           02 OKY           PIC 99   COMP-X VALUE 60.
           02 OKA           PIC 99   COMP-X VALUE 61.
           02 INS           PIC 99   COMP-X VALUE 64.
           02 PGUP          PIC 99   COMP-X VALUE 53.
           02 PGDN          PIC 99   COMP-X VALUE 54.
           02 TAB           PIC 99   COMP-X VALUE 58.
           02 DEL           PIC 99   COMP-X VALUE 99.
       01  FONKSIYON REDEFINES TUS.
           02 F      OCCURS 20 TIMES PIC 9(2) COMP-X.
      *
        SCREEN SECTION.
        01 TARIH-SAAT.
           02 LINE 10 COLUMN 28 VALUE "TARH < "      HIGHLIGHT.
           02 LINE 10 COLUMN 36 PIC X(27) FROM TARIH  HIGHLIGHT.
           02 LINE 11 COLUMN 29 VALUE "SAAT < "       HIGHLIGHT.
           02 LINE 11 COLUMN 36 "  :     "            HIGHLIGHT.
           02         COLUMN 41 "."                   HIGHLIGHT BLINK.
           02         COLUMN 36 PIC 99    FROM SAAT   HIGHLIGHT.
           02         COLUMN 39 PIC 99    FROM DAKIKA HIGHLIGHT.
           02         COLUMN 42 PIC 99    FROM SANIYE HIGHLIGHT.
      ****************************
       PROCEDURE DIVISION.
       BASLA.
           call x"E4"
           call x"AF" using set-bit-pairs enable-esc-and-f1.
           ACCEPT SYS-SAAT  FROM TIME.
           ACCEPT SYS-TARIH FROM DATE.
           MOVE YIL TO T006-YIL.
           MOVE AY  TO T006-AY.
           MOVE GUN TO T006-GUN.
           CALL "TARIH" USING T006-TASI.
           CANCEL "TARIH".
      *
       GUN-AL-YAZ.
           STRING GUN              DELIMITED BY SIZE
                  "-"              DELIMITED BY SIZE
                  AY-II(AY)        DELIMITED BY SPACES
                  "-"              DELIMITED BY SIZE
                  YIL              DELIMITED BY SIZE
                  " ("             DELIMITED BY SIZE
                  GUN-II(T006-GUN) DELIMITED BY SPACES
                  ")"              DELIMITED BY SIZE INTO TARIH.
      *
           DISPLAY SANIYE AT 1136
           DISPLAY DAKIKA AT 1139
           DISPLAY SAAT   AT 1142
           GO MENU-GIR.
       MENU-GIR.
           DISPLAY TARIH-SAAT   GO MENU-AL1.
       MENU-AL.
           PERFORM OZEL-TD-KONT UNTIL TUSBAS.
           MOVE ZEROS TO TUSBAS-SW
           EVALUATE ESKOD  WHEN F(02) GO SON
           END-EVALUATE.
       MENU-AL1.
           EVALUATE ESKOD  WHEN 32 GO MENU-AL
           END-EVALUATE    GO MENU-AL.
       OZEL-TD-KONT.
           CALL X"D9" USING TUSBAS-SW.
           IF TUSBAS ACCEPT SEC AT 2380 WITH UPDATE NO-ECHO AUTO-SKIP.
           ACCEPT SYS-SAAT FROM TIME.
           DISPLAY SANIYE AT 1142.
           IF SANIYE = 00 DISPLAY DAKIKA AT 1139
                          DISPLAY SAAT   AT 1136.
      *
       SON. CALL X"E4"  STOP RUN.



































 