Joined: 31 Oct 2006 Posts: 959 Location: Richmond, Virginia
Here's a primary difference between a data field (in a record) in the FILE section and one in WORKING STORAGE.
If I MOVE values to a record area, then WRITE the record, due to buffering, the internally maintained record pointer is now pointing elsewhere in that file's buffer area, so if I try to reference one of the last written record's fields, or otherwise assume it has retained the value I MOVEd there, it won't have what I MOVEd there.
For this reason, many programmers use a corresponding WORKING STORAGE record area as well, then do the WRITE...FROM verb. This WORKING STORAGE area will retain its values after the WRITE. This is esp. useful if certain values are to be retained for consecutive WRITEs.