Path: utzoo!attcan!uunet!husc6!cmcl2!nrl-cmf!ames!pasteur!ucbvax!CITHEX.CALTECH.EDU!carl From: carl@CITHEX.CALTECH.EDU (Carl J Lydick) Newsgroups: comp.os.vms Subject: Re: tpu justification and batch checksumming Message-ID: <880420053838.1324@CitHex.Caltech.Edu> Date: 20 Apr 88 12:55:34 GMT References: <950@astroatc.UUCP> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 73 > I am a proponent of the EVE/TPU editor. I am looking for a TPU routine > to improve on the "fill paragraph" command. Currently "fill paragraph" > leaves the right margin jagged. I would like to know if there is an > existing option or handy TPU procedure that would do "fill paragraph" > with both left and right justification. These paragraphs were manually > alligned. A tedious process indeed. This may not be exactly what you want (it uses DSR to do the job, leaves the original text intact, and puts the output of DSR at the bottom of the buffer. It takes as an argument a range, buffer, or string. Invoke it as TPU RUNOFF(source). -----------------------------Begin Procedure RUNOFF----------------------------- PROCEDURE RUNOFF ( MY_SOURCE ) LOCAL MY_CRLF , MY_RANGE , MY_MARK ; ON_ERROR POSITION ( END_OF ( MY_BUFFER ) ) ; MOVE_TEXT ( FAO ( "!80**" ) ) ; MOVE_TEXT ( RUNOFF_BUFFER ) ; POSITION ( MY_MARK ) ; RETURN ; ENDON_ERROR ; IF GET_INFO(RUNOFF_BUFFER, "TYPE") <> BUFFER THEN RUNOFF_BUFFER := CREATE_BUFFER ( 'RUNOFF_BUFFER' ); SET(NO_WRITE, RUNOFF_BUFFER, ON); ENDIF; MY_BUFFER := CURRENT_BUFFER ; MY_MARK := MARK ( NONE ) ; IF GET_INFO(RUNOFF_PROCESS, "TYPE") <> PROCESS THEN RUNOFF_PROCESS := CREATE_PROCESS(RUNOFF_BUFFER,'SET NOVERIFY'); ENDIF; SEND ( 'DEASSIGN/PROCESS/ALL' , RUNOFF_PROCESS ) ; SEND ( 'RUNOFF/OUTPUT=SYS$OUTPUT: SYS$INPUT:' , RUNOFF_PROCESS ) ; SEND ( '.LEFT MARGIN 0' , RUNOFF_PROCESS ) ; SEND ( '.RIGHT MARGIN 78' , RUNOFF_PROCESS ) ; ERASE(RUNOFF_BUFFER); SEND ( MY_SOURCE , RUNOFF_PROCESS ) ; SEND_EOF ( RUNOFF_PROCESS ) ; POSITION ( BEGINNING_OF ( RUNOFF_BUFFER ) ) ; MY_CRLF := ASCII ( 13 ) + ASCII ( 10 ) ; LOOP MY_RANGE := SEARCH ( MY_CRLF , FORWARD ) ; EXITIF MY_RANGE = 0 ; POSITION ( MY_RANGE ) ; ERASE ( MY_RANGE ) ; ENDLOOP ; ENDPROCEDURE ; ------------------------------End Procedure RUNOFF------------------------------ To make it a bit more convenient, you can set up the following procedure as well. To use it, SELECT the text you want to run off, then use RUNOFF. ---------------------------Begin Procedure EVE_RUNOFF--------------------------- PROCEDURE EVE_RUNOFF RUNOFF(SELECT_RANGE); ENDPROCEDURE; ----------------------------End Procedure EVE_RUNOFF---------------------------- > Does anyone have a spiffy technique in DCL to check whether a file is > locked by another user or not? CHECKSUMs on locked files seem to get > wedged in some sort of deadlock. How about: $ CHECK_LOCK: SUBROUTINE $ ON WARNING THEN GOTO BAD $ OPEN/APPEND FILE 'P1' $ CLOSE FILE $ EXIT 1 $ BAD: EXIT $STATUS $ ENDSUBROUTINE or something like that? -------