[COBOL] error 93

Pagina: 1
Acties:

  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Heb een proggie gemaakt dat een sequentieel bestand inleest (ARTIKEL) daarbij gegevens aan een gekoppeld (geindexeerd) bestand (BESTELIND) inleest en deze wegschrijft naar een ander geindexeerd bestand (BESTELINDOUT).

Bij het laatste zit het probleem. Hij geeft namelijk elke keer bij het runnen (comileren gaat prima) error 93 (File locked by another user). Er snap hier niks van. Kan iemand mij dit uitleggen?

COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
       BB-INIT SECTION.
       BB-00.
           OPEN INPUT BESTELIND.
           OPEN INPUT ARTIKEL.
           OPEN OUTPUT BESTELINDOUT.
       BB-99.
           EXIT.
       
       CC-VERWERK SECTION.
       CC-00.
           MOVE A-NUM TO BI-ARTNUM
           READ BESTELIND, KEY IS BI-ARTNUM,
               INVALID KEY
                   DISPLAY "NIET";
               NOT INVALID KEY
                   DISPLAY "GEVONDEN";
               MOVE BI-AANTAL TO B0-AANTAL
               MOVE BI-ARTNUM TO B0-ARTNUM
               MOVE A-NAAM TO BO-ARTNAAM
               WRITE BESTELINDOUT-RECORD
                   INVALID KEY
                       DISPLAY "invl key";
               END-WRITE
           END-READ
           READ ARTIKEL AT END MOVE 1 TO EOF.
       CC-99.
       EXIT.
       
       DD-SLUIT SECTION.
       DD-10.
           CLOSE BESTELIND.
           CLOSE ARTIKEL.
           CLOSE BESTELINDOUT.
       DD-99.
           EXIT.

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
Er heeft nog iemand anders (of een ander programma ) een lock op die file.
Waarschijnljik heeft een ander programma die die file ook gebruikt, die file niet mooi afgesloten bij het beeindigen.

[ Voor 45% gewijzigd door whoami op 24-01-2003 14:11 ]

https://fgheysels.github.io/


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Nee, dat is het nou juist. Ik kan gewoon zelf alles met de file doen, maar dat proggie blijkbaar niet. Het lijkt er op dat ie het zelf locked ofzo, maar waarom.. geen idee.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Liqued schreef op 24 January 2003 @ 14:09:
Heb een proggie gemaakt dat een sequentieel bestand inleest (ARTIKEL) daarbij gegevens aan een gekoppeld (geindexeerd) bestand (BESTELIND) inleest en deze wegschrijft naar een ander geindexeerd bestand (BESTELINDOUT).

Bij het laatste zit het probleem. Hij geeft namelijk elke keer bij het runnen (comileren gaat prima) error 93 (File locked by another user). Er snap hier niks van. Kan iemand mij dit uitleggen?

COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
       BB-INIT SECTION.
       BB-00.
           OPEN INPUT BESTELIND.
           OPEN INPUT ARTIKEL.
           OPEN OUTPUT BESTELINDOUT.
       BB-99.
           EXIT.
       
       CC-VERWERK SECTION.
       CC-00.
           MOVE A-NUM TO BI-ARTNUM
           READ BESTELIND, KEY IS BI-ARTNUM,
               INVALID KEY
                   DISPLAY "NIET";
               NOT INVALID KEY
                   DISPLAY "GEVONDEN";
               MOVE BI-AANTAL TO B0-AANTAL
               MOVE BI-ARTNUM TO B0-ARTNUM
               MOVE A-NAAM TO BO-ARTNAAM
               WRITE BESTELINDOUT-RECORD
                   INVALID KEY
                       DISPLAY "invl key";
               END-WRITE
           END-READ
           READ ARTIKEL AT END MOVE 1 TO EOF.
       CC-99.
       EXIT.
       
       DD-SLUIT SECTION.
       DD-10.
           CLOSE BESTELIND.
           CLOSE ARTIKEL.
           CLOSE BESTELINDOUT.
       DD-99.
           EXIT.
Misschien een idee om aan te geven op welk systeem? Verder zou ik BESTELINDOUT I-O openen.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Liqued schreef op 24 januari 2003 @ 14:12:
Nee, dat is het nou juist. Ik kan gewoon zelf alles met de file doen, maar dat proggie blijkbaar niet. Het lijkt er op dat ie het zelf locked ofzo, maar waarom.. geen idee.
Waarschijnlijk probeert het systeem wat key-info terug te geven (daarom ook dat ik je in mijn vorige post aanraadde het betreffende bestand I-O te openen).

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Misschien een idee om aan te geven op welk systeem? Verder zou ik BESTELINDOUT I-O openen
Heb ik dus gedaan en kreeg een ander foutmelding, namelijk:
File error 39,01 (Existing file conflicts with Cobol FD.)

