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
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