/* ------------------------------------------------------------------ */ /* Sample routines to copy a file and show the progress of the */ /* copy process */ /* */ /* */ say 'Please enter the source filename:' sourceFile = lineIn() say 'Please enter the target filename:' targetFile = lineIn() call CopyFileWithStatusBar sourceFile, targetFile exit /* ------------------------------------------------------------------ */ /* function: copy a file and show a progress indicator */ /* */ /* usage: thisRC = CopyFileWithStatusbar( sourceFile, targetFile ) */ /* */ /* where: sourceFile - name of the sourceFile */ /* targetfile - name of the target file */ /* */ /* returns: 0 - okay */ /* else error */ /* */ /* Notes: */ /* */ /* There is no error checking in this routine! */ /* */ CopyFileWithStatusBar: PROCEDURE parse arg sourceFile, targetFile noOfPackets = 75 /* get the size of the file */ fileSize = chars( sourceFile ) /* calculate the packet size */ packetsize = fileSize % noOfPackets /* do not forget the rest - if any */ lastPacket = fileSize // noOfPackets /* open the input and the output file */ thisRC1 = stream( sourceFile, 'c', 'OPEN READ' ) = 'READY:' thisRC2 = stream( targetFile, 'c', 'OPEN WRITE' ) = 'READY:' /* init the status bar */ call CharOut , copies( 'B0'x , noOfPackets ) || '0D'x /* copy the file in # steps */ do i = 1 to noOfPackets call CharOut, 'DB'x call CharOut targetFile, charin( sourceFile, , packetSize ) end /* do i = 1 to noOfPackets */ /* do not forget the last packet */ if lastPacket <> 0 then call CharOut targetFile, charin( sourceFile, , lastPacket ) /* close the files */ call stream sourceFile, 'c', 'CLOSE' call stream targetFile, 'c', 'CLOSE' return 0