XLFNAME8 ;BPOIFO/KEITH/DW - NAME STANDARDIZATION ; 12 Aug 2002@20:20
 ;;8.0;KERNEL;**343**; Jul 10, 1995;
 ;
FAMILY ;Family name help text
 S XUM("LENGTH")="1-35"
 Q
       ;
GIVEN ;Given name help text
 S XUM("LENGTH")="1-25"
 Q
 ;
MIDDLE ;Middle name help text
 S XUM("LENGTH")="1-25"
 Q
 ;
PREFIX ;Name prefix help text
 S XUM("LENGTH")="1-10"
 Q
 ;
SUFFIX ;Name suffix help text
 S XUM("LENGTH")="1-10"
 Q
 ;
DEGREE ;Name degree help text
 S XUM("LENGTH")="1-10"
 Q
 ;
CVALID(XUC,XUX,XUM) ;Name component validation
 ; Input: XUC=name component (e.g. FAMILY, GIVEN, etc.)
 ;        XUX=input value to validate
 ;        XUM=array to return results and errors (pass by reference)
 ;
 ;Output: XUM array in the format:
 ;       XUM("ERROR",n)=error text (if any) 
 ;       XUM("HELP",n)=help text          
 ;       XUM("LENGTH")=field length in length (e.g. 3-30) 
 ;       XUM("RESULT")=transformed name value (null if invalid entry)
 ; 
 N XUL,XUF,XUI,XUR,XUMSG,DIERR
 S XUF="FAMILY^GIVEN^MIDDLE^PREFIX^SUFFIX^DEGREE"
 S XUF=$P(XUF,XUC),XUF=$L(XUF,U)
 D @XUC  ;Set up length and help text 
 S XUL=+$P(XUM("LENGTH"),"-")_U_+$P(XUM("LENGTH"),"-",2)
 ;Transform suffixes
 I XUC="SUFFIX" S XUX=$$CLEANC^XLFNAME(XUX)
 ;Clean/format input value 
 S XUX=$$FORMAT^XLFNAME7(XUX,$P(XUL,U),$P(XUL,U,2),,3,,1,1)
 ;Validate against file 20 
 D CHK^DIE(20,XUF,"E",XUX,.XUR,"XUMSG")
 I $D(XUMSG("DIERR","E",701)) D
 .S XUI=$O(XUMSG("DIERR","E",701,""))
 .M XUM("ERROR")=XUMSG("DIERR",XUI,"TEXT")
 .Q
 S XUM("RESULT")=$S(XUR=U:"",1:XUR)
 Q
 ;
NOTES() ;Produce value for the file #20 NOTES ABOUT NAME field
 ;Output: string representing when, who and how editing occurred
 ;
 N XUWHEN,XUWHO,XUHOW
 S XUWHEN=$$FMTE^XLFDT($$NOW^XLFDT())
 S XUWHO=$S($G(DUZ)>0:$$GET1^DIQ(200,DUZ_",",.01),1:"Unknown")
 S XUWHO=XUWHO_" ("_$G(DUZ)_")"
 S XUHOW=$P($G(XQY0),U)
 Q "Edited: "_XUWHEN_" By: "_XUWHO_" With: "_XUHOW
 ;
COMP(XUX,XUDNC) ;Use existing name array
 ;Input: XUX=name array (pass by reference)
 ;     XUDNC='do not componentize' flag (pass by reference)
 ;
 N XUY,XUI,XUZ
 Q:$D(XUX)<10  Q:(XUDNC=0)!(XUDNC=2)
 S XUDNC=1,XUY="FAMILY^GIVEN^MIDDLE^PREFIX^SUFFIX^DEGREE"
 F XUI=1:1:6 S XUZ=$P(XUY,U,XUI) S:'$D(XUX(XUZ)) XUX(XUZ)=""
 Q
 ;
