Sotkuisten aineistojen siivoamisesta

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Seppo Mustonen
Sähköposti:    -
Päiväys: 12.6.2008 10:21

Tiedän, että edistyneet Survon käyttäjät osaavat mm. laajan toimitus-
kentän välityksellä puhdistaa ja korjailla maailmalta heille
kantautuneita datatiedostoja esitys- ja analysointikelpoiseen kuntoon.

Marjutille tuli äskettäin vastaan kuitenkin tilanne, jota olisi ollut
hankala hoitaa tähänastisin keinoin. On kyse todella suurista
ns. unicode-muodossa olevista tiedostoista, jotka eivät "mahdu Exceliin"
eikä niitä sitäkään kautta pystytä siirtämään Survoon.

Tutustuttuani tilanteeseen päätin tehdä laajennuksen Survon CODES-
toimintoihin, jotka tähän asti on tarkoitettu lähinnä omituisten
tiedostojen rakenteen tarkkailuun, koska niillä näkee tiedoston
sisällön tavu tavulta ja tuota sisältöä voi myös muuttaa.

Nyt tarvittiin kuitenkin hieman rajumpia keinoja aineiston siivoamiseen.

Kuvaan CODES-toimintoja hyvin suppean esimerkin avulla, joka
silti riittää kertomaan kaiken olennaisen.
Teen esimerkkitiedoston TESTI.TXT komennon CODES SAVE avulla:

FILE DEL TESTI.TXT   / Mahdollinen aikaisempi TESTI.TXT hävitetään.
CODES SAVE TESTI.TXT / BYTES=22
     0   255    .  ˙   / Alussa kaksi
     1   254    .      / tavua "roskaa"
     2    83    .  S
     3     0    .  .
     4    85    .  U
     5     0    .  .
     6    82    .  R
     7     0    .  .
     8    86    .  V
     9     0    .  .
    10    79    .  O
    11     0    .  .
    12    32    .  .
    13     0    .  .
    14    77    .  M
    15     0    .  .
    16    77    .  M
    17     0    .  .
    18    13    .  .   / "telan palautus"
    19     0    .  .
    20    10    .  .   / "rivin siirto"
    21     0    .  .

Tiedostoon tulee siis 22 tavua, jotka on listattu allekkain.
Alussa on pari häiritsevää tavua ja sen jälkeen teksti SURVO MM,
jonka perässä on siirto uudelle riville.
Jokaisen merkin jälkeen on 0-merkki, joka on täysin tarpeeton
silloin, kun tiedosto sisältää pelkästään tavalliseen ascii-koodiston
merkkejä, siis numeroita, kirjaimia A-Z,a-z, tavanomaisia välimerkkejä
ja tiettyjä kontrollimerkkejä kuten rivinsiirtoon tarkoitetut.
Unicode-esitys on tarpeen vain silloin, kun samaan tiedostoon
halutaan tallentaa mm. eri kielille ominaisia erikoiskirjaimia ja
muita merkkejä.

Tiedostoa ei pysty katselemaan Survossa suoraan SHOW-komennolla eikä
sitä saa poimituksi toimituskenttään LOADP- (tai vastaavilla)
komennoilla. CODES LOAD sen osaa ja näyttää tiedoston sisällön juuri
yllä näkyvässä muodossa (ilman rivikohtaisia kommentteja).

Uuden CODES REMOVE -komennon avulla tiedosto saadaan lukukelpoiseen
muotoon kahdessa vaiheessa.
Ensin poistetaan kaksi ensimmäistä turhaa tavua:

CODES REMOVE TESTI.TXT,TESTI2.TXT,0,1

(Yleisesti: jos halutaan poistaa tavut T1,T1+1,T1+2,...,T2, kaksi
 viimeistä parametria ovat T1,T2.)

