Toon posts:

[REXX] fouten in stem variabelen

Pagina: 1
Acties:

Verwijderd

Topicstarter
OK, ik heb hier nog nooit een rexx-topic gezien, dus misschien eerst even een beetje informatie over REXX :

REXX is een interpreted scripttaal van IBM. Het is dus GEEN batch-script met OS specifieke zaken, REXX is ontworpen als een platform onafhankelijke scripttaal en is voor de meeste OSsen beschikbaar.

De door mij gebruikte REXX interpreter is :
IBM Object REXX Interpreter Version 1.0.2.2 (op Windows NT 4.0 SP6a)
Build date: Jul 9 1998

Het probleem is enigszins wazig, dus ik zal wat achtergrondinformatie geven.

Achtergrond: Het gaat om een REXX script voor het bepalen van verschillen tussen bestanden op de harde schijf van een desktop machine en gegevens over de 'vorige inhoud' van de harde schijf op die machine die verzameld zijn in een set administratiebestanden.

Probleem: Het door mij gebruikte script maakt een lijst van alle bestanden op de harde schijf, bepaalt van al deze bestanden de 16 bits CRC en schrijft deze informatie in het geheugen weg in een stem variabele met name-indexing (d.w.z. dat de naam van de variabele gelijk is aan de naam van het bestand waar het om gaat, bv. files.c:\winnt\system32\drivers\etc\hosts als variabele naam)
Dit wordt vervolgens ook gedaan met de gegevens uit de administratiebestanden. Ik heb dan dus twee hele grote stem variabelen met gegevens die ik vervolgens ga vergelijken. Dat gaat soms goed, maar soms ook niet. Dan krijg ik als resultaat bijvoorbeeld 1000x hetzelfde bestand als gewijzigd, of 1000x een lege bestandsnaam als gewijzigd. Ik heb het script al redelijk lang in gebruik, en de fouten komen steeds meer voor. Op sommige machines (de langzamere met wat minder geheugen) gaat het intussen bijna altijd fout. Ik heb het script van voor naar achter doorgeploegd, en alle tussentijdse output laten loggen, en nou blijkt het eigenlijk fout te gaan in de memory access. Ik vraag dus een variabele op en dan klopt er gewoon ineens niks meer van de waarde die er in staat. Het lijkt er op dat de REXX interpreter ergens over z'n nek gaat omdat de stem variabelen te groot zijn (komt alleen voor bij indexed variabelen, omdat 'ie daarvoor intern hashtables moet genereren). Ook is hij bij het genereren van de stems erg traag, hij doet over de 10000e variabele veel langer dan over de eerste, iets wat niet onlogisch is als er hashtables gegenereerd moeten worden.

Mijn vraag is nou : heeft iemand dit probleem ooit eerder gehad? Is er een workaround/oplossing voor? Ik kon nl. op de mij bekende bronnen op het internet (m.u.v. tweakers dan dus) niks vinden hierover...

Bij voorbaat dank voor de moeite :)

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Geen idee precies, maar zou er een max. lengte zijn aan de variabelenamen? Net als in Basic vroeger (tenminste op de C= 64 ) daar waren er twee significante letters voor de variabelen, de rest werd genegeerd. Dus "AAPJE$" was hetzelfde als "AA$".

Edit: op mijn Amiga heb ik vroeger nog wel wat ARexx geprogd, totdat ik Python had geport :)

[ Voor 21% gewijzigd door PommeFritz op 10-10-2003 23:00 ]

FireFox - neem het web in eigen hand


  • EXX
  • Registratie: Juni 2001
  • Laatst online: 09-08 12:52

EXX

EXtended eXchange

LOL, REXX, dat heb ik ooit nog eens op een IBM mainframe geprogd.

Deze links helpen misschien:

http://www.wrkgrp.com/unirexx/Doc.html
http://users.comlab.ox.ac.uk/ian.collier/Docs/rexx_ref/

For it is the doom of men that they forget...           Huidige en vroegere hardware specs         The Z80 is still alive!


Verwijderd

Topicstarter
@PommeFritz : lengte zou een probleem kunnen zijn, dat ga ik maandag ondervinden (ik heb het script zo gewijzigd dat ie de super inventory files regel voor regel uitleest, dat scheelt nogal in het maken van die stem variabelen)

@EXX : dank voor de links maar die gaan helaas niet over IBM Object Rexx maar over andere rexx interpreters.

Verwijderd

Topicstarter
ter info : lengte is dus niet het probleem (index van 265 karakters gaat uitstekend)
Ik werk wel om het probleem heen, dat is iig de snelste oplossing...