 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.92 Kraj: Divača (Kačiče)
|
Objavljeno: Sre Nov 08, 2006 6:01 pm Naslov sporočila: Cobol varying record size |
|
|
Ali mogoče kdo ve kako COBOL zapisuje stavke z spremenljivo dolžino na disk ?
Kje in na kak način je zapisana dolžina stavka? _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
frenki Moderator



Pridružen-a: Ned 23 Feb 2003 21:26 Prispevkov: 6736 Aktiv.: 28.37 Kraj: Ljubljana (JN76GB)
|
Objavljeno: Sre Nov 08, 2006 7:12 pm Naslov sporočila: |
|
|
Kolikor se spomnim odvisno od tipa datoteke. Če gre za MF Cobol imaš nekje v rts običajno nekaj na temo fhutil fhinfo s katerim prebereš organizacijo datoteke, pozicijo indexa, dolžino zapisa, ... fh..nekaj.. pa zna reč prekipat tudi v ascii datoteko.
Je že nekaj časa minilo od zadnje uporabe ...
Lp, Frenki |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.66 Kraj: [color=zelena]Ljubljana[/color]
|
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.92 Kraj: Divača (Kačiče)
|
Objavljeno: Čet Nov 09, 2006 11:20 pm Naslov sporočila: |
|
|
Jur to sem že gledal, a mi ne pomaga, ker ne pove kako je stavek zapisan v datoteki.
Imam namreč sledeč problem:
Uničen disk ! Več kot 30 % slabih sektorjev. Uspel sem rešiti nekaj podatkov. Nekatere stvari so cele in delujejo. Ena zelo velika (take imajo manj možnosti) datoteka pa ima napako. Pregled vsebine datoteke pove, da je cca 12 MB podatkov v relativno dobri kondiciji. Nekje v datoteki je okvarjeno par bitov, no recimo by. Lahko celo nekaj recordov. Vsekakor ne toliko, da to bilo opazno v smislu nelogičnih podatkov.
A ker je v datoteki nekaj narobe, s cobol programi ne morem več dostopat do nje. Če bi ugotovil način zapisa stavkov variabilne dolžine, bi stvar verjetno popravil vsaj toliko, da bi izločil pokvarjeni del in prepisal ostalo. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.52
|
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.66 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Pet Nov 10, 2006 11:05 am Naslov sporočila: |
|
|
Cobol sem uporabil pred mnogo leti, na CDC machini (Cyber), tako da nimam idej. Verjetno pa so variabilni zapisi ločeni med seboj z <cr><lf> oziroma 0xa0xd ali kaj podobnega. Z nekim dump programom poglej, kakšno je ločilo med dvema dobrima recordoma. Tam, kjer so napake bo neka oslarija, ki jo popraviš na roke. Na mestu napake pokvarjeno datoteko napolniš z nekim definiranim stringom (na primer AAAAAAAA....), in vmes dodaš vsake toliko časa ločila, da recordi ne bodo predolgi. Cobol bi moral Aje prebrati, programsko pa jih pomečeš stran.
Jur |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.92 Kraj: Divača (Kačiče)
|
Objavljeno: Sob Nov 11, 2006 12:42 pm Naslov sporočila: |
|
|
Ni ravno tako enostavno....
Tudi sam sem mislil, da je delimiter <cr><lf>, pa žal ni. Dodaten problem je v tem, da je rešena datoteka neke vrste arhiv. Algoritem arhiviranja pa ni čisto znan. Vsekakor to ni kak od znanih arhivskh programov. Narejen je pravtako v cobolu. deluje pa nekako takole. Če se v datoteki pojavi zaporedoma več enakih znakov, se jih prešteje, se številu doda 200 in to zapiše kot by naslednji by pove kakšen znak se ponavlja. Omeneni način deluje do 55 ponavljanj. To kar sem povedal je samo del algoritma, ki je meni poznan.
Iz povedanega in pa iz definicije polj, ki jih posedujem sem nekako uspel zaključiti da je record delimiter tu drugačen. In sicer (hex) 40 00 00 xy vw. Pri čemer se xy in vw ne ponavljajo, ampak vsebujejo neko meni nepoznano vsebino. Če pri dekodiranju spustim teh 5by dobim sicer uporabne stavke z vsebino, a so med seboj zamaknjeni za n by. n se giblje med 0 in 7. Preostali prostor, ki predstavlja zamik je popolnjen z nedefinirano vsebino in ne predstavlja koristne informacije.
Za silo bi sicer šlo tako, da bi v stavku iskal znano polje, ki je v vseh stavkih enako in odštel offset tega polja do starta recorda. Na ta način bi določil start vsakega posameznega recorda.
Se pa pri tem načinu bojim kake polomije. Program za to početje imam že narejen. V teku pa je preverjanje tako dobljenih podatkov.
Vsekakor bom povedal kakšni bodo rezultati. _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
jur Član


Pridružen-a: Pet 02 Dec 2005 14:45 Prispevkov: 5142 Aktiv.: 21.66 Kraj: [color=zelena]Ljubljana[/color]
|
Objavljeno: Pon Nov 13, 2006 10:16 am Naslov sporočila: |
|
|
Mogoče je tisti xy vw povezan z dolžino zapisa. Nekako tako kot pascalski stringi: prvi bajt pove dolžino stringa.
Jur |
|
Nazaj na vrh |
|
 |
VolkD Član


 
Pridružen-a: Pet 24 Sep 2004 21:58 Prispevkov: 14228 Aktiv.: 59.92 Kraj: Divača (Kačiče)
|
Objavljeno: Pon Nov 13, 2006 10:47 am Naslov sporočila: |
|
|
Sem že pomislil, in na veliko preverjal, žal brez pametnih rezultatov.
Sem pa uspel rešiti podatke, brez, da bi dojel kako algoritem za dekriptiranje deluje. Tudi zapisa variabilnega stavka cobola nisem potuhtal. Nič zato, to je tako in tako zastarel programski jezik.
Z okvarjenega diska sem rešil več takih arhivskih datotek. Datoteke so starejših datumov.
Primerjava datotek je razen dolžine odkrila kar nekaj razlik v vsebini. Ker se je coboljski program za dearhiviranje pobunil že v prvi tretini datoteke, so me zanimale razlike predvsem tam. Z primerjavo 7 datotek med seboj sem s poskušanjem ustvaril 6 različnih končnih arhivov, ki sem jih s programom potem poskusil rekriptirati.
Pri četrtem mi je uspelo. Kljub temu je v datoteki vidna ena napaka v nazivu nekega artikla. Ostalo naj bi bilo v redu.
Deklica, ki uporablja računalnik v trgovini, je dojela pomen backupa! Backup je torej treba delati, četudi se mesece, leta ne zgodi nič takega. Prej ali slej se bo ! Še posebej, če ga nimaš! _________________ Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 6 dni
Powered by phpBB © 2001, 2005 phpBB Group
|