Display blocks containing specific pattern

Hi,

I have a file containing multiple entries. Each block starts with <BEGIN and ends with <END. Sample data is given below

<BEGIN
    IMSI=095001202630;
    MSISDN=00145132916;
    DEFCALL=TS11;
    CURRENTNAM=BOTH;
    CAT=COMMON;
    TBS=TS11&TS12&TS21&TS22;
    CARDTYPE=SIM;
    VLRLIST=200;
    CLIPOC=NO;
    LCS=1;
   OCSI=131;
  TCSI=88;   
    UCSI=28;
    SUBRES=ALLPLMN;
    SUB_AGE=0;
    UPL_TIME=1340536017;
    GPRSUPL_TIME=1339578803;
    CHARGE_GLOBAL=NONE;
<END
<BEGIN
    IMSI=095001202630;
    MSISDN=00145132916;
    DEFCALL=TS11;
    CURRENTNAM=BOTH;
    CAT=COMMON;
    TBS=TS11&TS12&TS21&TS22;
    CARDTYPE=SIM;
    VLRLIST=200;
    CLIPOC=NO;
    LCS=1;
    OCSI=131;
    SUBRES=ALLPLMN;
    SUB_AGE=0;
    UPL_TIME=1340536017;
    GPRSUPL_TIME=1339578803;
    CHARGE_GLOBAL=NONE;
<END

I want to display all lines b/w <BEGIN and <END if OCSI=131 and TCSI= field is not present. In above data, result should be second block as OCSI is 131 and TCSI field is not present. I can get the all lines b/w BEGIN and END using sed but at loss on how to proceed further. Thanks

sed -n '/<BEGIN/,/<END/{
H
/<END/{
 s/.*//
 x
 /\n *TCSI=/! {
 /\n *OCSI=131.\n/ {
  s/^\n//
  p
 }
}
}
}' inputfile

You can try this in gawk

awk 'BEGIN {RS="<BEGIN"}  $0 !~ /TCSI=/ && /OCSI=131/ { print RS $0 } '