F1(XUX,XUCOMA)  ;Transform text value
 ;Input: XUX=text value to transform (pass by reference)
 ;    XUCOMA=comma indicator
 ;Output: 1 if changed, 0 otherwise
 ;
 N XUI,XUII,XUC,XUY,XUZ,XUOLDX S XUOLDX=XUX
 ;Transform accent grave to apostrophe
 S XUX=$TR(XUX,"`","'")
 ;Transform single characters
 F XUI=1:1:$L(XUX) S XUC=$E(XUX,XUI) D:$$FC1(.XUC,XUCOMA)
 .S XUX=$E(XUX,0,XUI-1)_XUC_$E(XUX,XUI+1,999)
 .Q
 ;Transform double character combinations
 S XUY="  ^--^,,^''^,-^,'^ ,^-,^',^ -^ '^- ^' ^-'^'-"
 S XUZ=" ^-^,^'^,^,^,^,^,^ ^ ^ ^ ^-^-"
 F XUI=1:1 S XUC=$P(XUY,U,XUI) Q:XUC=""  D
 .Q:XUX'[XUC
 .F XUII=1:1:$L(XUX,XUC)-1 D
 ..S XUX=$P(XUX,XUC,0,XUII)_$P(XUZ,U,XUI)_$P(XUX,XUC,XUII+1,999)
 ..Q
 .Q
 ;Remove NMI and NMN
 F XUY="NMI","NMN" I XUX[XUY,XUCOMA=3 D
 .S XUC=$F(XUX,XUY)
 .I " ,"[$E(XUX,(XUC-4))," ,"[$E(XUX,XUC) D
 ..S XUX=$E(XUX,0,(XUC-4))_$E(XUX,(XUC),999)
 ..F XUY="  ",",," I XUX[XUY D
 ...S XUC=$F(XUX,XUY) S XUX=$E(XUX,0,(XUC-3))_$E(XUX,(XUC-1),999) Q
 ..F XUZ=" ","," F XUC=1,$L(XUX) D
 ...I $E(XUX,XUC)=XUZ S XUX=$E(XUX,0,(XUC-1))_$E(XUX,(XUC+1),999) Q
 ..Q
 .Q
 ;Clean up numerics
 I XUX?.E1N.E D
 .S XUY="1ST^2ND^3RD^4TH^5TH^6TH^7TH^8TH^9TH"
 .F XUI=1:1:$L(XUX) S XUC=$E(XUX,XUI) D:XUC?1N
 ..I XUC," ,"[$E(XUX,XUI-1),$E(XUX,XUI,XUI+2)=$P(XUY,U,XUC)," ,"[$E(XUX,XUI+3) Q
 ..I XUC=1," ,"[$E(XUX,XUI-1),$E(XUX,XUI,XUI+3)="10TH"," ,"[$E(XUX,XUI+4) S XUI=XUI+1 Q
 ..S XUX=$E(XUX,0,XUI-1)_$E(XUX,XUI+1,999)
 ..Q
 .Q
 ;Check for dangling apostrophes
 I XUX["'" F XUI=1:1:$L(XUX) S XUC=$E(XUX,XUI) D:XUC?1"'"
 .I $E(XUX,(XUI-1))?1U,$E(XUX,(XUI+1))?1U Q
 .S XUX=$E(XUX,0,(XUI-1))_$E(XUX,(XUI+1),99),XUI=1
 .Q
 ;Remove parenthetical text from name value
 N XUCH S XUOLDX(2)=XUX,XUCH=1 F  Q:'XUCH  D
 .S XUCH=0,XUOLDX(1)=XUX,XUY="()[]{}" D
 ..F XUI=1,3,5 S XUC(1)=$E(XUY,XUI),XUC(2)=$E(XUY,XUI+1) D
 ...S XUZ(1)=$$CLAST(XUX,XUC(1)) Q:'XUZ(1)  S XUZ(2)=$F(XUX,XUC(2),XUZ(1))
 ...I XUZ(2)>XUZ(1) S XUX=$E(XUX,0,(XUZ(1)-2))_$E(XUX,XUZ(2),999)
 ...S XUCH=(XUX'=XUOLDX(1)) Q
 ..Q
 .Q
 S:XUX'=XUOLDX(2) XUAUDIT(2)=""
 F XUI=1:1:6 S XUC=$E(XUY,XUI) D
 .F  Q:XUX'[XUC  S XUX=$P(XUX,XUC)_$P(XUX,XUC,2,999)
 .Q
 ;Insure value begins and ends with an alpha character
 F  Q:'$L(XUX)!($E(XUX,1)?1A)  S XUX=$E(XUX,2,999)
 F  Q:'$L(XUX)!($E(XUX,$L(XUX))?1A)  Q:($L(XUX,",")=2)&($E(XUX,$L(XUX))=",")  S XUX=$E(XUX,1,($L(XUX)-1))
 Q XUX'=XUOLDX
 ;
CLAST(XUX,XUC) ;Find last instance of character
 N XUY,XUZ
 S XUZ=$F(XUX,XUC) Q:'XUZ XUZ
 F  S XUY=$F(XUX,XUC,XUZ) Q:'XUY  S XUZ=XUY
 Q XUZ
 ;
FC1(XUC,XUCOMA) ;Transform single character
 ;Input: XUC=character to transform (pass by reference)
 ;    XUCOMA=comma indicator
 ;Output: 1 if value is changed, 0 otherwise
 ;
 S XUC=$E(XUC) Q:'$L(XUC) 0
 ;See if comma stays
 I XUCOMA'=3,XUC?1"," Q 0
 ;Retain uppercase, numeric, hyphen, apostrophe and space
 Q:XUC?1U!(XUC?1N)!(XUC?1"-")!(XUC?1"'")!(XUC?1" ") 0
 ;Retain parenthesis, bracket and brace characters
 Q:XUC?1"("!(XUC?1")")!(XUC?1"[")!(XUC?1"]")!(XUC?1"{")!(XUC?1"}") 0
 ;Transform lowercase to uppercase
 I XUC?1L S XUC=$C($A(XUC)-32) Q 1
 ;Set all other characters to space
 S XUC=" " Q 1
 ;
CMP(XUNC) ;Cleanup name components
 ;
 N XUCOM,XUI,XUCOMP,XUM
 ;
 S XUCOM="FAMILY^GIVEN^MIDDLE^SUFFIX"
 F XUI=1:1:4 D
 . S XUCOMP=$P(XUCOM,U,XUI)
 . D CVALID^XLFNAME8(XUCOMP,$G(XUNC(XUCOMP)),.XUM)
 . S XUNC(XUCOMP)=$G(XUM("RESULT"))
 Q
 ;
BLDNAME(XUNC,XUMAX) ;Build standard name from components
 ;Called by XU forms
 ;Modified version of BLDNAME^XLFNAME
 ;
 D CMP(.XUNC)
 Q $$NAMEFMT^XLFNAME(.XUNC,"F","CL"_+$G(XUMAX))
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXLFNAME8   5919     printed  Sep 23, 2025@19:39:05                                                                                                                                                                                                    Page 2
XLFNAME8  ;BPOIFO/KEITH/DW - NAME STANDARDIZATION ; 12 Aug 2002@20:20
 +1       ;;8.0;KERNEL;**343**; Jul 10, 1995;
 +2       ;
FAMILY    ;Family name help text
 +1        SET XUM("LENGTH")="1-35"
 +2        QUIT 
 +3       ;
GIVEN     ;Given name help text
 +1        SET XUM("LENGTH")="1-25"
 +2        QUIT 
 +3       ;
MIDDLE    ;Middle name help text
 +1        SET XUM("LENGTH")="1-25"
 +2        QUIT 
 +3       ;
PREFIX    ;Name prefix help text
 +1        SET XUM("LENGTH")="1-10"
 +2        QUIT 
 +3       ;
SUFFIX    ;Name suffix help text
 +1        SET XUM("LENGTH")="1-10"
 +2        QUIT 
 +3       ;
DEGREE    ;Name degree help text
 +1        SET XUM("LENGTH")="1-10"
 +2        QUIT 
 +3       ;
CVALID(XUC,XUX,XUM) ;Name component validation
 +1       ; Input: XUC=name component (e.g. FAMILY, GIVEN, etc.)
 +2       ;        XUX=input value to validate
 +3       ;        XUM=array to return results and errors (pass by reference)
 +4       ;
 +5       ;Output: XUM array in the format:
 +6       ;       XUM("ERROR",n)=error text (if any) 
 +7       ;       XUM("HELP",n)=help text          
 +8       ;       XUM("LENGTH")=field length in length (e.g. 3-30) 
 +9       ;       XUM("RESULT")=transformed name value (null if invalid entry)
 +10      ; 
 +11       NEW XUL,XUF,XUI,XUR,XUMSG,DIERR
 +12       SET XUF="FAMILY^GIVEN^MIDDLE^PREFIX^SUFFIX^DEGREE"
 +13       SET XUF=$PIECE(XUF,XUC)
           SET XUF=$LENGTH(XUF,U)
 +14      ;Set up length and help text 
           DO @XUC
 +15       SET XUL=+$PIECE(XUM("LENGTH"),"-")_U_+$PIECE(XUM("LENGTH"),"-",2)
 +16      ;Transform suffixes
 +17       IF XUC="SUFFIX"
               SET XUX=$$CLEANC^XLFNAME(XUX)
 +18      ;Clean/format input value 
 +19       SET XUX=$$FORMAT^XLFNAME7(XUX,$PIECE(XUL,U),$PIECE(XUL,U,2),,3,,1,1)
 +20      ;Validate against file 20 
 +21       DO CHK^DIE(20,XUF,"E",XUX,.XUR,"XUMSG")
 +22       IF $DATA(XUMSG("DIERR","E",701))
               Begin DoDot:1
 +23               SET XUI=$ORDER(XUMSG("DIERR","E",701,""))
 +24               MERGE XUM("ERROR")=XUMSG("DIERR",XUI,"TEXT")
 +25               QUIT 
               End DoDot:1
 +26       SET XUM("RESULT")=$SELECT(XUR=U:"",1:XUR)
 +27       QUIT 
 +28      ;
NOTES()   ;Produce value for the file #20 NOTES ABOUT NAME field
 +1       ;Output: string representing when, who and how editing occurred
 +2       ;
 +3        NEW XUWHEN,XUWHO,XUHOW
 +4        SET XUWHEN=$$FMTE^XLFDT($$NOW^XLFDT())
 +5        SET XUWHO=$SELECT($GET(DUZ)>0:$$GET1^DIQ(200,DUZ_",",.01),1:"Unknown")
 +6        SET XUWHO=XUWHO_" ("_$GET(DUZ)_")"
 +7        SET XUHOW=$PIECE($GET(XQY0),U)
 +8        QUIT "Edited: "_XUWHEN_" By: "_XUWHO_" With: "_XUHOW
 +9       ;
COMP(XUX,XUDNC) ;Use existing name array
 +1       ;Input: XUX=name array (pass by reference)
 +2       ;     XUDNC='do not componentize' flag (pass by reference)
 +3       ;
 +4        NEW XUY,XUI,XUZ
 +5        if $DATA(XUX)<10
               QUIT 
           if (XUDNC=0)!(XUDNC=2)
               QUIT 
 +6        SET XUDNC=1
           SET XUY="FAMILY^GIVEN^MIDDLE^PREFIX^SUFFIX^DEGREE"
 +7        FOR XUI=1:1:6
               SET XUZ=$PIECE(XUY,U,XUI)
               if '$DATA(XUX(XUZ))
                   SET XUX(XUZ)=""
 +8        QUIT 
 +9       ;
F1(XUX,XUCOMA) ;Transform text value
 +1       ;Input: XUX=text value to transform (pass by reference)
 +2       ;    XUCOMA=comma indicator
 +3       ;Output: 1 if changed, 0 otherwise
 +4       ;
 +5        NEW XUI,XUII,XUC,XUY,XUZ,XUOLDX
           SET XUOLDX=XUX
 +6       ;Transform accent grave to apostrophe
 +7        SET XUX=$TRANSLATE(XUX,"`","'")
 +8       ;Transform single characters
 +9        FOR XUI=1:1:$LENGTH(XUX)
               SET XUC=$EXTRACT(XUX,XUI)
               if $$FC1(.XUC,XUCOMA)
                   Begin DoDot:1
 +10                   SET XUX=$EXTRACT(XUX,0,XUI-1)_XUC_$EXTRACT(XUX,XUI+1,999)
 +11                   QUIT 
                   End DoDot:1
 +12      ;Transform double character combinations
 +13       SET XUY="  ^--^,,^''^,-^,'^ ,^-,^',^ -^ '^- ^' ^-'^'-"
 +14       SET XUZ=" ^-^,^'^,^,^,^,^,^ ^ ^ ^ ^-^-"
 +15       FOR XUI=1:1
               SET XUC=$PIECE(XUY,U,XUI)
               if XUC=""
                   QUIT 
               Begin DoDot:1
 +16               if XUX'[XUC
                       QUIT 
 +17               FOR XUII=1:1:$LENGTH(XUX,XUC)-1
                       Begin DoDot:2
 +18                       SET XUX=$PIECE(XUX,XUC,0,XUII)_$PIECE(XUZ,U,XUI)_$PIECE(XUX,XUC,XUII+1,999)
 +19                       QUIT 
                       End DoDot:2
 +20               QUIT 
               End DoDot:1
 +21      ;Remove NMI and NMN
 +22       FOR XUY="NMI","NMN"
               IF XUX[XUY
                   IF XUCOMA=3
                       Begin DoDot:1
 +23                       SET XUC=$FIND(XUX,XUY)
 +24                       IF " ,"[$EXTRACT(XUX,(XUC-4))
                               IF " ,"[$EXTRACT(XUX,XUC)
                                   Begin DoDot:2
 +25                                   SET XUX=$EXTRACT(XUX,0,(XUC-4))_$EXTRACT(XUX,(XUC),999)
 +26                                   FOR XUY="  ",",,"
                                           IF XUX[XUY
                                               Begin DoDot:3
 +27                                               SET XUC=$FIND(XUX,XUY)
                                                   SET XUX=$EXTRACT(XUX,0,(XUC-3))_$EXTRACT(XUX,(XUC-1),999)
                                                   QUIT 
                                               End DoDot:3
 +28                                   FOR XUZ=" ",","
                                           FOR XUC=1,$LENGTH(XUX)
                                               Begin DoDot:3
 +29                                               IF $EXTRACT(XUX,XUC)=XUZ
                                                       SET XUX=$EXTRACT(XUX,0,(XUC-1))_$EXTRACT(XUX,(XUC+1),999)
                                                       QUIT 
                                               End DoDot:3
 +30                                   QUIT 
                                   End DoDot:2
 +31                       QUIT 
                       End DoDot:1
 +32      ;Clean up numerics
 +33       IF XUX?.E1N.E
               Begin DoDot:1
 +34               SET XUY="1ST^2ND^3RD^4TH^5TH^6TH^7TH^8TH^9TH"
 +35               FOR XUI=1:1:$LENGTH(XUX)
                       SET XUC=$EXTRACT(XUX,XUI)
                       if XUC?1N
                           Begin DoDot:2
 +36                           IF XUC
                                   IF " ,"[$EXTRACT(XUX,XUI-1)
                                       IF $EXTRACT(XUX,XUI,XUI+2)=$PIECE(XUY,U,XUC)
                                           IF " ,"[$EXTRACT(XUX,XUI+3)
                                               QUIT 
 +37                           IF XUC=1
                                   IF " ,"[$EXTRACT(XUX,XUI-1)
                                       IF $EXTRACT(XUX,XUI,XUI+3)="10TH"
                                           IF " ,"[$EXTRACT(XUX,XUI+4)
                                               SET XUI=XUI+1
                                               QUIT 
 +38                           SET XUX=$EXTRACT(XUX,0,XUI-1)_$EXTRACT(XUX,XUI+1,999)
 +39                           QUIT 
                           End DoDot:2
 +40               QUIT 
               End DoDot:1
 +41      ;Check for dangling apostrophes
 +42       IF XUX["'"
               FOR XUI=1:1:$LENGTH(XUX)
                   SET XUC=$EXTRACT(XUX,XUI)
                   if XUC?1"'"
                       Begin DoDot:1
 +43                       IF $EXTRACT(XUX,(XUI-1))?1U
                               IF $EXTRACT(XUX,(XUI+1))?1U
                                   QUIT 
 +44                       SET XUX=$EXTRACT(XUX,0,(XUI-1))_$EXTRACT(XUX,(XUI+1),99)
                           SET XUI=1
 +45                       QUIT 
                       End DoDot:1
 +46      ;Remove parenthetical text from name value
 +47       NEW XUCH
           SET XUOLDX(2)=XUX
           SET XUCH=1
           FOR 
               if 'XUCH
                   QUIT 
               Begin DoDot:1
 +48               SET XUCH=0
                   SET XUOLDX(1)=XUX
                   SET XUY="()[]{}"
                   Begin DoDot:2
 +49                   FOR XUI=1,3,5
                           SET XUC(1)=$EXTRACT(XUY,XUI)
                           SET XUC(2)=$EXTRACT(XUY,XUI+1)
                           Begin DoDot:3
 +50                           SET XUZ(1)=$$CLAST(XUX,XUC(1))
                               if 'XUZ(1)
                                   QUIT 
                               SET XUZ(2)=$FIND(XUX,XUC(2),XUZ(1))
 +51                           IF XUZ(2)>XUZ(1)
                                   SET XUX=$EXTRACT(XUX,0,(XUZ(1)-2))_$EXTRACT(XUX,XUZ(2),999)
 +52                           SET XUCH=(XUX'=XUOLDX(1))
                               QUIT 
                           End DoDot:3
 +53                   QUIT 
                   End DoDot:2
 +54               QUIT 
               End DoDot:1
 +55       if XUX'=XUOLDX(2)
               SET XUAUDIT(2)=""
 +56       FOR XUI=1:1:6
               SET XUC=$EXTRACT(XUY,XUI)
               Begin DoDot:1
 +57               FOR 
                       if XUX'[XUC
                           QUIT 
                       SET XUX=$PIECE(XUX,XUC)_$PIECE(XUX,XUC,2,999)
 +58               QUIT 
               End DoDot:1
 +59      ;Insure value begins and ends with an alpha character
 +60       FOR 
               if '$LENGTH(XUX)!($EXTRACT(XUX,1)?1A)
                   QUIT 
               SET XUX=$EXTRACT(XUX,2,999)
 +61       FOR 
               if '$LENGTH(XUX)!($EXTRACT(XUX,$LENGTH(XUX))?1A)
                   QUIT 
               if ($LENGTH(XUX,",")=2)&($EXTRACT(XUX,$LENGTH(XUX))=",")
                   QUIT 
               SET XUX=$EXTRACT(XUX,1,($LENGTH(XUX)-1))
 +62       QUIT XUX'=XUOLDX
 +63      ;
CLAST(XUX,XUC) ;Find last instance of character
 +1        NEW XUY,XUZ
 +2        SET XUZ=$FIND(XUX,XUC)
           if 'XUZ
               QUIT XUZ
 +3        FOR 
               SET XUY=$FIND(XUX,XUC,XUZ)
               if 'XUY
                   QUIT 
               SET XUZ=XUY
 +4        QUIT XUZ
 +5       ;
FC1(XUC,XUCOMA) ;Transform single character
 +1       ;Input: XUC=character to transform (pass by reference)
 +2       ;    XUCOMA=comma indicator
 +3       ;Output: 1 if value is changed, 0 otherwise
 +4       ;
 +5        SET XUC=$EXTRACT(XUC)
           if '$LENGTH(XUC)
               QUIT 0
 +6       ;See if comma stays
 +7        IF XUCOMA'=3
               IF XUC?1","
                   QUIT 0
 +8       ;Retain uppercase, numeric, hyphen, apostrophe and space
 +9        if XUC?1U!(XUC?1N)!(XUC?1"-")!(XUC?1"'")!(XUC?1" ")
               QUIT 0
 +10      ;Retain parenthesis, bracket and brace characters
 +11       if XUC?1"("!(XUC?1")")!(XUC?1"[")!(XUC?1"]")!(XUC?1"{")!(XUC?1"}")
               QUIT 0
 +12      ;Transform lowercase to uppercase
 +13       IF XUC?1L
               SET XUC=$CHAR($ASCII(XUC)-32)
               QUIT 1
 +14      ;Set all other characters to space
 +15       SET XUC=" "
           QUIT 1
 +16      ;
CMP(XUNC) ;Cleanup name components
 +1       ;
 +2        NEW XUCOM,XUI,XUCOMP,XUM
 +3       ;
 +4        SET XUCOM="FAMILY^GIVEN^MIDDLE^SUFFIX"
 +5        FOR XUI=1:1:4
               Begin DoDot:1
 +6                SET XUCOMP=$PIECE(XUCOM,U,XUI)
 +7                DO CVALID^XLFNAME8(XUCOMP,$GET(XUNC(XUCOMP)),.XUM)
 +8                SET XUNC(XUCOMP)=$GET(XUM("RESULT"))
               End DoDot:1
 +9        QUIT 
 +10      ;
BLDNAME(XUNC,XUMAX) ;Build standard name from components
 +1       ;Called by XU forms
 +2       ;Modified version of BLDNAME^XLFNAME
 +3       ;
 +4        DO CMP(.XUNC)
 +5        QUIT $$NAMEFMT^XLFNAME(.XUNC,"F","CL"_+$GET(XUMAX))
 +6       ;