Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: APSPFNC7

APSPFNC7.m

Go to the documentation of this file.
  1. APSPFNC7 ;IHS/MSC/PJJ/PLS - Number to Word Formatting ;25-Feb-2013 11:56;DKA
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1015**;Sep 23, 2004;Build 62
  1. ;=================================================================
  1. ;Returns textual representation of a numeric value
  1. WRDFMT(INT) ;EP-
  1. N RET,COMP,X
  1. S RET=""
  1. Q:INT'=+INT RET
  1. ; DKA 2013-02-25 artf13536 Return null for decimal values, per grammatical standard.
  1. Q:INT'=(INT\1) RET
  1. S X=+INT
  1. Q:+INT=0 $$LABEL($T(BASE+1))
  1. F I=1:1:3 Q:X=0 D
  1. .S COMP(I)=X#1000
  1. .S X=X\1000
  1. F I=1:1:3 D
  1. .Q:'$G(COMP(4-I))
  1. .S RET=$$ADD(RET,$$ADD($$GRPTOWD(COMP(4-I)),$$LABEL($T(SCALES+4-I))),", ")
  1. K COMP,X
  1. Q RET
  1. ;
  1. LABEL(TEXT) ;EP-
  1. ;Q $E(TEXT,4,99)
  1. Q $P(TEXT,";;",2)
  1. ADD(RES,EXTRA,SEP) ;EP-
  1. Q RES_$S((RES'="")&(EXTRA'=""):$G(SEP," "),1:"")_EXTRA
  1. GRPTOWD(GROUP) ;EP-
  1. N HDRDS,TENMOD,TENS,ONES,RES
  1. S RES=""
  1. S HDRDS=GROUP\100
  1. S TENMOD=GROUP#100
  1. S TENS=TENMOD\10
  1. S ONES=TENMOD#10
  1. S:HDRDS'=0 RES=$$LABEL($T(BASE+HDRDS+1))_" Hundred"
  1. I TENS>1 D
  1. .S RES=$$ADD(RES,$$LABEL($T(TENS+TENS+1)))
  1. .S:ONES'=0 RES=$$ADD(RES,$$LABEL($T(BASE+ONES+1)))
  1. E I TENMOD'=0 D
  1. .S RES=$$ADD(RES,$$LABEL($T(BASE+TENMOD+1)))
  1. Q RES
  1. BASE ;EP-
  1. ;;Zero
  1. ;;One
  1. ;;Two
  1. ;;Three
  1. ;;Four
  1. ;;Five
  1. ;;Six
  1. ;;Seven
  1. ;;Eight
  1. ;;Nine
  1. ;;Ten
  1. ;;Eleven
  1. ;;Twelve
  1. ;;Thirteen
  1. ;;Fourteen
  1. ;;Fifteen
  1. ;;Sixteen
  1. ;;Seventeen
  1. ;;Eighteen
  1. ;;Nineteen
  1. TENS ;EP-
  1. ;
  1. ;
  1. ;;Twenty
  1. ;;Thirty
  1. ;;Forty
  1. ;;Fifty
  1. ;;Sixty
  1. ;;Seventy
  1. ;;Eighty
  1. ;;Ninety
  1. SCALES ;EP-
  1. ;
  1. ;;Thousand
  1. ;;Million
  1. ;;Billion
  1. ;;Trillion
  1. ASSERT(EXPR,MSG) ;EP-
  1. N Y
  1. X EXPR
  1. W $S(Y:"Passed",1:"Failed")_": "_MSG,!
  1. Q Y
  1. ASSRTEQ(EXP,ACTL) ;EP-
  1. Q $$ASSERT("S Y=$S("""_EXP_"""="""_ACTL_""":1,1:0)",EXP_" equal to "_ACTL)
  1. TEST ;EP-
  1. Q:'$$ASSRTEQ($$WRDFMT(0),"Zero")
  1. Q:'$$ASSRTEQ($$WRDFMT(60),"Sixty")
  1. Q:'$$ASSRTEQ($$WRDFMT(1),"One")
  1. Q:'$$ASSRTEQ($$WRDFMT(17),"Seventeen")
  1. Q:'$$ASSRTEQ($$WRDFMT(100),"One Hundred")
  1. Q:'$$ASSRTEQ($$WRDFMT(150),"One Hundred Fifty")
  1. Q:'$$ASSRTEQ($$WRDFMT(115),"One Hundred Fifteen")
  1. Q:'$$ASSRTEQ($$WRDFMT(1115),"One Thousand, One Hundred Fifteen")
  1. Q:'$$ASSRTEQ($$WRDFMT(2000114),"Two Million, One Hundred Fourteen")
  1. Q:'$$ASSRTEQ($$WRDFMT(6.5),"")