Das ist wahrscheinlich eine Anfängerfrage, aber es fällt mir immer noch schwer, herauszufinden, wie man Tabellen in Cobol verwendet.Wie verhindere ich den internen Tabellenüberlauf in Cobol?
Momentan schreibe ich ein einfaches Modul, das von anderen Programmen aufgerufen werden kann. Mein Programm muss eine interne Tabelle nach Daten durchsuchen und falls nicht gefunden, hinzufügen.
Ich habe diese Tabelle: 01 TB-1 OCCURS 10 INDEXED X1. 03 CLIENT-NAME PIC N(30). 03 ORDER-NUMBER PIC 9(06).
Natürlich kann ich die Menge erhöhen AUFTRITT so die Wahrscheinlichkeit von Tabellenüberlauf ab. Beim Testen des Moduls muss ich mich jedoch mit dem Szenario befassen, dass ein weiterer Datensatz hinzugefügt werden muss, der nicht in die Tabelle passt.
Was ist der beste Weg, damit umzugehen? Ich dachte daran, einen ABEND zu verhindern, indem ich eine Fehlermeldung zurück gab.
Um dies zu tun, dachte ich, ich würde ein neues Feld definieren und es als Zähler verwenden. Jedes Mal, wenn mein Modul einen Datensatz hinzufügt, fügt es dem Zähler +1 hinzu. Art wie folgt aus:
IF COUNTER < 10 PERFORM ADD-RECORD ELSE DISPLAY 'INPUT HAS EXCEEDED MAX OF 10 OCCURRENCES' GOBACK END-IF .
ADD-RECORD. MOVE INPUT-CLIENT-NAME TO CLIENT-NAME(X1) IN TB-1. MOVE INPUT-ORDER-NUMBER TO ORDER-NUMBER(X1) IN TB-1. ADD +1 TO COUNTER .
Ist dies ein guter Weg, dies zu tun? Hast du noch andere Ideen? Vielen Dank im Voraus für Ihre Hilfe.
Ich denke, Ihr Code sieht aus wie 'SET X1 UP BY 1 INCLUDE-CLIENT-NAME ZU CLIENT-NAME IN TB-1 (X1) "oder' INPUT-CLIENT-NAME zu CLIENT-NAME IN TB-1 (ZÄHLER) ', nicht wahr? –
Sie haben Recht, es ist das erste. Ich habe vergessen, den Index zu erwähnen, oops! – Lena
Welcher COBOL-Compiler? Welches Betriebssystem? – cschneid