.TITLE RJUST - RIGHT JUSTIFY A CHARACTER STRING .IDENT /31MAY7/ ;09:35:00, EM ; .ENTRY RJUST - RIGHT JUSTIFY A CHARACTER STRING ;+ ; R J U S T ; ; PURPOSE: RIGHT JUSTIFY A CHARACTER STRING. ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL RJUST (STRING,NBYTES) ; ; INPUT: STRING = ADDRESS OF CHARACTER STRING ; NBYTES (INTEGER) = NUMBER OF BYTES IN STRING ; ; METHOD: RJUST WILL RIGHT JUSTIFY THE SPECIFIED ; CHARACTER STRING BY DELETING THE RIGHT-MOST ; BLANKS AND SHIFTING UNTIL THE RIGHT-MOST ; CHARACTER IS NON-BLANK. NOTE THAT NUL CHARACTERS ; ARE NOT CONSIDERED BLANKS, ALTHOUGH THEY PRINT ; AS SUCH. BECAUSE OF THIS, NUL CHARACTERS MAY ; BE USED TO BIAS THE JUSTIFICATION. THE LIBRARY ; ROUTINE BLKFIL MAY BE USED TO PREVENT UNINTENTIONAL ; BIASING OF THIS NATURE. ; ; LANGUAGE: MACRO-11 ;- ; REVISIONS: ; JAN-75 RK WRITTEN ; 20-JAN-75 NS REMOVE LOCAL DEFINITIONS OF SPECIAL ; MACROS. ; 31-MAY-77 EM UPDATED TO CONFORM TO STANDARDS. ; ; MACROS .MCALL PUSH,POP,CALL ; .ENABL LSB RJUST:: PUSH MOV R5,R1 ;SAVE ARGUMENT POINTER MOV @4(R1),BYTES ;STORE BYTE COUNT BLE DONE ;RETURN IF COUNT <=0 CALL NCHAR <2(R1),BYTES> ;PUT NUMBER OF CHARACTERS IN R0 CMP R0,BYTES ;IF STRING IS FULL, NO JUSTIFICATION BEQ DONE MOV R0,FIRST ;STORE # OF CHARS 10$: CALL FETCH ;PLACE NEXT CHAR INTO HOLD CALL PUT ;MOVE INTO NEXT LOWEST SPOT DEC BYTES ;NEXT DEC FIRST BNE 10$ CMP BYTES,#1 ;DO WE HAVE TO CLEAR THE TOP? BLT DONE 20$: CALL PUT ;BLANK OUT GARBAGE DEC BYTES BNE 20$ DONE: POP R1 POP R0 RETURN .DSABL LSB BYTES: 0 FIRST: 0 HOLD: 0 .END