[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: |
---|
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!