COBOL - Dateihandhabung Verben


Advertisements

Datei-Handling Verben werden verwendet,ausführen um verschiedene Operationen auf Dateien. Folgende sind Die Dateihandling Verben:

  • Öffnen
  • Lesen
  • Schreiben
  • Umschreiben
  • Löschen
  • Anfang
  • Schließen

Offene Verb

Öffnen ist Sie die erste Datei Operation, die durchgeführt werden müssen. Wenn Öffnen erfolgreich ist, dann nur weitere Operationen sind auf eine Datei möglich. Erst nach dem Öffnen einer Datei, die Variablen in der Dateistruktur für die Verarbeitung verfügbar. FILE STATUS Variable wird nach jeder Dateioperation aktualisiert.

Syntax

OPEN "mode" file-name.

Hier ist Dateiname Zeichenfolgenliteral, die Sie werden verwenden, zum Namen Ihre Datei . Eine Datei kann in den followin Modi geöffnet werden:

Modus Beschreibung
Eingabe Eingabemodus ist für bestehende Dateien verwendet. In diesem Modus kann wir nur die Datei lesen, werden keine anderen Operationen auf die Datei erlaubt..
Ausgang Ausgang Modus wird verwendet, um Datensätze in Dateien einfügen. Wenn ein sequentielle Datei wird verwendet, und die Datei wird halten einige Aufzeichnungen, dann werden die vorhandenen Datensätze und dann neue Einträge in der Datei eingefügt werden gelöscht. Es wird nicht so geschehen im Falle von indexierte Datei oder relativen Datei.
erweitern Extend-Modus wird verwendet, zu Extend-Modus wird verwendet, um Datensätze in einer sequentielle Datei anhängen . In diesem Modus werden die Datensätze am Ende eingefügt. Wenn Dateizugriffsmodus ist Zufall oder dynamische , dann verlängern Modus kann nicht verwendet werden.
I-O Eingabe-Ausgabe-Modus dient zum Lesen und umschreiben Sie die Datensätze einer Datei.

Verb lesen

Verb lesen ist verwendung zu lesen die Dateirekord . Die Funktion von lesen des ist, um Datensätze aus einer Datei zu holen. Bei jedem Lesen Verb, kann nur ein Datensatz in der Dateistruktur ausgelesen werden. Um eine Leseoperation durchzuführen, öffnen Sie die Datei in Modus INPUT oder IO. Bei jedem Lese Anweisung wird der Dateizeiger erhöht und damit die aufeinanderfolgenden Datensätze gelesen werden.

Syntax

Es folgt die Syntax, um die Datensätze zu lesen, wenn die Dateizugriffsmodus sequentiell:

READ file-name NEXT RECORD INTO ws-file-structure
   AT END DISPLAY 'End of File'
   NOT AT END DISPLAY 'Record Details:' ws-file-structure
END-READ.

Im Folgenden werden die Parameter verwendet werden:

  • NEXT RECORD ist optional und wird spezifiziert, wenn eine indizierte sequenzielle Datei wird sequenziell gelesen.

  • INTO-Klausel ist optional. ws-Datei-Struktur ist in der WORKING-STORAGE SECTION definiert, um die Werte aus der READ-Anweisung zu erhalten.

  • Bei Endebedingung wird wahr, wenn das Ende der Datei erreicht ist.

BeispielIm folgenden Beispiel lesen eine vorhandene Datei mit Zeilenfolgeorganisation. Dieses Programm kann kompiliert und ausgeführt werden, mit Versuchen Sie es Option, wo sie alle in der Datei vorhanden Aufzeichnungen angezeigt.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
      FILE-CONTROL.
      SELECT STUDENT ASSIGN TO 'input.txt'
      ORGANIZATION IS LINE SEQUENTIAL.            

DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).

   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
   01 WS-EOF PIC A(1). 

PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      PERFORM UNTIL WS-EOF='Y'
         READ STUDENT INTO WS-STUDENT
            AT END MOVE 'Y' TO WS-EOF
            NOT AT END DISPLAY WS-STUDENT
         END-READ
      END-PERFORM.
   CLOSE STUDENT.
STOP RUN.

nehme an, dass, die Eingabedatei Daten verfügbar in der input.txt Datei enthält folgende:

20003 Mohtashim M.
20004 Nishant Malik
20005 Amitabh Bachhan

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

20003 Mohtashim M.            
20004 Nishant Malik           
20005 Amitabh Bachhan 

Syntax

Im Folgenden ist die Syntax, um einen Leserekord wenn die Dateizugriffsmodus ist zufällig:

READ file-name RECORD INTO ws-file-structure
   KEY IS rec-key
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Details: ' ws-file-structure
END-READ.

Beispiel: Im folgenden Beispiel lesen eine vorhandene Datei mit indexierten Organisation. Dieses Programm kann kompiliert und ausgeführt werden, mit JCL auf Mainframes, wo sie alle in der Datei vorhanden Datensätze anzuzeigen. Auf Mainframes Server verwenden wir keine Textdateien; stattdessen verwenden wir PS-Dateien.

lassen Nehmen wir an, dass die gegenwärtige Datei auf Mainframes haben denselben Inhalt wie input.txt Datei im obigen Beispiel.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO IN1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT.
      01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
     
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).

PROCEDURE DIVISION.
   OPEN INPUT STUDENT.
      MOVE 20005 TO STUDENT-ID.
      
      READ STUDENT RECORD INTO WS-STUDENT-FILE
         KEY IS STUDENT-ID
         INVALID KEY DISPLAY 'Invalid Key'
         NOT INVALID KEY DISPLAY WS-STUDENT-FILE
      END-READ.
      
   CLOSE STUDENT.
STOP RUN.

JCL oben COBOL-Programm zu ausführen:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=STUDENT-FILE-NAME,DISP=SHR

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

20005 Amitabh Bachhan 

Schreiben Verb

schreiben Verb wird verwendet, um Datensätze in einer Datei einzufügen. Sobald der Satz geschrieben, ist es in der Aufnahmepuffer nicht mehr verfügbar. Vor dem Einfügen von Datensätzen in die Datei, bewegen Sie Werte in die Datensatzpuffer und führen Sie dann Schreib Verb.

Write-Anweisung kann mit FROM Option verwendet werden, um direkt schreiben Aufzeichnungen aus den Arbeitsspeichergrößen werden. Von ist eine optionale Klausel. Wenn der Zugriffsmodus sequentiell, dann, um einen Datensatz zu schreiben, s die Datei muss im Ausgabemodus öffnen oder Extend-Modus. Wenn der Zugriffsmodus ist zufällig oder dynamisch, dann, um einen Datensatz zu schreiben, müssen Sie die Datei im Ausgabemodus oder IO-Modus zu öffnen.

Syntax

Im Anschluss ist die Syntax zum Datensatz zu lesen, wenn die Dateiorganisation ist sequentiell:

WRITE record-buffer [FROM ws-file-structure]
END-WRITE.

Im Folgenden ist die Syntax, um einen Datensatz zu lesen, wenn die Dateiorganisation indiziert oder relativen:

WRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Inserted'
END-WRITE.

Beispiel: Das folgende Beispiel zeigt, wie Sie einen neuen Datensatz in eine neue Datei einfügen, wenn die Organisation ist sequentiell.

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO OUT1
      ORGANIZATION IS SEQUENTIAL
      ACCESS IS SEQUENTIAL
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(5).
      05 NAME PIC A(25).
      05 CLASS PIC X(3).

   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN EXTEND STUDENT.
      MOVE 1000 TO STUDENT-ID.
      MOVE 'Tim' TO NAME.
      MOVE '10' TO CLASS.
      WRITE STUDENT-FILE
      END-WRITE.	
   CLOSE STUDENT.
STOP RUN.

JCL oben COBOL-Programm zu ausführen:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=(NEW,CATALOG,DELETE)

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

1000 Tim         10

Umschreiben Verb

Rewrite Verb wird verwendet, um die Datensätze zu aktualisieren. Datei sollte in IO-Modus schreiben Operationen geöffnet werden. Es kann nur nach einer erfolgreichen Operation Lesen verwendet werden. Rewrite Verb überschreibt der letzte Datensatz zu lesen.

Syntax

Im Anschluss ist die Syntax zum Datensatz zu lesen, wenn die Dateiorganisation ist sequentiell:

REWRITE record-buffer [FROM ws-file-structure]
END-REWRITE.