COBOL:
1
2
3
4
5
6
7
8
       FD  BESTELINDOUT
            LABEL RECORDS STANDARD
            DATA RECORD BESTELINDOUT-RECORD
            VALUE OF FILE-ID IS "BESTEL.OUT".
       01 BESTELINDOUT-RECORD.
           03 BO-AANTAL             PIC 9(05).
           03 BO-ARTNUM             PIC 9(04).
           03 BO-ARTNAAM            PIC X(12).


Grotes en type zijn correct.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Liqued schreef op 24 januari 2003 @ 14:33:
[...]
Heb ik dus gedaan en kreeg een ander foutmelding, namelijk:
File error 39,01 (Existing file conflicts with Cobol FD.)

COBOL:
1
2
3
4
5
6
7
8
       FD  BESTELINDOUT
            LABEL RECORDS STANDARD
            DATA RECORD BESTELINDOUT-RECORD
            VALUE OF FILE-ID IS "BESTEL.OUT".
       01 BESTELINDOUT-RECORD.
           03 BO-AANTAL             PIC 9(05).
           03 BO-ARTNUM             PIC 9(04).
           03 BO-ARTNAAM            PIC X(12).


Grotes en type zijn correct.
Als je een bestand I-O opent, moet het natuurlijk wel aanwezig zijn (onder DOS was er een OPTIONAL clause, vandaar ook mijn vraag op welk systeem). Tevens zie ik geen info over wat de (al dan niet) unieke sleutel is.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
Ik draai het onder windows XP.

En in de filecontrole heb ik dit staat:
COBOL:
1
2
3
4
5
           SELECT BESTELINDOUT ASSIGN TO DISK
                  ORGANIZATION IS INDEXED
                  RECORD KEY IS BO-ARTNUM
                  FILE STATUS IS FILE-STATUS
                  ACCESS MODE IS SEQUENTIAL.


Is dat niet voldoende?

Verwijderd

Even een vraagje. Het bestand BESTELINDOUT bestaat dat al op het moment van starten? Zo ja dan kan ik me voorstellen dat deze foutmelding verschijnt. Je moet het bestand dan I-O openen.
Succes !!!

Jan.
Liqued schreef op 24 januari 2003 @ 14:09:
Heb een proggie gemaakt dat een sequentieel bestand inleest (ARTIKEL) daarbij gegevens aan een gekoppeld (geindexeerd) bestand (BESTELIND) inleest en deze wegschrijft naar een ander geindexeerd bestand (BESTELINDOUT).

Bij het laatste zit het probleem. Hij geeft namelijk elke keer bij het runnen (comileren gaat prima) error 93 (File locked by another user). Er snap hier niks van. Kan iemand mij dit uitleggen?

COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
       BB-INIT SECTION.
       BB-00.
           OPEN INPUT BESTELIND.
           OPEN INPUT ARTIKEL.
           OPEN OUTPUT BESTELINDOUT.
       BB-99.
           EXIT.
       
       CC-VERWERK SECTION.
       CC-00.
           MOVE A-NUM TO BI-ARTNUM
           READ BESTELIND, KEY IS BI-ARTNUM,
               INVALID KEY
                   DISPLAY "NIET";
               NOT INVALID KEY
                   DISPLAY "GEVONDEN";
               MOVE BI-AANTAL TO B0-AANTAL
               MOVE BI-ARTNUM TO B0-ARTNUM
               MOVE A-NAAM TO BO-ARTNAAM
               WRITE BESTELINDOUT-RECORD
                   INVALID KEY
                       DISPLAY "invl key";
               END-WRITE
           END-READ
           READ ARTIKEL AT END MOVE 1 TO EOF.
       CC-99.
       EXIT.
       
       DD-SLUIT SECTION.
       DD-10.
           CLOSE BESTELIND.
           CLOSE ARTIKEL.
           CLOSE BESTELINDOUT.
       DD-99.
           EXIT.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

De laatste keer dat ik naar de COBOL standaards keek (standaard 85) moest een record key nog alfanumeriek zijn. Kijk alsjeblieft je documentatie eens na op de OPTIONAL clause. Ik heb net even in wat documentatie gekeken voor de AS/400 aka iSeries en daar staat 'SELECT OPTIONAL ...', wat ervoor zorgt dat afwezige bestanden die I-O of EXTEND worden geopend alsnog worden aangemaakt. Misschien ook nog wel handig om te vertellen welke compiler je gebruikt.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Verwijderd schreef op 24 January 2003 @ 14:51:
Even een vraagje. Het bestand BESTELINDOUT bestaat dat al op het moment van starten? Zo ja dan kan ik me voorstellen dat deze foutmelding verschijnt. Je moet het bestand dan I-O openen.
Succes !!!

