minow@thundr.dec.com (Martin Minow THUNDR::MINOW ML3-5/U26 223-9922) (12/17/87)
Gerald Vogt thinks he has found a bug in RSTS/E Basic-Plus. To simplify his sample program, he defines a record I/O field: 20 field 1%, 3% as a$, 20% as i$, 15% as q$ and assigns an element from the field to a variable: 70 in$(z%) = i$ The program fails when in$(z%) contains nothing when the file is closed. The problem, which should be discussed in the Basic-Plus documentation, is that a direct string assinment "foo$ = bar$" copies string pointers from the source to the destination. The contents are not duplicated. Thus, in Gerald's example, in$(z%) contains the address of i$ in the file buffer and the contents of in$(z%) change as the file changes. The program will work as Gerald wants if he changes his code to 70 in$(z%) = i$ + "" By concatenating a null string to the record field, Basic-Plus will allocate new memory and copy the contents of the string from the buffer. Gerald's solution: 70 in$(z%) = left(i$, 20%) does the same thing. Hope this helps. Martin Minow minow%thundr.dec@decwrl.dec.com The above does not represent the position of Digital Equipment Corporation.