ABMDF1X ; IHS/ASDST/DMJ - PRINT UB82 ;
;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
;Original;TMD;
;
K ABM
U IO
;
MARG ;Set left and top margins
W $$EN^ABMVDF("IOF")
S U="^",(ABM("LM"),ABM("TM"),ABM("LN"))=0
I $D(^ABMDEXP(1,0)) S ABM("LM")=$P(^(0),U,2),ABM("TM")=$P(^(0),U,3)
I +ABM("TM") F ABM("I")=1:1:ABM("TM") W !
;
;Loop thru line number array
LOOP S ABM("LN")=$O(ABMF(ABM("LN"))) I +ABM("LN")=0!(ABM("LN")>63) G XIT
;
;Check for invalid line numbers
F ABM("I")=7,9,40,45 I ABM("I")=ABM("LN") Q
I G LOOP
;
;Set to correct format line
S ABM("FL")=$S(ABM("LN")=1:2,ABM("LN")=3:4,ABM("LN")=5:6,ABM("LN")=11:12,ABM("LN")=13:14,ABM("LN")=15:14,ABM("LN")>17&(ABM("LN")<40):17,ABM("LN")=42:41,ABM("LN")=43:41,ABM("LN")=47:46,1:99)
I ABM("FL")=99 S ABM("FL")=$S(ABM("LN")=48:46,ABM("LN")=49:50,ABM("LN")=51:50,ABM("LN")=58:59,ABM("LN")=60:61,ABM("LN")=62:63,1:ABM("LN"))
;
;Set tab & format variables
S ABM("TABS")=$P($T(@ABM("FL")),";;",2)
S ABM("FMAT")=$P($T(@ABM("FL")),";;",3)
;
;Skip to req'd line
F Q:$Y-ABM("TM")>(ABM("LN")-2) W !
;
; Test Modes for setting Data Fields
G LOOP2:'$D(ABMF("TEST"))
F ABM("I")=1:1:$L(ABM("FMAT"),U) I $P(ABM("TABS"),U,ABM("I"))]"" S ABM("FLD")="",$P(ABM("FLD"),"X",$P(ABM("FMAT"),U,ABM("I"))+1)="" I ABM("FLD")]"" W ?($P(ABM("TABS"),U,ABM("I"))+ABM("LM")) D FRMT
G LOOP
;
;Loop thru the pieces of the line array
LOOP2 F ABM("I")=1:1:$L(ABMF(ABM("LN")),U) I $P(ABM("TABS"),U,ABM("I"))]"" S ABM("FLD")=$P(ABMF(ABM("LN")),U,ABM("I")) I ABM("FLD")]"" W ?($P(ABM("TABS"),U,ABM("I"))+ABM("LM")) D FRMT
G LOOP
;
;Write the field in the designated format
FRMT S ABM("LTH")=$P(ABM("FMAT"),U,ABM("I")) I +ABM("LTH")=0 S ABM("LTH")=99
I ABM("LTH")["$" S ABM("LTH")=$P(ABM("LTH"),"$") W $J($FN(ABM("FLD"),",",2),ABM("LTH")) Q
I ABM("LTH")["L" S ABM("LTH")=$P(ABM("LTH"),"L") F Q:$L(ABM("FLD"))=ABM("LTH")!($L(ABM("FLD"))>ABM("LTH")) S ABM("FLD")="0"_ABM("FLD")
I ABM("LTH")["C" S ABM("LTH")=$P(ABM("LTH"),"C") S ABM("CTR")=(ABM("LTH")-$L(ABM("FLD")))\2 I ABM("CTR")>1 S ABM("BLNK")="",$P(ABM("BLNK")," ",ABM("CTR"))="",ABM("FLD")=ABM("BLNK")_ABM("FLD")
I ABM("LTH")["R" S ABM("LTH")=$P(ABM("LTH"),"R") S ABM("RT")=ABM("LTH")-$L(ABM("FLD")) I ABM("RT")>1 S ABM("BLNK")="",$P(ABM("BLNK")," ",ABM("RT"))="",ABM("FLD")=ABM("BLNK")_ABM("FLD")
W $E(ABM("FLD"),1,ABM("LTH"))
Q
;
TEST S ABMF("TEST")=1
F ABM=0:ABMF("TEST"):60 S ABMF(ABM)=""
G MARG
;
XIT K ABMF,ABM
Q
;
TEXT ;;TABS;;FIELD LENGTH/FORMAT ($-$ FORMAT,L-LNTH REQ'D,C-CENTER,R-RIGHT)
2 ;;0^26^58^77;;25^31C^17C^3
4 ;;0^26^40^51^60^73;;25^13C^10C^8C^12C^6C
6 ;;0^32;;30^47C
8 ;;0^9^12^14^23^26^29^31^34^37^40^49^58^62^66^69^72;;8^1^1^8^2L^1^1^2L^2L^2L^8^8^3C^3C^2^2^8C
10 ;;0^3^12^15^24^27^36^39^48^51^60^63^72;;2L^8^2L^8^2L^8^2L^8^2L^8^2L^8^8
12 ;;0^32^35^38^41^44^47^50^53^57^60^63;;31^2L^2L^2L^2L^2L^2^2^2^1^2L^17C
14 ;;0^32^35^44^47^56^59^68^71;;31^2L^8$^2L^8$^2L^8$
16 ;;51^61^71;;9C^9C^9C
17 ;;0^25^33^37^41^51^61^71;;24^7^3^3C^9$^9$^9$^9$
41 ;;0^26^29^31^41^51^61^71;;25^1^1^9$^9$^9$^9$^9$
44 ;;51^61^71;;9$^9$^9$
46 ;;0^25^28^31^48^63;;24^1^2L^16C^14^17C
50 ;;0^3^6^31^43;;2^1^24^11^37
52 ;;19;;26
53 ;;0^46^53^60^67^74;;45^6^6^6^6
54 ;;22;;22
55 ;;1^3^45^51^57^63^69^75;;1^41^5^5^5^5^5^5
56 ;;45^67;;12C^13C
57 ;;1^3^12^21^24^35^58;;1^8^8^1^10C^22^22
58 ;;0;;39C
59 ;;0^40^49^59^63^72;;39C^8^9^4^8^8C
61 ;;0^40^51^55^59^63^72;;39C^10^3^3^3^8^8
63 ;;0^47^70;;39C^20^9
ABMDF1X ; IHS/ASDST/DMJ - PRINT UB82 ;
+1 ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
+2 ;Original;TMD;
+3 ;
+4 KILL ABM
+5 USE IO
+6 ;
MARG ;Set left and top margins
+1 WRITE $$EN^ABMVDF("IOF")
+2 SET U="^"
SET (ABM("LM"),ABM("TM"),ABM("LN"))=0
+3 IF $DATA(^ABMDEXP(1,0))
SET ABM("LM")=$PIECE(^(0),U,2)
SET ABM("TM")=$PIECE(^(0),U,3)
+4 IF +ABM("TM")
FOR ABM("I")=1:1:ABM("TM")
WRITE !
+5 ;
+6 ;Loop thru line number array
LOOP SET ABM("LN")=$ORDER(ABMF(ABM("LN")))
IF +ABM("LN")=0!(ABM("LN")>63)
GOTO XIT
+1 ;
+2 ;Check for invalid line numbers
+3 FOR ABM("I")=7,9,40,45
IF ABM("I")=ABM("LN")
QUIT
+4 IF $TEST
GOTO LOOP
+5 ;
+6 ;Set to correct format line
+7 SET ABM("FL")=$SELECT(ABM("LN")=1:2,ABM("LN")=3:4,ABM("LN")=5:6,ABM("LN")=11:12,ABM("LN")=13:14,ABM("LN")=15:14,ABM("LN")>17&(ABM("LN")<40):17,ABM("LN")=42:41,ABM("LN")=43:41,ABM("LN")=47:46,1:99)
+8 IF ABM("FL")=99
SET ABM("FL")=$SELECT(ABM("LN")=48:46,ABM("LN")=49:50,ABM("LN")=51:50,ABM("LN")=58:59,ABM("LN")=60:61,ABM("LN")=62:63,1:ABM("LN"))
+9 ;
+10 ;Set tab & format variables
+11 SET ABM("TABS")=$PIECE($TEXT(@ABM("FL")),";;",2)
+12 SET ABM("FMAT")=$PIECE($TEXT(@ABM("FL")),";;",3)
+13 ;
+14 ;Skip to req'd line
+15 FOR
IF $Y-ABM("TM")>(ABM("LN")-2)
QUIT
WRITE !
+16 ;
+17 ; Test Modes for setting Data Fields
+18 IF '$DATA(ABMF("TEST"))
GOTO LOOP2
+19 FOR ABM("I")=1:1:$LENGTH(ABM("FMAT"),U)
IF $PIECE(ABM("TABS"),U,ABM("I"))]""
SET ABM("FLD")=""
SET $PIECE(ABM("FLD"),"X",$PIECE(ABM("FMAT"),U,ABM("I"))+1)=""
IF ABM("FLD")]""
WRITE ?($PIECE(ABM("TABS"),U,ABM("I"))+ABM("LM"))
DO FRMT
+20 GOTO LOOP
+21 ;
+22 ;Loop thru the pieces of the line array
LOOP2 FOR ABM("I")=1:1:$LENGTH(ABMF(ABM("LN")),U)
IF $PIECE(ABM("TABS"),U,ABM("I"))]""
SET ABM("FLD")=$PIECE(ABMF(ABM("LN")),U,ABM("I"))
IF ABM("FLD")]""
WRITE ?($PIECE(ABM("TABS"),U,ABM("I"))+ABM("LM"))
DO FRMT
+1 GOTO LOOP
+2 ;
+3 ;Write the field in the designated format
FRMT SET ABM("LTH")=$PIECE(ABM("FMAT"),U,ABM("I"))
IF +ABM("LTH")=0
SET ABM("LTH")=99
+1 IF ABM("LTH")["$"
SET ABM("LTH")=$PIECE(ABM("LTH"),"$")
WRITE $JUSTIFY($FNUMBER(ABM("FLD"),",",2),ABM("LTH"))
QUIT
+2 IF ABM("LTH")["L"
SET ABM("LTH")=$PIECE(ABM("LTH"),"L")
FOR
IF $LENGTH(ABM("FLD"))=ABM("LTH")!($LENGTH(ABM("FLD"))>ABM("LTH"))
QUIT
SET ABM("FLD")="0"_ABM("FLD")
+3 IF ABM("LTH")["C"
SET ABM("LTH")=$PIECE(ABM("LTH"),"C")
SET ABM("CTR")=(ABM("LTH")-$LENGTH(ABM("FLD")))\2
IF ABM("CTR")>1
SET ABM("BLNK")=""
SET $PIECE(ABM("BLNK")," ",ABM("CTR"))=""
SET ABM("FLD")=ABM("BLNK")_ABM("FLD")
+4 IF ABM("LTH")["R"
SET ABM("LTH")=$PIECE(ABM("LTH"),"R")
SET ABM("RT")=ABM("LTH")-$LENGTH(ABM("FLD"))
IF ABM("RT")>1
SET ABM("BLNK")=""
SET $PIECE(ABM("BLNK")," ",ABM("RT"))=""
SET ABM("FLD")=ABM("BLNK")_ABM("FLD")
+5 WRITE $EXTRACT(ABM("FLD"),1,ABM("LTH"))
+6 QUIT
+7 ;
TEST SET ABMF("TEST")=1
+1 FOR ABM=0:ABMF("TEST"):60
SET ABMF(ABM)=""
+2 GOTO MARG
+3 ;
XIT KILL ABMF,ABM
+1 QUIT
+2 ;
TEXT ;;TABS;;FIELD LENGTH/FORMAT ($-$ FORMAT,L-LNTH REQ'D,C-CENTER,R-RIGHT)
2 ;;0^26^58^77;;25^31C^17C^3
4 ;;0^26^40^51^60^73;;25^13C^10C^8C^12C^6C
6 ;;0^32;;30^47C
8 ;;0^9^12^14^23^26^29^31^34^37^40^49^58^62^66^69^72;;8^1^1^8^2L^1^1^2L^2L^2L^8^8^3C^3C^2^2^8C
10 ;;0^3^12^15^24^27^36^39^48^51^60^63^72;;2L^8^2L^8^2L^8^2L^8^2L^8^2L^8^8
12 ;;0^32^35^38^41^44^47^50^53^57^60^63;;31^2L^2L^2L^2L^2L^2^2^2^1^2L^17C
14 ;;0^32^35^44^47^56^59^68^71;;31^2L^8$^2L^8$^2L^8$
16 ;;51^61^71;;9C^9C^9C
17 ;;0^25^33^37^41^51^61^71;;24^7^3^3C^9$^9$^9$^9$
41 ;;0^26^29^31^41^51^61^71;;25^1^1^9$^9$^9$^9$^9$
44 ;;51^61^71;;9$^9$^9$
46 ;;0^25^28^31^48^63;;24^1^2L^16C^14^17C
50 ;;0^3^6^31^43;;2^1^24^11^37
52 ;;19;;26
53 ;;0^46^53^60^67^74;;45^6^6^6^6
54 ;;22;;22
55 ;;1^3^45^51^57^63^69^75;;1^41^5^5^5^5^5^5
56 ;;45^67;;12C^13C
57 ;;1^3^12^21^24^35^58;;1^8^8^1^10C^22^22
58 ;;0;;39C
59 ;;0^40^49^59^63^72;;39C^8^9^4^8^8C
61 ;;0^40^51^55^59^63^72;;39C^10^3^3^3^8^8
63 ;;0^47^70;;39C^20^9