Jan.
[...]
Niet relevant, met OPEN OUTPUT wordt een aanwezig bestand verwijderd en opnieuw aangemaakt (volgens de COBOL standaard, sommige systemen maken het bestand alleen maar leeg). Zie verder ook mijn posts.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Liqued
  • Registratie: Februari 2001
  • Laatst online: 09-01 18:51
ik wordt er echt helemaal 8)7 van. Snap er geen donder van. Als ik die file weghaal zegt ie file not found en anders Existing file conflicts with Cobol FD.

Ik zal het eens allemaal neer gooien (ben echt wanhopig.. :'( ).

COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
       IDENTIFICATION DIVISION.

       PROGRAM-ID.    nogintevullen.
       AUTHOR.        aj.
       DATE-WRITTEN.  24-01-2003.
       DATE-COMPILED.

       ENVIRONMENT DIVISION.

       CONFIGURATION SECTION.
       SOURCE-COMPUTER.      IBM-PC.
       OBJECT-COMPUTER.      IBM-PC.

       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT BESTELIND ASSIGN TO DISK
               ORGANIZATION IS INDEXED
               RECORD KEY IS BI-ARTNUM
               FILE STATUS IS FILE-STATUS
               ACCESS MODE IS RANDOM.
           SELECT BESTELINDOUT ASSIGN TO DISK
                  ORGANIZATION IS INDEXED
                  RECORD KEY IS BO-ARTNUM
                  FILE STATUS IS FILE-STATUS
                  ACCESS MODE IS SEQUENTIAL.
           SELECT ARTIKEL ASSIGN TO DISK
                  ORGANIZATION IS LINE SEQUENTIAL.
      
       DATA DIVISION.

       FILE SECTION.
       FD  BESTELIND
            LABEL RECORDS STANDARD
            DATA RECORD BESTELIND-RECORD
            VALUE OF FILE-ID IS "BESTEL.IND".
       01 BESTELIND-RECORD.
           03 BI-AANTAL             PIC 9(05).
           03 BI-ARTNUM             PIC 9(04).

       FD  BESTELINDOUT
            LABEL RECORDS STANDARD
            DATA RECORD BESTELINDOUT-RECORD
            VALUE OF FILE-ID IS "BESTEL.OUT".
       01 BESTELINDOUT-RECORD.
           03 BO-AANTAL             PIC 9(05).
           03 BO-ARTNUM             PIC 9(04).
           03 BO-ARTNAAM            PIC X(12).
       
       FD  ARTIKEL
           LABEL RECORDS STANDARD
           DATA RECORD ARTIKEL-RECORD
           VALUE OF FILE-ID IS "ARTIKEL.SEQ".
       01 ARTIKEL-RECORD.
           03 A-NUM                PIC 9(04).
           03 A-POS                PIC 9(02).
           03 A-NAAM               PIC X(12).
           03 A-SIZE               PIC 9(07).
           03 A-DATUM              PIC 9(08).
           03 A-OMSCHRIJVING       PIC X(44).
           03 A-ARTAANTAL          PIC 9(02).
           03 A-LEVNUMMER          PIC 9(02).
      
       WORKING-STORAGE SECTION.
       01 EOF                     PIC 9 VALUE ZERO.
          88 EINDEBESTAND         VALUE 1.
       01 FILE-STATUS             PIC X(02).
      
       PROCEDURE DIVISION.
       AA-MAIN SECTION.
       AA-00.
           PERFORM BB-INIT.
           PERFORM CC-VERWERK UNTIL EINDEBESTAND.
           PERFORM DD-SLUIT.
       AA-99.
           STOP RUN.
       
       BB-INIT SECTION.
       BB-00.
           OPEN INPUT BESTELIND.
           OPEN INPUT ARTIKEL.
           OPEN I-O BESTELINDOUT.
       BB-99.
           EXIT.
       
       CC-VERWERK SECTION.
       CC-00.
           MOVE A-NUM TO BI-ARTNUM
           READ BESTELIND, KEY IS BI-ARTNUM,
               INVALID KEY
                   DISPLAY "NIET";
               NOT INVALID KEY
                   DISPLAY "GEVONDEN";
               MOVE A-NAAM TO BO-ARTNAAM
               MOVE BI-AANTAL TO BO-AANTAL
               MOVE BI-ARTNUM TO BO-ARTNUM
               WRITE BESTELINDOUT-RECORD
                   INVALID KEY
                       DISPLAY "invl key";
               END-WRITE
           END-READ
           READ ARTIKEL AT END MOVE 1 TO EOF.
       CC-99.
       EXIT.
       
       DD-SLUIT SECTION.
       DD-10.
           CLOSE BESTELIND.
           CLOSE ARTIKEL.
           CLOSE BESTELINDOUT.
       DD-99.
           EXIT.

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Liqued schreef op 24 January 2003 @ 15:01:
ik wordt er echt helemaal 8)7 van. Snap er geen donder van. Als ik die file weghaal zegt ie file not found en anders Existing file conflicts with Cobol FD.

