IBCEFG6 ;ALB/TMP - OUTPUT FORMATTER MAINT-FORM FLD ACTION PROCESSING ;23-JAN-96
;;2.0;INTEGRATED BILLING;**52,51**;21-MAR-94
;
ADD ; Add a new local form fld
; Assumes IBCEXDA defined
N %,IB,IBASSOC,IBDA,IBSEL,IBCOPY,X,Y,DD,DO,DIC,DIE,DR,DA,DLAYGO,LDINUM,DINUM,IBSCREEN
G:'$G(IBCEXDA) ADDQ
D FULL^VALM1
S IBASSOC=$P($G(^IBE(353,IBCEXDA,2)),U,5) S:IBASSOC=IBCEXDA IBASSOC="" S IBSEL=(IBASSOC'="")
S IBSCREEN=$P($G(^IBE(353,IBCEXDA,2)),U,2)="S"
I 'IBASSOC,$O(^IBA(364.6,"B",IBCEXDA,"")) D G:'IBSEL ADD1
.W !,"OVERRIDE AN EXISTING FIELD" S %=2 D YN^DICN
.I (%+1#3) S IBSEL=1
G:'IBSEL ADD1
D SEL(.IBDA,1)
S IB=$O(IBDA("")) G:'IB ADDQ
; Associated form - only choose non-associated fld to override
I IBASSOC,$S('IBSCREEN:$P($G(^IBA(364.6,+IBDA(IB),0)),U,2)'="N",1:0) W !!,"Can Only Over-ride a NATIONAL form field",! D PAUSE^VALM1 S IB=0 G ADDQ
I 'IBASSOC,$S('IBSCREEN:$P($G(^IBA(364.6,+IBDA(IB),0)),U,3),1:+IBDA(IB)'=$P($G(^IBA(364.6,+IBDA(IB),0)),U,3)) W !!,"Can't Over-ride a form field that is an over-ride itself",! D PAUSE^VALM1 S IB=0 G ADDQ
I $P($G(^IBA(364.6,+IBDA(IB),0)),U,7)=0 W !!,"Form field definition will not allow override",! D PAUSE^VALM1 S IB=0 G ADDQ
W !!,"Over-riding Form Field # ",IB," - ",$P($G(^IBA(364.6,+IBDA(IB),0)),U,10)
W !,"IS THIS OK" S %=2 D YN^DICN
I '(%+1#3) S IB=0 G ADDQ
W !,"COPY OVER THE DATA ELEMENT AND OUTPUT FORMAT FROM THE ORIGINAL FLD" S %=1 D YN^DICN
G:%<0 ADDQ
S IB=+IBDA(IB)
S IBCOPY=$S(%+1#3:$O(^IBA(364.7,"B",IB,"")),1:"")
ADD1 K DO,DD,DINUM
S DIC="^IBA(364.6,",DIC(0)="L",DLAYGO=364.6,X=IBCEXDA
S Z=$O(^IBA(364.6,"A"),-1) S:Z<10000 Z=9999
F LDINUM=Z+1:1 L +^IBA(364.6,LDINUM):1 I $T S DINUM=LDINUM Q
S DIC("DR")=".02///L;.07////1;I '$G(IB) S Y=""@10"";.03////"_$G(IB)_";S Y=""@99"""
S DIC("DR")=DIC("DR")_";@10;.04;I X="""" W !,""MUST HAVE A PAGE/SEQ"" S Y=""@10"";@20;.05;I X="""" W !,""MUST HAVE A FIRST LINE #"" S Y=""@20"";@30;.08;I X="""" W !,""MUST HAVE A STARTING COLUMN"" S Y=""@30"";@99"
D FILE^DICN
K DLAYGO,DO,DD,DINUM
S $P(^IBA(364.6,0),U,3)=$O(^IBA(364.6,9999),-1) L -^IBA(364.6,LDINUM)
K DIC,DO,DD,DLAYGO
G:Y<0 ADDQ
S IBDA=+Y
ADDQ I $G(IBDA) D EDITL(IBDA,"",1,$G(IBCOPY)),BLD^IBCEFG5
S VALMBCK="R"
Q
;
EDIT ; Edit a local form fld
N IBEDIT,IBDA,IB
D FULL^VALM1
S IBEDIT=0
D SEL(.IBDA)
S IB=0 F S IB=$O(IBDA(IB)) Q:'IB W !!,"Form field: (#",IB,")",$S($P($G(^IBA(364.6,+IBDA(IB),0)),U,10)'="":" - "_$P(^(0),U,10),1:"") D
.I $P($G(^IBA(364.6,+IBDA(IB),0)),U,2)="N" W " is a NATIONAL form field",! D NOEDIT("EDIT A NATIONAL FIELD FROM") Q
.D VIEW^IBCEFG61(+IBDA(IB),+$O(^IBA(364.7,"B",+IBDA(IB),""))),EDITL(+IBDA(IB),IB) S IBEDIT=1
D:IBEDIT BLD^IBCEFG5
S VALMBCK="R"
Q
;
EDITL(DA,FLD,NOASK,IBCOPY) ; Edit a local form fld #FLD in display whose ien is DA
; NOASK = 1, don't ask, just do it
; IBCOPY = IFN of entry in file 364.7 whose data element and format code
; should be copied into this new entry
S DIE="^IBA(364.6,",DR="[IBCE ADD/EDIT LOCAL FORM FIELD]" D ^DIE
I '$G(NOASK) W !!,$S($D(^IBA(364.7,"B",DA)):"EDIT",1:"ADD")," FORM FIELD",$S($G(FLD):" #"_FLD,1:""),"'S CONTENT DEFINITION NOW" S %=2 D YN^DICN
I $G(NOASK) W !!,"...Please define CONTENT of field...",! S %=1
D:(%+1#3) CONTENT(DA,$G(IBCOPY))
Q
;
VIEWF(IBDA) ;
D SEL(.IBDA)
D FULL^VALM1
S IBDA=0 F S IBDA=$O(IBDA(IBDA)) Q:'IBDA W !!,"Definition of Form Field: (#",IBDA,")",$S($P($G(^IBA(364.6,+IBDA(IBDA),0)),U,10)'="":" - "_$P(^(0),U,10),1:"") D
.D VIEW^IBCEFG61(+IBDA(IBDA),+$O(^IBA(364.7,"B",+IBDA(IBDA),""))),PAUSE^VALM1
;I IBCONT D BLD^IBCEFG5
S VALMBCK="R"
Q
;
CONTENT(IBDA,IBCOPY) ; Add/edit form fld definition content
; IBDA = corresponding entry in file 364.6 for definition being
; added/edited. If null, ask for selections from current screen
; IBCOPY = IFN of entry in file 364.7 whose data element and format code
; should be copied into this new entry
N IBCONT,DIPA
D FULL^VALM1
S IBCONT=0
I $G(IBDA) D CONTED(IBDA,.IBCONT,$G(IBCOPY)) G CONTQ
D SEL(.IBDA)
S IBDA=0 F S IBDA=$O(IBDA(IBDA)) Q:'IBDA W !!,"Defining content of form field: (#",IBDA,")",$S($P($G(^IBA(364.6,+IBDA(IBDA),0)),U,10)'="":" - "_$P(^(0),U,10),1:"") D
.I $P($G(^IBA(364.6,+IBDA(IBDA),0)),U,2)="N" W " is a NATIONAL form field",! D NOEDIT("EDIT A NATIONAL FIELD FROM") Q
.D VIEW^IBCEFG61(+IBDA(IBDA),+$O(^IBA(364.7,"B",+IBDA(IBDA),""))),CONTED(+IBDA(IBDA),.IBCONT)
CONTQ I IBCONT D BLD^IBCEFG5
S VALMBCK="R"
Q
;
CONTED(IBDA,IBCONT,IBCOPY) ; Edit definition for ien IBDA
; IBDA = file 364.6 entry whose definition is being edited
; IBCONT = flag returned as 1 if a new associated form fld created,
; forcing a regeneration of the display
; IBCOPY = IFN of entry in file 364.7 whose data element and format code
; should be copied into this new entry
N IBCECDA,DIC,DD,DO,DINUM,LDINUM,X,Y,Z
S IBCECDA=$O(^IBA(364.7,"B",IBDA,""))
I IBCECDA="" D S:IBCECDA IBCONT=1
.K DO,DD,DINUM
.S DIC="^IBA(364.7,",DIC(0)="L",DLAYGO=364.7,DIC("DR")=".02////L;.07////N",X=IBDA
.I $G(IBCOPY) S DIC("DR")=DIC("DR")_";.03////"_$P($G(^IBA(364.7,IBCOPY,0)),U,3)
.S Z=$O(^IBA(364.7,"A"),-1) S:Z<10000 Z=9999
.F LDINUM=Z+1:1 L +^IBA(364.7,LDINUM):1 I $T S DINUM=LDINUM Q
.D FILE^DICN
.S $P(^IBA(364.7,0),U,3)=$O(^IBA(364.7,9999),-1) L -^IBA(364.7,LDINUM)
.K DIC,DO,DD,DINUM,DLAYGO
.S:Y>0 IBCECDA=+Y
.I $G(IBCOPY) S ^IBA(364.7,+Y,1)=$G(^IBA(364.7,IBCOPY,1)) M ^IBA(364.7,+Y,3)=^IBA(364.7,IBCOPY,3)
Q:'IBCECDA
ED1 S DA=IBCECDA,DIE="^IBA(364.7,",DR="[IBCE EDIT FIELD CONTENT]" D ^DIE
I $$EDCHK^IBCEFG60(IBCECDA) G ED1 ;Do edit checks,re-edit if indicated
Q
;
VIEWEL(IBBASE) ; View a data element
; IBBASE = ien of the base file for the element to be viewed
; if undef - any element can be selected
N DIC,Y,IBBASE
D FULL^VALM1
W !!
I $G(IBCEXDA) S IBBASE=+$G(^IBE(353,IBCEXDA,2))
S:$G(IBBASE) DIC("S")="I $P(^(0),U,5)="_IBBASE S DIC="^IBA(364.5,",DIC(0)="AEMQ",DIC("A")="Select a DATA ELEMENT: " D ^DIC K DIC
I Y>0 D VIEWE^IBCEFG61(+Y),PAUSE^VALM1
VIEWELQ S VALMBCK="R"
Q
;
NOEDIT(FUNC,FLD) ; Write NO CHANGE msg for associated flds
I $G(FLD) W !,"FORM FIELD #: ",FLD
W !,*7,"YOU CANNOT ",FUNC," A NATIONALLY ASSOCIATED LOCAL FORM",!," - REDEFINE THE FIELD'S CONTENT BY USING A LOCAL FORM FIELD TO OVERRIDE"
D PAUSE^VALM1
Q
;
FNL ; Clean up
K ^TMP("IBCEDEFDX",$J)
D CLEAN^VALM10
Q
;
SEL(IBDA,ONE) ; Select form fld entries from list
D EN^VALM2($G(XQORNOD(0)),$S('$G(ONE):"",1:"S"))
S IBDA=0 F S IBDA=$O(VALMY(IBDA)) Q:'IBDA S IBDA(IBDA)=+$P($G(^TMP("IBCEFLDDX",$J,IBDA)),U,2)
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCEFG6 6671 printed Oct 16, 2024@18:11:14 Page 2
IBCEFG6 ;ALB/TMP - OUTPUT FORMATTER MAINT-FORM FLD ACTION PROCESSING ;23-JAN-96
+1 ;;2.0;INTEGRATED BILLING;**52,51**;21-MAR-94
+2 ;
ADD ; Add a new local form fld
+1 ; Assumes IBCEXDA defined
+2 NEW %,IB,IBASSOC,IBDA,IBSEL,IBCOPY,X,Y,DD,DO,DIC,DIE,DR,DA,DLAYGO,LDINUM,DINUM,IBSCREEN
+3 if '$GET(IBCEXDA)
GOTO ADDQ
+4 DO FULL^VALM1
+5 SET IBASSOC=$PIECE($GET(^IBE(353,IBCEXDA,2)),U,5)
if IBASSOC=IBCEXDA
SET IBASSOC=""
SET IBSEL=(IBASSOC'="")
+6 SET IBSCREEN=$PIECE($GET(^IBE(353,IBCEXDA,2)),U,2)="S"
+7 IF 'IBASSOC
IF $ORDER(^IBA(364.6,"B",IBCEXDA,""))
Begin DoDot:1
+8 WRITE !,"OVERRIDE AN EXISTING FIELD"
SET %=2
DO YN^DICN
+9 IF (%+1#3)
SET IBSEL=1
End DoDot:1
if 'IBSEL
GOTO ADD1
+10 if 'IBSEL
GOTO ADD1
+11 DO SEL(.IBDA,1)
+12 SET IB=$ORDER(IBDA(""))
if 'IB
GOTO ADDQ
+13 ; Associated form - only choose non-associated fld to override
+14 IF IBASSOC
IF $SELECT('IBSCREEN:$PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,2)'="N",1:0)
WRITE !!,"Can Only Over-ride a NATIONAL form field",!
DO PAUSE^VALM1
SET IB=0
GOTO ADDQ
+15 IF 'IBASSOC
IF $SELECT('IBSCREEN:$PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,3),1:+IBDA(IB)'=$PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,3))
WRITE !!,"Can't Over-ride a form field that is an over-ride itself",!
DO PAUSE^VALM1
SET IB=0
GOTO ADDQ
+16 IF $PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,7)=0
WRITE !!,"Form field definition will not allow override",!
DO PAUSE^VALM1
SET IB=0
GOTO ADDQ
+17 WRITE !!,"Over-riding Form Field # ",IB," - ",$PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,10)
+18 WRITE !,"IS THIS OK"
SET %=2
DO YN^DICN
+19 IF '(%+1#3)
SET IB=0
GOTO ADDQ
+20 WRITE !,"COPY OVER THE DATA ELEMENT AND OUTPUT FORMAT FROM THE ORIGINAL FLD"
SET %=1
DO YN^DICN
+21 if %<0
GOTO ADDQ
+22 SET IB=+IBDA(IB)
+23 SET IBCOPY=$SELECT(%+1#3:$ORDER(^IBA(364.7,"B",IB,"")),1:"")
ADD1 KILL DO,DD,DINUM
+1 SET DIC="^IBA(364.6,"
SET DIC(0)="L"
SET DLAYGO=364.6
SET X=IBCEXDA
+2 SET Z=$ORDER(^IBA(364.6,"A"),-1)
if Z<10000
SET Z=9999
+3 FOR LDINUM=Z+1:1
LOCK +^IBA(364.6,LDINUM):1
IF $TEST
SET DINUM=LDINUM
QUIT
+4 SET DIC("DR")=".02///L;.07////1;I '$G(IB) S Y=""@10"";.03////"_$GET(IB)_";S Y=""@99"""
+5 SET DIC("DR")=DIC("DR")_";@10;.04;I X="""" W !,""MUST HAVE A PAGE/SEQ"" S Y=""@10"";@20;.05;I X="""" W !,""MUST HAVE A FIRST LINE #"" S Y=""@20"";@30;.08;I X="""" W !,""MUST HAVE A STARTING COLUMN"" S Y=""@30"";@99"
+6 DO FILE^DICN
+7 KILL DLAYGO,DO,DD,DINUM
+8 SET $PIECE(^IBA(364.6,0),U,3)=$ORDER(^IBA(364.6,9999),-1)
LOCK -^IBA(364.6,LDINUM)
+9 KILL DIC,DO,DD,DLAYGO
+10 if Y<0
GOTO ADDQ
+11 SET IBDA=+Y
ADDQ IF $GET(IBDA)
DO EDITL(IBDA,"",1,$GET(IBCOPY))
DO BLD^IBCEFG5
+1 SET VALMBCK="R"
+2 QUIT
+3 ;
EDIT ; Edit a local form fld
+1 NEW IBEDIT,IBDA,IB
+2 DO FULL^VALM1
+3 SET IBEDIT=0
+4 DO SEL(.IBDA)
+5 SET IB=0
FOR
SET IB=$ORDER(IBDA(IB))
if 'IB
QUIT
WRITE !!,"Form field: (#",IB,")",$SELECT($PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,10)'="":" - "_$PIECE(^(0),U,10),1:"")
Begin DoDot:1
+6 IF $PIECE($GET(^IBA(364.6,+IBDA(IB),0)),U,2)="N"
WRITE " is a NATIONAL form field",!
DO NOEDIT("EDIT A NATIONAL FIELD FROM")
QUIT
+7 DO VIEW^IBCEFG61(+IBDA(IB),+$ORDER(^IBA(364.7,"B",+IBDA(IB),"")))
DO EDITL(+IBDA(IB),IB)
SET IBEDIT=1
End DoDot:1
+8 if IBEDIT
DO BLD^IBCEFG5
+9 SET VALMBCK="R"
+10 QUIT
+11 ;
EDITL(DA,FLD,NOASK,IBCOPY) ; Edit a local form fld #FLD in display whose ien is DA
+1 ; NOASK = 1, don't ask, just do it
+2 ; IBCOPY = IFN of entry in file 364.7 whose data element and format code
+3 ; should be copied into this new entry
+4 SET DIE="^IBA(364.6,"
SET DR="[IBCE ADD/EDIT LOCAL FORM FIELD]"
DO ^DIE
+5 IF '$GET(NOASK)
WRITE !!,$SELECT($DATA(^IBA(364.7,"B",DA)):"EDIT",1:"ADD")," FORM FIELD",$SELECT($GET(FLD):" #"_FLD,1:""),"'S CONTENT DEFINITION NOW"
SET %=2
DO YN^DICN
+6 IF $GET(NOASK)
WRITE !!,"...Please define CONTENT of field...",!
SET %=1
+7 if (%+1#3)
DO CONTENT(DA,$GET(IBCOPY))
+8 QUIT
+9 ;
VIEWF(IBDA) ;
+1 DO SEL(.IBDA)
+2 DO FULL^VALM1
+3 SET IBDA=0
FOR
SET IBDA=$ORDER(IBDA(IBDA))
if 'IBDA
QUIT
WRITE !!,"Definition of Form Field: (#",IBDA,")",$SELECT($PIECE($GET(^IBA(364.6,+IBDA(IBDA),0)),U,10)'="":" - "_$PIECE(^(0),U,10),1:"")
Begin DoDot:1
+4 DO VIEW^IBCEFG61(+IBDA(IBDA),+$ORDER(^IBA(364.7,"B",+IBDA(IBDA),"")))
DO PAUSE^VALM1
End DoDot:1
+5 ;I IBCONT D BLD^IBCEFG5
+6 SET VALMBCK="R"
+7 QUIT
+8 ;
CONTENT(IBDA,IBCOPY) ; Add/edit form fld definition content
+1 ; IBDA = corresponding entry in file 364.6 for definition being
+2 ; added/edited. If null, ask for selections from current screen
+3 ; IBCOPY = IFN of entry in file 364.7 whose data element and format code
+4 ; should be copied into this new entry
+5 NEW IBCONT,DIPA
+6 DO FULL^VALM1
+7 SET IBCONT=0
+8 IF $GET(IBDA)
DO CONTED(IBDA,.IBCONT,$GET(IBCOPY))
GOTO CONTQ
+9 DO SEL(.IBDA)
+10 SET IBDA=0
FOR
SET IBDA=$ORDER(IBDA(IBDA))
if 'IBDA
QUIT
WRITE !!,"Defining content of form field: (#",IBDA,")",$SELECT($PIECE($GET(^IBA(364.6,+IBDA(IBDA),0)),U,10)'="":" - "_$PIECE(^(0),U,10),1:"")
Begin DoDot:1
+11 IF $PIECE($GET(^IBA(364.6,+IBDA(IBDA),0)),U,2)="N"
WRITE " is a NATIONAL form field",!
DO NOEDIT("EDIT A NATIONAL FIELD FROM")
QUIT
+12 DO VIEW^IBCEFG61(+IBDA(IBDA),+$ORDER(^IBA(364.7,"B",+IBDA(IBDA),"")))
DO CONTED(+IBDA(IBDA),.IBCONT)
End DoDot:1
CONTQ IF IBCONT
DO BLD^IBCEFG5
+1 SET VALMBCK="R"
+2 QUIT
+3 ;
CONTED(IBDA,IBCONT,IBCOPY) ; Edit definition for ien IBDA
+1 ; IBDA = file 364.6 entry whose definition is being edited
+2 ; IBCONT = flag returned as 1 if a new associated form fld created,
+3 ; forcing a regeneration of the display
+4 ; IBCOPY = IFN of entry in file 364.7 whose data element and format code
+5 ; should be copied into this new entry
+6 NEW IBCECDA,DIC,DD,DO,DINUM,LDINUM,X,Y,Z
+7 SET IBCECDA=$ORDER(^IBA(364.7,"B",IBDA,""))
+8 IF IBCECDA=""
Begin DoDot:1
+9 KILL DO,DD,DINUM
+10 SET DIC="^IBA(364.7,"
SET DIC(0)="L"
SET DLAYGO=364.7
SET DIC("DR")=".02////L;.07////N"
SET X=IBDA
+11 IF $GET(IBCOPY)
SET DIC("DR")=DIC("DR")_";.03////"_$PIECE($GET(^IBA(364.7,IBCOPY,0)),U,3)
+12 SET Z=$ORDER(^IBA(364.7,"A"),-1)
if Z<10000
SET Z=9999
+13 FOR LDINUM=Z+1:1
LOCK +^IBA(364.7,LDINUM):1
IF $TEST
SET DINUM=LDINUM
QUIT
+14 DO FILE^DICN
+15 SET $PIECE(^IBA(364.7,0),U,3)=$ORDER(^IBA(364.7,9999),-1)
LOCK -^IBA(364.7,LDINUM)
+16 KILL DIC,DO,DD,DINUM,DLAYGO
+17 if Y>0
SET IBCECDA=+Y
+18 IF $GET(IBCOPY)
SET ^IBA(364.7,+Y,1)=$GET(^IBA(364.7,IBCOPY,1))
MERGE ^IBA(364.7,+Y,3)=^IBA(364.7,IBCOPY,3)
End DoDot:1
if IBCECDA
SET IBCONT=1
+19 if 'IBCECDA
QUIT
ED1 SET DA=IBCECDA
SET DIE="^IBA(364.7,"
SET DR="[IBCE EDIT FIELD CONTENT]"
DO ^DIE
+1 ;Do edit checks,re-edit if indicated
IF $$EDCHK^IBCEFG60(IBCECDA)
GOTO ED1
+2 QUIT
+3 ;
VIEWEL(IBBASE) ; View a data element
+1 ; IBBASE = ien of the base file for the element to be viewed
+2 ; if undef - any element can be selected
+3 NEW DIC,Y,IBBASE
+4 DO FULL^VALM1
+5 WRITE !!
+6 IF $GET(IBCEXDA)
SET IBBASE=+$GET(^IBE(353,IBCEXDA,2))
+7 if $GET(IBBASE)
SET DIC("S")="I $P(^(0),U,5)="_IBBASE
SET DIC="^IBA(364.5,"
SET DIC(0)="AEMQ"
SET DIC("A")="Select a DATA ELEMENT: "
DO ^DIC
KILL DIC
+8 IF Y>0
DO VIEWE^IBCEFG61(+Y)
DO PAUSE^VALM1
VIEWELQ SET VALMBCK="R"
+1 QUIT
+2 ;
NOEDIT(FUNC,FLD) ; Write NO CHANGE msg for associated flds
+1 IF $GET(FLD)
WRITE !,"FORM FIELD #: ",FLD
+2 WRITE !,*7,"YOU CANNOT ",FUNC," A NATIONALLY ASSOCIATED LOCAL FORM",!," - REDEFINE THE FIELD'S CONTENT BY USING A LOCAL FORM FIELD TO OVERRIDE"
+3 DO PAUSE^VALM1
+4 QUIT
+5 ;
FNL ; Clean up
+1 KILL ^TMP("IBCEDEFDX",$JOB)
+2 DO CLEAN^VALM10
+3 QUIT
+4 ;
SEL(IBDA,ONE) ; Select form fld entries from list
+1 DO EN^VALM2($GET(XQORNOD(0)),$SELECT('$GET(ONE):"",1:"S"))
+2 SET IBDA=0
FOR
SET IBDA=$ORDER(VALMY(IBDA))
if 'IBDA
QUIT
SET IBDA(IBDA)=+$PIECE($GET(^TMP("IBCEFLDDX",$JOB,IBDA)),U,2)
+3 QUIT
+4 ;