Im Folgenden ist die Syntax, um einen Datensatz zu lesen, wenn die Dateiorganisation indiziert oder relativ:

REWRITE record-buffer [FROM ws-file-structure]
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Updated'
END-REWRITE.

Beispiel: Das folgende Beispiel zeigt, wie eine vorhandene Aufzeichnung, die wir in früheren Schreibschritt eingelegt haben, zu aktualisieren:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO IN1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(4).
      05 NAME PIC A(12).
      05 CLASS PIC X(3).
      
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN I-O STUDENT.
   MOVE '1000' TO STUDENT-ID.
  
   READ STUDENT
      KEY IS STUDENT-ID
      INVALID KEY DISPLAY ‘KEY IS NOT EXISTING’
   END-READ.
  
   MOVE 'Tim Dumais' TO NAME.
   REWRITE STUDENT-FILE
   END-REWRITE.
   CLOSE STUDENT.
STOP RUN.

JCL oben COBOL-Programm zu ausführen:

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//IN1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Wenn Sie kompilieren und führen Sie das obige Programm, wird es den Datensatz zu aktualisieren:

1000 Tim Dumais  10

Löschen Verb

Löschen Verb kann nur auf indizierte und relative Dateien durchgeführt werden. Die Datei muss im I-O-Modus geöffnet werden. In sequentiellen Dateiorganisation, können Datensätze nicht gelöscht werden. Der Rekord letzten durch die Aussage lesen gelesen wird bei sequenziellen Zugriffsmodus gelöscht. Im Direktzugriff-Modus, geben Sie die Aufnahmetaste und führen Sie dann den Löschvorgang.

Syntax

Es folgt die Syntax, um einen Datensatz zu löschen:

DELETE file-name RECORD
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'Record Deleted'
END-DELETE.

Beispiel , um einen vorhandenen Datensatz zu löschen:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
   SELECT STUDENT ASSIGN TO OUT1
      ORGANIZATION IS INDEXED
      ACCESS IS RANDOM
      RECORD KEY IS STUDENT-ID
      FILE STATUS IS FS.

DATA DIVISION.
   FILE SECTION.
   FD STUDENT
   01 STUDENT-FILE.
      05 STUDENT-ID PIC 9(4).
      05 NAME PIC A(12).
      05 CLASS PIC X(3).
   WORKING-STORAGE SECTION.
   01 WS-STUDENT.
      05 WS-STUDENT-ID PIC 9(5).
      05 WS-NAME PIC A(25).
      05 WS-CLASS PIC X(3).

PROCEDURE DIVISION.
   OPEN I-O STUDENT.
   MOVE '1000' TO STUDENT-ID.
   
   DELETE STUDENT RECORD
      INVALID KEY DISPLAY 'Invalid Key'
      NOT INVALID KEY DISPLAY 'Record Deleted'
   END-DELETE.
   
   CLOSE STUDENT.
STOP RUN.

JCL oben COBOL-Programm zu ausführen

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS=A,MSGCLASS=C
//STEP1 EXEC PGM=HELLO
//OUT1 DD DSN=OUTPUT-FILE-NAME,DISP=SHR

Wenn Sie kompilieren und führen Sie das obige Programm, es produziert das folgende Ergebnis:

Record Deleted

Start Verb

Starten Verb kann nur auf indizierte und relative Dateien durchgeführt werden. Es wird verwendet, um den Dateizeiger auf einen bestimmten Datensatz zu platzieren. Der Zugriffsmodus muss sequentiellen oder dynamisch sein. Die Datei muss in der I-O oder Eingabemodus geöffnet werden.

Syntax

Es folgt die Syntax, um den Zeiger zu einem bestimmten Protokoll geben:

START file-name KEY IS [=, >, <, NOT, <= or >=] rec-key
   INVALID KEY DISPLAY 'Invalid Key'
   NOT INVALID KEY DISPLAY 'File Pointer Updated'
END-START.

Schließen Verb

Schließen Verb wird verwendet, um eine Datei zu schließen. Nach der Durchführung Close Betrieb die Variablen in der Dateistruktur sind somit nicht für die Verarbeitung zur Verfügung. Die Verbindung zwischen Programm und Datei verloren.

Syntax

Es folgt die Syntax, um eine Datei zu schließen:

CLOSE file-name.
Advertisements