Ik zal het eens allemaal neer gooien (ben echt wanhopig.. :'( ).
[...]
Recapitulatie van mijn suggesties:
1) Bestand als optional definiëren (SELECT OPTIONAL BESTELINDOUT ASSIGN TO DISK)
2) Bestand I-O openen.
3) De laatste keer dat ik naar de COBOL standaards keek (standaard 85) moest een record key nog alfanumeriek zijn, dus ik zou een groepsveld boven je huidige sleutelveld hangen en dat groepsveld benoemen als sleutel.

code aanpassingen:
COBOL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
           SELECT OPTIONAL BESTELINDOUT ASSIGN TO DISK
                  ORGANIZATION IS INDEXED
                  RECORD KEY IS BO-ARTNUM-X
                  FILE STATUS IS FILE-STATUS
                  ACCESS MODE IS SEQUENTIAL.

       FD  BESTELINDOUT
            LABEL RECORDS STANDARD
            DATA RECORD BESTELINDOUT-RECORD
            VALUE OF FILE-ID IS "BESTEL.OUT".
       01 BESTELINDOUT-RECORD.
           03 BO-AANTAL              PIC 9(05).
           03 BO-ARTNUM-X
               05 BO-ARTNUM          PIC 9(04).
           03 BO-ARTNAAM            PIC X(12).



Aanvulling: Ik zou ACCESS MODE DYNAMIC gebruiken.

[ Voor 35% gewijzigd door Freee!! op 24-01-2003 15:30 . Reden: Code toegevoegd ]

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Oeps, dat was Quote ipv Edit :? 8)7 |:(

gecorrigeerd.

[ Voor 99% gewijzigd door Freee!! op 24-01-2003 15:31 ]

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:57

Dido

heforshe

1) Het sleutelveld moet iig alfanumeriek zijn.
2) Het is een goede gewoonte om in je init een eerste LEES te doen, en vervolgens NA ieder verwerkt record weer een lees. Dit om problemen bij EOF te vermijden.
3) Conflict met FD kan erop wijzen dat het bestaande bestand dus niet aan de beschrijving in je prog voldoet. Bestaat het al? Dan is de vraag wat de gedefinieerde recordlengte e.d. zijn...
Hoe maak je dat bestand aan?

Wat betekent mijn avatar?


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Dido schreef op 24 January 2003 @ 15:43:
[...]
2) Het is een goede gewoonte om in je init een eerste LEES te doen, en vervolgens NA ieder verwerkt record weer een lees. Dit om problemen bij EOF te vermijden.
[...]
Volkomen waar, maar dat is programma-structuur (dit eenvoudige programma werkt nog wel zoals het is)

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 17:57

Dido

heforshe

Mr. Liu schreef op 24 January 2003 @ 15:49:
Volkomen waar, maar dat is programma-structuur (dit eenvoudige programma werkt nog wel zoals het is)

Het enige is dat het -toevallig- niet fout gaat... wat is het eerste record dat verwerkt wordt? Inderdaad: geen, want er is nog geen lees op ARTIKEL geweest :P

TS: weet je zeker dat je je bestand niet open hebt staan in een editor ofzo? Nogmaals: hoe maak je het aan, wat voor file-system gebruik je?

OUTPU gebruik je als het bestand niet bestaat, maar het is meestal handiger om dat vanuit job-control te laten regelen (definitie dus) wanneer het gaat om een geindexeerd bestand.

Wat betekent mijn avatar?


  • Freee!!
  • Registratie: December 2002
  • Laatst online: 16:25

Freee!!

Trotse papa van Toon en Len!

Dido schreef op 24 januari 2003 @ 16:02:
[...]
TS: weet je zeker dat je je bestand niet open hebt staan in een editor ofzo? Nogmaals: hoe maak je het aan, wat voor file-system gebruik je?

OUTPUT gebruik je als het bestand niet bestaat, maar het is meestal handiger om dat vanuit job-control te laten regelen (definitie dus) wanneer het gaat om een geindexeerd bestand.
TS gebruikt WinXP, geloof niet dat daar iets van job-control in zit.

[ Voor 30% gewijzigd door Freee!! op 27-01-2003 11:57 ]

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT

Pagina: 1