Title: | -={ H A C K E R S }=- |
Notice: | Write locked - see NOTED::HACKERS |
Moderator: | DIEHRD::MORRIS |
Created: | Thu Feb 20 1986 |
Last Modified: | Mon Aug 03 1992 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 680 |
Total number of notes: | 5456 |
I'm trying to copy a symbol containing control characters into the middle of another symbol containing control characters in DCL. I have two symbols like the ones created by code below. My attempt was to use character replacement (sym[off,wid]:=). What happens is that only two bytes of the eight byte replacement gets put into symbol "a" correctly. The other six bytes are filled with spaces. Apparently, DCL stops copying correctly after it comes to a non- printable character. Why is this? Shouldn't it work? What is the easiest way to do this replacement? Do I have to f$extract to extract and then concatenate back together? -John Hanna - Display Systems Software simple.com: $ a[0,32]=100 $ a[32,32]=200 $ a[64,32]=300 $ a[96,32]=400 $ a[128,32]=500 $ b[0,32]=600 $ b[32,32]=700 $ show sym a $ show sym b $ a[4,8]:="''b'" $ show sym a
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
376.1 | yes, you need F$EXTRACT | SIERRA::OSMAN | and silos to fill before I feep, and silos to fill before I feep | Thu Dec 18 1986 17:18 | 22 |
Yes, my experience is that DCL is lacking in this area, and indeed you need to extract and piece back together. For example: $ string = "yyyyy" $ new_middle = "x""x" $ string = f$extract(0,1,string) + new_middle + f$extract(4,1,string) If you attempt the above example with the $ string[...]:= construct, you run into trouble, either with the quote mark, or with inadvertant up-casing. The problem seems to be that DCL usually has both a "=" and a ":=" construct, but it has "[]:=" but no "[]=". Hence to get the privilege of "[]", you're forced into putting up with the vulgarities of ":=" (such as up-casing). /Eric |