Ignore:
Timestamp:
Dec 4, 2009, 8:26:01 PM (14 years ago)
Author:
George Lilly
Message:

WorldVistAEHR overlayed on FOIAVistA

Location:
FOIAVistA/tag/r
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • FOIAVistA/tag/r/CLINICAL_REMINDERS-PXRM/PXRMTEXT.m

    r628 r636  
    1 PXRMTEXT ; SLC/PKR - Text formatting utility routines. ;07/19/2007
    2  ;;2.0;CLINICAL REMINDERS;**6**;Feb 04, 2005;Build 123
     1PXRMTEXT ; SLC/PKR - Text formatting utility routines. ;11/03/2004
     2 ;;2.0;CLINICAL REMINDERS;;Feb 04, 2005
    33 ;
    4  ;============================================
     4 ;================================================================
    55NEWLINE ;Put TEXT on a new line to the output, make sure it does not end
    66 ;with a " ".
     
    1414 Q
    1515 ;
    16  ;============================================
     16 ;================================================================
    1717BLANK ;Add a blank line (line containing just " ") to the output.
    1818 S NOUT=NOUT+1,TEXTOUT(NOUT)=" "
     
    2020 Q
    2121 ;
    22  ;============================================
     22 ;================================================================
    2323CHECKLEN(WORD) ;Check to see if adding the next word makes the line too long.
    2424 ;If it does add it to the output and start a new line.
     
    3434 Q
    3535 ;
    36  ;============================================
    37 COLFMT(FMTSTR,TEXTSTR,PC,NL,OUTPUT) ;Columnar text formatter.
    38  ;FMTSTR - format string; ^ separated string for each column in the
    39  ;output. 35R2 defines a right justified column 35 characters wide
    40  ;with 2 blank spaces following. Columns can be centered (C) left
    41  ;justified (L) or right justified (R).
    42  ;TEXTSTR - string to be formated
    43  ;PC - the pad character
    44  ;NL - number of lines of output
    45  ;OUTPUT - array containing output lines.
    46  N COLOUT,ENTRY,FMT,JND,JUS,IND,LEN,NCOL,NLO,NROW,SP,TEMP,TEXT,WIDTH,WPSP
    47  S NCOL=$L(FMTSTR,U),NROW=1
    48  F IND=1:1:NCOL D
    49  . S FMT=$P(FMTSTR,U,IND)
    50  . S JUS(IND)=$S(FMT["C":"C",FMT["L":"L",FMT["R":"R",1:"C")
    51  . S WIDTH(IND)=$P(FMT,JUS(IND),1)
    52  . S SP(IND)=$P(FMT,JUS(IND),2)
    53  . S WPSP(IND)=WIDTH(IND)+SP(IND)
    54  F IND=1:1:NCOL D
    55  . S ENTRY=$S(JUS(IND)="C":"CJ",JUS(IND)="L":"LJ",JUS(IND)="R":"RJ")
    56  . S TEMP=$P(TEXTSTR,U,IND)
    57  . S LEN=$L(TEMP)
    58  . I LEN'>WIDTH(IND) D
    59  .. S TEMP=$$@ENTRY^XLFSTR(TEMP,WIDTH(IND),PC)
    60  .. S COLOUT(1,IND)=TEMP_$$LJ^XLFSTR("",SP(IND)," ")
    61  . I LEN>WIDTH(IND) D
    62  .. D FORMATS(1,WIDTH(IND),TEMP,.NLO,.TEXTOUT)
    63  .. F JND=1:1:NLO D
    64  ... S TEMP=$$@ENTRY^XLFSTR(TEXTOUT(JND),WIDTH(IND),PC)
    65  ... S COLOUT(JND,IND)=TEMP_$$LJ^XLFSTR("",SP(IND)," ")
    66  .. I NLO>NROW S NROW=NLO
    67  F IND=1:1:NROW D
    68  . S TEXT=""
    69  . F JND=1:1:NCOL D
    70  .. I $D(COLOUT(IND,JND)) S TEXT=TEXT_COLOUT(IND,JND)
    71  .. E  S TEXT=TEXT_$$LJ^XLFSTR("",(WPSP(JND))," ")
    72  . S OUTPUT(IND)=TEXT
    73  S NL=NROW
    74  Q
    75  ;
    76  ;============================================
    77 COLFMTA(FMTSTR,INPUT,PC,NL,OUTPUT) ;Columnar text formatter.
    78  ;Array version of COLFMT. Input array is ^TMP($J,INPUT,M) and
    79  ;output is ^TMP(OUTPUT,$J,N,0).
    80  N COLOUT,ENTRY,FMT,JND,JUS,IND,LEN,NCOL,NLO,NROW,NUM
    81  N SP,TEMP,TEXT,WIDTH,WPSP
    82  S NCOL=$L(FMTSTR,U)
    83  F IND=1:1:NCOL D
    84  . S FMT=$P(FMTSTR,U,IND)
    85  . S JUS(IND)=$S(FMT["C":"C",FMT["L":"L",FMT["R":"R",1:"C")
    86  . S WIDTH(IND)=$P(FMT,JUS(IND),1)
    87  . S SP(IND)=$P(FMT,JUS(IND),2)
    88  . S WPSP(IND)=WIDTH(IND)+SP(IND)
    89  S NL=0,NUM=""
    90  F  S NUM=$O(^TMP($J,INPUT,NUM)) Q:NUM=""  D
    91  . K COLOUT
    92  . S NROW=1
    93  . F IND=1:1:NCOL D
    94  .. S ENTRY=$S(JUS(IND)="C":"CJ",JUS(IND)="L":"LJ",JUS(IND)="R":"RJ")
    95  .. S TEMP=$P(^TMP($J,INPUT,NUM),U,IND)
    96  .. S LEN=$L(TEMP)
    97  .. I LEN'>WIDTH(IND) D
    98  ... S TEMP=$$@ENTRY^XLFSTR(TEMP,WIDTH(IND),PC)
    99  ... S COLOUT(1,IND)=TEMP_$$LJ^XLFSTR("",SP(IND)," ")
    100  .. I LEN>WIDTH(IND) D
    101  ... D FORMATS(1,WIDTH(IND),TEMP,.NLO,.TEXTOUT)
    102  ... F JND=1:1:NLO D
    103  .... S TEMP=$$@ENTRY^XLFSTR(TEXTOUT(JND),WIDTH(IND),PC)
    104  .... S COLOUT(JND,IND)=TEMP_$$LJ^XLFSTR("",SP(IND)," ")
    105  ... I NLO>NROW S NROW=NLO
    106  . F IND=1:1:NROW D
    107  .. S TEXT=""
    108  .. F JND=1:1:NCOL D
    109  ... I $D(COLOUT(IND,JND)) S TEXT=TEXT_COLOUT(IND,JND)
    110  ... E  S TEXT=TEXT_$$LJ^XLFSTR("",(WPSP(JND))," ")
    111  .. S NL=NL+1,^TMP(OUTPUT,$J,NL,0)=TEXT
    112  Q
    113  ;
    114  ;============================================
     36 ;================================================================
    11537FORMAT(LM,RM,NIN,TEXTIN,NOUT,TEXTOUT) ;Format the text in TEXTIN so it has
    11638 ;a left margin of LM and a right margin of RM. The formatted text
     
    16385 Q
    16486 ;
    165  ;============================================
     87 ;================================================================
    16688FORMATS(LM,RM,TEXTLINE,NOUT,TEXTOUT) ;Take a single line of input text
    16789 ;and format it.
     
    17193 Q
    17294 ;
    173  ;============================================
    174 LMFMTSTR(VALMDDF,JSTR) ;The List Manager variable VALMDDF contains the
    175  ;list template caption column formatting information. It contains
    176  ;the starting column and the width if the form
    177  ;VALMDDF(COLUMN NAME)=COLUMN NAME^COLUMN^WIDTH^CAPTION^VIDEO^SCROLL
    178  ;LOCK. JUSSTR, which is optional,is the justification for each column;
    179  ;(L=left, C=center, R=right) the default is center. Use this information
    180  ;to build the format string for the column formatter COLFMT.
    181  N CN,COL,FMTSTR,IND,JC,JUSSTR,PLCOL,SCOL,SP,TEMP,WIDTH
    182  ;Sort by columns
    183  S IND=""
    184  F  S IND=$O(VALMDDF(IND)) Q:IND=""  D
    185  . S TEMP=VALMDDF(IND)
    186  . S COL($P(TEMP,U,2))=$P(TEMP,U,3)
    187  S JUSSTR=$G(JSTR)
    188  S (CN,PLCOL,SCOL,SP)=0
    189  S FMTSTR=""
    190  S SCOL=0
    191  F  S SCOL=$O(COL(SCOL)) Q:SCOL=""  D
    192  . S CN=CN+1
    193  . S WIDTH=COL(SCOL)
    194  . I CN=1 S PLCOL=WIDTH
    195  . E  S SP=SCOL-PLCOL-1,FMTSTR=FMTSTR_SP_U,PLCOL=SCOL+WIDTH-1
    196  . S JC=$E(JUSSTR,CN)
    197  . I JC="" S JC="C"
    198  . S TEMP=WIDTH_JC
    199  . S FMTSTR=FMTSTR_TEMP
    200  Q FMTSTR
    201  ;
Note: See TracChangeset for help on using the changeset viewer.