>>I eventually (after too many hours in front of my G3) managed to fix the >>problem (at least for now) >> >>I don't know how to explain what I did but I now know what I need to do to >>keep the DCOD and calling app happy (I think?) >> >>All I know is that it relates to where the shared globals memory is defined. > > Shared globals? Sorry, there ain't no such thing. It works like this: BIG SNIP > HTH > Mark I had the same globals declared in the app and the DCOD. like this: DIM RECORD shared DIM 255 aString1$ DIM 255 bString$ DIM END RECORD _sharedSz To pass the same Globals (or to share them) between the app and the DCOD, when I called the DCOD, I passed the address of the "shared" globals in the app to the DCOD, and then the DCOD did a blockmove to copy the values in the Globals in the app to the DCOD's globals (Not all the globals in the app are copied over just a few) This was what was a major source of the problems There were other probs too. Now I create a handle the size of the DIM REC (except the DIM REC it's self doesn't allocate memory) in the app and and pass the handle to the DCOD and then the DCOD uses the app's version of the DIM REC to do things. like this: DIM RECORD shared DIM 255 aString1$ DIM 255 bString$ DIM END RECORD .sharedSz h& = fn newhandle _clear (sharedSz) h&..aString$ = "some text" And now all seems well P...