/**********************************************************************/
/* Get the current command. */
cmd=upcase(word(1));
/* Execute any custom commands. */
if cmd='KEEP' then link keepvals;
else if cmd = 'RETRIEVE' then link retvals;
/**********************************************************************/
keepvals:
/* Open a temporary data set containing all */
/* variables on the data set being edited with */
/* the FSEDIT procedure. */
pubskel=open('work.pubskel','U');
call set(pubskel);
/* Get the second observation (the first is used */
/* for sending letters). */
rc=fetchobs(pubskel,2,'NOSET');
/* Push the current value of all variables */
/* into the observation. */
if update(pubskel) then do;
end;
/* We no longer want the DSID to be set, */
/* so close and then reopen the data set. */
rc=close(pubskel);
pubskel=open('work.pubskel','U');
/* Again fetch the second observation ... */
rc=fetchobs(pubskel,2);
/* ... for all variables. VAR is an SCL list */
/* that contains character elements, each of */
/* which names a variable to be duplicated */
i=0;
do while(i