Supistettu tiedosto on TESTI2.TXT (TESTI.TXT säilyy eikä uutta saa
yrittää panna alkuperäisen paikalle) ja se listattuna CODES LOAD
-komennolla on

CODES LOAD TESTI2.TXT / BYTES=20
     0    83    .  S
     1     0    .  .
     2    85    .  U
     3     0    .  .
     4    82    .  R
     5     0    .  .
     6    86    .  V
     7     0    .  .
     8    79    .  O
     9     0    .  .
    10    32    .  .
    11     0    .  .
    12    77    .  M
    13     0    .  .
    14    77    .  M
    15     0    .  .
    16    13    .  .
    17     0    .  .
    18    10    .  .
    19     0    .  .
 input output

Viimeinen "input output" -rivi on muistuttaa siitä, että CODES-
komentojen aivan alkuperäinen käyttötarkoitus oli koodimuunnos-
tiedostojen teko ja editointi.

Lopuksi turhat nollatavut poistetaan käyttäen CODES REMOVE:n toista
muotoa

CODES REMOVE TESTI2.TXT,TESTI3.TXT,STEP,2

jolloin "joka toinen" tavu poistuu ja uusin tiedosto TEKSTI3.TXT on
tarkalleen seuraava:

CODES LOAD TESTI3.TXT / BYTES=10
     0    83    .  S
     1    85    .  U
     2    82    .  R
     3    86    .  V
     4    79    .  O
     5    32    .  .
     6    77    .  M
     7    77    .  M
     8    13    .  .
     9    10    .  .
 input output

Nyt toimii SHOW ja esim. LOADP antaa

LOADP TESTI3.TXT
SURVO MM

                     * * *

Jotta tällaiset tavukohtaiset tiedostojen muokkaukset olisivat
vielä mukavampia, ohjelmoin lisäksi uuden CODES COPY -komennon,
joka tekee osittaiskopion.

Esim.
CODES COPY TESTI3.TXT,TESTI4.TXT,3,7
kopioi tiedoston TESTI3.TXT tavut 3,4,5,6,7 tiedostoksi TESTI4.TXT,
jonka sisältö on täsmälleen

CODES LOAD TESTI4.TXT / BYTES=5
     0    86    .  V
     1    79    .  O
     2    32    .  .
     3    77    .  M
     4    77    .  M
 input output

Näin on mahdollista paloitella (suuri) tiedosto mielivaltaisiin osiin,
joita voi sitten yhdistellä  käyttöjärjestelmän COPY-komennolla tyyliin

>COPY TESTI3.TXT+TESTI4.TXT,TESTI5.TXT

CODES LOAD TESTI5.TXT / BYTES=15
     0    83    .  S
     1    85    .  U
     2    82    .  R
     3    86    .  V
     4    79    .  O
     5    32    .  .
     6    77    .  M
     7    77    .  M
     8    13    .  .
     9    10    .  .
    10    86    .  V
    11    79    .  O
    12    32    .  .
    13    77    .  M
    14    77    .  M
 input output

Muistutan vielä siitä, että Survossa on (suurten) tiedostojen
pilkkomiseen ja yhdistelyyn myös toinen tie PCOPY-komennolla kts.
PCOPY?
ja huomaa, että annettu esimerkki on kotoisin ajalta, jolloin
koneilla ei ollut välttämättä CD/DVD-asemaa, mutta sen sijaan
levykeasema, jossa levyn kapasiteetti oli 1.4 megatavua.
Esimerkki kelpaa silti malliksi nykyisiinkin kuvioihin.

                     * * *

Mainitsemani CODES REMOVE/COPY -uutuudet tulevat voimaan
SURVO MM:n versiosta 2.56 lähtien, mutta Survon ohjelmatiedoston
&EDI3.EXE saa kopioiduksi aikaisempiinkin (SURVO MM) versioihin
osoitteesta
http://www.survo.fi/tmp/ EDI3.EXE 

Vastaukset:
[ei vastauksia]

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.