/**********************************************************************/ INIT: control enter; dsid=open('sasuser.fitness'); if (dsid=0) then do; put 'ERROR: Unable to open data set'; _status_='H'; return; end; call set(dsid); return; /**********************************************************************/ TABLEGET: rc=fetchobs(dsid,_currow_); /* check for end of data set or */ /* other errors (rc is positive */ /* for errors, negative for warnings) */ if ((rc=%sysrc(_SWEOF)) or (rc>0)) then do; call notify('table','_endtable_'); if (rc^=%sysrc(_SWEOF)) then _msg_=sysmsg(); return; end; return; /**********************************************************************/ rc=filename('myprint', /* physical-filename */ ); if (rc) then do; _msg_=sysmsg(); put _msg_; _status_='H'; return; end; /**********************************************************************/ MAIN: cmd=word(1,'u'); if (cmd='PRINT') then do; /* drain the PRINT command */ call nextcmd(); /* open the file in OUTPUT mode */ /* (this clears the file) */ fid=fopen('myprint','o'); if (fid=0) then do; _msg_='ERROR: Unable to open file'; return; end; /* set the mode to PRINT and start */ /* printing with row 1 */ mode='PRINT'; row=1; link printit; /* close the output file */ rc=fclose(fid); if (rc) then do; _msg_=sysmsg(); return; end; end; return; /**********************************************************************/ PRINTIT: /* get the current toprow (used */ /* later to restore the table) */ call notify('table','_get_toprow_',toprow); /* get the number of rows visible */ call notify('table','_get_visrow_',visrow); /* loop and print until the table */ /* says to stop */ do while (mode='PRINT'); call notify('table','_set_toprow_',row); call notify('table','_refresh_'); row=row+visrow; end; /* restore the previous toprow */ call notify('table','_set_toprow_',toprow); return; /**********************************************************************/ if (mode='PRINT') then do; rc=fput(fid,'Age: '); rc=fput(fid,age); rc=fput(fid,' Weight: '); rc=fput(fid,weight); rc=fput(fid,' Resting pulse: '); rc=fput(fid,rstpulse); rc=fput(fid,' Running pulse: '); rc=fput(fid,runpulse); rc=fwrite(fid); return; end; /**********************************************************************/ /* check for end of data set or */ /* other errors (rc is positive */ /* for errors, negative for warnings) */ if ((rc=%sysrc(_SWEOF)) or (rc>0)) then do; call notify('table','_endtable_'); mode=''; if (rc^=%sysrc(_SWEOF)) then _msg_=sysmsg(); return; end; /**********************************************************************/ INIT: control enter; dsid=open('sasuser.fitness'); if (dsid=0) then do; put 'ERROR: Unable to open data set'; _status_='H'; return; end; call set(dsid); rc=filename('myprint', /* physical-filename */ '); if (rc) then do; _msg_=sysmsg(); put _msg_; _status_='H'; return; end; return; MAIN: cmd=word(1,'u'); if (cmd='PRINT') then do; /* drain the PRINT command */ call nextcmd(); /* open the file in OUTPUT mode */ /* (this clears the file) */ fid=fopen('myprint','o'); if (fid=0) then do; _msg_='ERROR: Unable to open file'; return; end; /* set the mode to PRINT and start */ /* printing with row 1 */ mode='PRINT'; row=1; link printit; /* close the output file */ rc=fclose(fid); if (rc) then do; _msg_=sysmsg(); return; end; end; return; PRINTIT: /* get the current toprow (used */ /* later to restore the table) */ call notify('table','_get_toprow_',toprow); /* get the number of rows visible */ call notify('table','_get_visrow_',visrow); /* loop and print until the table */ /* says to stop */ do while (mode='PRINT'); call notify('table','_set_toprow_',row); call notify('table','_refresh_'); row=row+visrow; end; /* restore the previous toprow */ call notify('table','_set_toprow_',toprow); return; TABLEGET: rc=fetchobs(dsid,_currow_); /* check for end of data set or */ /* other errors (rc is positive */ /* for errors, negative for warnings) */ if ((rc=%sysrc(_SWEOF)) or (rc>0)) then do; call notify('table','_endtable_'); mode=''; if (rc^= %sysrc(_SWEOF)) then _msg_=sysmsg(); return; end; if (mode='PRINT') then do; rc=fput(fid,'Age: '); rc=fput(fid, age); rc=fput(fid,' Weight: '); rc=fput(fid,weight); rc=fput(fid,' Resting pulse: '); rc=fput(fid,rstpulse); rc=fput(fid,' Running pulse: '); rc=fput(fid,runpulse); rc=fwrite(fid); return; end; return; /**********************************************************************/ PRINTIT: /* get the current toprow (used */ /* later to restore the table) */ call notify('table','_get_toprow_',toprow); /* get the number of rows visible */ call notify('table','_get_visrow_',visrow); /* get the max number of rows */ call notify('table','_get_maxrow_',maxrow); /* loop and print until the table */ /* says to stop */ do while (row0)) then do; call endtable(); mode=''; if (rc^=%sysrc(_SWEOF)) then _msg_=sysmsg(); return; end; if (mode='PRINT') then do; if (mode2='VISROW') then visrow=_currow_; rc=fput(fid,'Age: '); rc=fput(fid,age); rc=fput(fid,' Weight: '); rc=fput(fid,weight); rc=fput(fid,' Resting pulse: '); rc=fput(fid,rstpulse); rc=fput(fid,' Running pulse: '); rc=fput(fid,runpulse); rc=fwrite(fid); return; end; return; /**********************************************************************/