Free Naruto Cursors at www.totallyfreecursors.com

12/04/2012

pemrograman file relatif pada cobol

1      IDENTIFICATION DIVISION.

2      PROGRAM-ID. RELATIF.
3      AUTHOR. NAUFAN SURYA.
4      SECURITY. PROGRAM MEMASUKKAN DATA ORGANISASI FILE RELATIF
5                MODE AKSES DINAMIK.
6      ENVIRONMENT DIVISION.
7      INPUT-OUTPUT SECTION.
8      FILE CONTROL.
9          SELECT FILE-MHS            ASSIGN TO DISK
10         ORGANIZATION               IS RELATIVE
11         ACCESS MODE                IS DYNAMIC, RELATIVE KEY IS LOKASI-REC
12         FILE STATUS                IS STATUS-SALAH.
13     DATA DIVISION.
14     FILE SECTION.
15     FD FILE-MHS.
16         LABEL RECORD               IS STANDARD.
17         VALUE OF FILE-ID           IS ‘RELATIF.DAT’
18         DATA RECORD                IS RECORD-MAHASISWA.
19     01  RECORD-MAHASISWA.
20         02  NAMA-MHS               PIC A(25).
21         02  ALAMAT-MHS.
22             03  JALAN              PIC X(20).
23             03  KOTA               PIC A(15).
24         02  TGL-DAFTAR.
25             03  TANGGAL            PIC 99.
26             03  BULAN              PIC 99.
27             03  TAHUN              PIC 99.
28         02  IP-MHS                 PIC 99V99.
29     WORKING-STORAGE SECTION.
30     77  LOKASI-REC                 PIC 99V99.
31     77  NO-MHS-MASUK               PIC 9(5).
32     77  STATUS-SALAH               PIC XX.
33     01  SUDAH-BENAR                PIC X.
34         88  BENAR                  VALUE ‘Y’, ‘y’.
35         88  SALAH                  VALUE ‘T’, ‘t’.
36     01  MASUKKAN-LAGI-TIDAK PIC X.
37         88  LAGI                   VALUE ‘Y’, ‘y’.
38         88  TIDAK                  VALUE ‘T’, ‘t’.
39     01  RECORD-MAHASISWA-MASUK.
40         02  NAMA-MHS-MASUK         PIC A(25).
41         02  ALAMAT-MHS-MASUK.
42             03  JALAN-MASUK        PIC X(20).
43             03  KOTA-MASUK         PIC A(15).
44         02  TGL-DAFTAR-MASUK.
45             03  TANGGAL-MASUK      PIC 99.
46             03  BULAN-MASUK        PIC 99.
47             03  TAHUN-MASUK        PIC 99.
48         02  IP-MHS-MASUK           PIC 99V99.
49     SCREEN SECTION.
50     01  HAPUS-LAYAR.
51         02  BLANK SCREEN.
52     01  LAYAR-DATA.
53         02  LINE 4 COLUMN 5        ‘NOMER MAHASISWA  :’.
54         02  COLUMN PLUS 1          PIC 9(5) TO NO-MHS-MASUK REQUIRED.
55         02  LINE 6 COLUMN 5        ‘NAMA MAHASISWA   :’.
56         02  COLUMN PLUS 1          PIC A(25) TO NAMA-MHS-MASUK.
57         02  LINE 8 COLUMN 5        ‘ALAMAT MAHASISWA :’.
58         02  LINE 9 COLUMN 5        ‘JALAN            :’.
59         02  COLUMN PLUS 1          PIC X(20) TO JALAN-MASUK.
60         02  LINE 10 COLUMN 5       ‘KOTA             :’.
61         02  COLUMN PLUS 1          PIC A(15) TO KOTA-MASUK.
62         02  LINE 12 COLUMN 5       ‘TANGGAL DAFTAR   :’.
63         02  COLUMN PLUS 1          PIC 99 TO TANGGAL-MASUK AUTO.
64         02  COLUMN PLUS 1          ‘-’.
65         02  COLUMN PLUS 1          PIC 99 TO BULAN-MASUK AUTO.
66         02  COLUMN PLUS 1          ‘-’.
67         02  COLUMN PLUS 1          PIC 99 TO TAHUN-MASUK AUTO.
68         02  LINE 14 COLUMN 5       ‘INDEKS PRESTASI   :’.
69         02  COLUMN PLUS 1          PIC 99V99 TO IP-MHS-MASUK.
70     PROCEDURE DIVISION.
71     RUTIN-UTAMA SECTION.
72     BUKA-FILE.
73         OPEN OUTPUT FILE-MHS.
74     MULAI.
75         MOVE                      SPACE TO SUDAH-BENAR
76         PERFORM                   MASUKKAN-DATA UNTIL BENAR
77         PERFORM                   REKAM-DATA
78         PERFORM                   ADA-LAGI-TIDAK.
79     SELEKSI-MASUKKAN-LAGI-TIDAK.
80         IF LAGI
81           GO TO MULAI.
82     SELESAI.
83         CLOSE FILE-MHS
84         STOP RUN.
85     RUTIN-BAGIAN SECTION.
86     MASUKKAN-DATA.
87         DISPLAY                   HAPUS-LAYAR
88         DISPLAY                   LAYAR-DATA
89         ACCEPT                    LAYAR-DATA.
90         DISPLAY (18, 5)           ‘SUDAH BENAR (Y/T) ?’
91         ACCEPT  (  ,  )           SUDAH-BENAR.
92     REKAM-DATA.
93         MOVE ‘ ‘                  TO STATUS-SALAH
94         COMPUTE                   LOKASI-REC = NO-MHS-MASUK – 8009
95         WRITE                     RECORD-MAHASISWA FROM RECORD-MAHASISWA
96         PERFORM                   SELEKSI-REKAMAN.
97     ADA-LAGI-TIDAK.
98         DISPLAY (20, 5)           ‘ADA LAGI DATA LAINNYA (Y/T) ?’
99         ACCEPT  (  ,  )           MASUKKAN LAGI TIDAK.
100    SELEKSI REKAMAN.
101        IF STATUS-SALAH = ’22′
102        DISPLAY (18, 5)           ‘TIDAK TEREKAM, NILAI KUNCI TIDAK UNIK’.
103        IF STATUS-SALAH = ’24′
104        DISPLAY (18, 5)           ’TIDAK TEREKAM, DISK PENUH’.
Penjelasan (logika program):
Ada beberapa perbedaan yang pokok antara organisasi file relatif dengan organisasi file indeks, yaitu:
(A). Pada SELECT clause dalam ENVIRONMENT DIVISION:
9        FILE-CONTROL.
10               SELECT FILE-MHS ASSIGN TO DISK
11               ORGANIZATION IS RELATIVE
12               ACCES MODE IS DYNAMIC, RELATIVE KEY IS LOKASI-REC
13               FILE STATUS IS STATUS-SALAH.
Entry dalam SELECT clause harus disebutkan ORGANIZATION IS RELATIVE. Sedangkan kalau digunakan mode akses dinamik, maka harus disebutkan nama-data RELATIVE KEYnya. LOKASI-REC pada contoh program ini adalah nama-data yang dihubungkan dengan nomor record relaifnya.
(B). Nomor record relatif tersebut tidak menjadi bagian dari data record, tetapi disebutkan tersendiri dalam DATA DIVISION sebagai berikut:
30      77  LOKASI-REC     PIC 9999.
(C). Pada waktu merekamkan data, record data tersebut akan direkamkan pada posisi nomor record relatif yang disebutkan:
92      REKAM-DATA
93               MOVE ‘  ‘   TO STATUS-SALAH
94               COMPUTE LOKASI-REC = NO-MHS-MASUK – 8009
95               WRITE RECORD-MAHASISWA FROM RECORD-MAHASISWA-MASUK
96               PERFORM  SELEKSI-REKAMAN.
Tampak bahwa data akan direkamkan pada posisi nomor record relatif LOKASI-REC yang mempunyai hubungan dengan nomor mahasiswa, yaitu NO-MHS-MASUK dikurangi dengan nilai 8009.
Maksud dari hubungan ini adalah misalnya nomor mahasiswa 8010 akan direkamkan pada posisi nomor relative 1, nomor mahasiswa 8011 akan direkamkan pada posisi nomor record relatif 2 dan seterusnya.

sumber:http://abuqafa.wordpress.com