* Program : NICE.PRINT * Date : 19 JAN 2004 * Author : Adrian Overs * Copyright : Citysoft Pty Ltd (c) 2004 * Function : Print formated strings to a terminal or printer ************************************************************************ SUBROUTINE NICE.PRINT(TXT,WIDE,LINE,MARGIN,FLAGS) $OPTIONS INFORMATION PROMPT "" TEXT = TXT WIDTH = WIDE EQU TRUE TO 1, FALSE TO 0, OTHERWISE TO 1, SEPERATOR TO FLAGS<1>, RV$F TO FLAGS<2> IF WIDTH GT 0 THEN WIDTH -= MARGIN WIDTH -= LEN(SEPERATOR) WIDTH -= 1 END CONVERT @VM TO "}" IN TEXT CONVERT @SM TO "|" IN TEXT CONVERT @TM TO "]" IN TEXT TEXT = FMT(TEXT,WIDTH:"T") FIRST.LINE$F = TRUE LOOP REMOVE TXT FROM TEXT SETTING MORE.TXT IF FIRST.LINE$F THEN BEGIN CASE CASE MARGIN & SEPERATOR & LINE & RV$F PRINT @(-13):FMT(LINE,MARGIN:"'0'R"):SEPERATOR:@(-14):" ":TRIMB(TXT) CASE MARGIN & SEPERATOR & LINE PRINT FMT(LINE,MARGIN:"'0'R"):SEPERATOR:" ":TRIMB(TXT) CASE MARGIN & SEPERATOR & RV$F PRINT @(-13):SPACE(MARGIN):SEPERATOR:@(-14):" ":TRIMB(TXT) CASE MARGIN & SEPERATOR PRINT SPACE(MARGIN):SEPERATOR:" ":TRIMB(TXT) CASE MARGIN & LINE & RV$F PRINT @(-13):FMT(LINE,MARGIN:"'0'R"):@(-14):" ":TRIMB(TXT) CASE MARGIN & LINE PRINT FMT(LINE,MARGIN:"'0'R"):" ":TRIMB(TXT) CASE SEPERATOR & LINE & RV$F PRINT @(-13):LINE:SEPERATOR:@(-14):" ":TRIMB(TXT) CASE SEPERATOR & LINE PRINT LINE:SEPERATOR:" ":TRIMB(TXT) CASE OTHERWISE PRINT TRIMB(TXT) END CASE FIRST.LINE$F = FALSE END ELSE BEGIN CASE CASE MARGIN & SEPERATOR & LINE PRINT SPACE(MARGIN):SEPERATOR:" ":TRIMB(TXT) CASE MARGIN & SEPERATOR PRINT SPACE(MARGIN):SEPERATOR:" ":TRIMB(TXT) CASE MARGIN & LINE PRINT SPACE(MARGIN):" ":TRIMB(TXT) CASE SEPERATOR & LINE PRINT SPACE(LEN(LINE)):SEPERATOR:" ":TRIMB(TXT) CASE OTHERWISE PRINT TRIMB(TXT) END CASE END WHILE MORE.TXT REPEAT RETURN END