上海交易所模拟成交存储过程

--声明:本存储过程并非真正的交易成交程序

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

ALTER  PROCEDURE shcj @clbz CHAR(1) = '0' AS


DECLARE @offset INT
--SELECT @offset = 101030000
IF @clbz NOT IN ('0' , '1' , '2' , '3' , '5' , '9')
BEGIN
    RETURN
END

--@offset 规则,第1-2位OIW编号,之后补6个0
--bcye规则,第1-2位OIW编号,第3-4位SET编号(991用7表示,20用8表示),之后补6个0
DECLARE @set1 INT , @set2 INT , @set3 INT , @set4 INT
DECLARE @set5 INT , @set6 INT , @set7 INT , @set8 INT
SELECT @offset = 03000000
SELECT @set1 = 0300000000 , @set2 = 0300000000 , @set3 = 0300000000
SELECT @set4 = 0300000000 , @set5 = 0300000000 , @set6 = 0300000000
SELECT @set7 = 0300000000 , @set8 = 0300000000

DECLARE @reff CHAR (10) ,     @owflag CHAR(3) ,       @branchid CHAR(5)
DECLARE @gddm CHAR(10) ,     @gdxm CHAR (10) ,     @bcrq CHAR(8) ,
    @cjbh INT ,         @gsdm CHAR(5) ,     @cjsl CHAR(10) ,
    @bcye CHAR(10) ,     @zqdm CHAR(6) ,     @sbsj CHAR(6) ,
    @cjsj CHAR(6) ,     @cjjg CHAR(8) ,     @cjje CHAR(12) ,
    @sqbh CHAR(10) ,     @bs CHAR(1) ,         @mjbh CHAR(5)
DECLARE    @rec_num INT ,         @date CHAR(8) ,     @time CHAR (8) ,
    @status CHAR(1) ,     @qty2 CHAR(8) ,     @remark CHAR(30) ,
    @status1 CHAR(1) ,     @teordernum CHAR(8) ,     @ordrec CHAR(8) ,
    @checkord BINARY(16)
DECLARE @cjsl_cj INT
DECLARE @cjsl_gz CHAR(10)
DECLARE @stock_gz CHAR(6) , @bs_gz CHAR(1)
DECLARE @count INT
DECLARE @zqdm_etf CHAR(6) , @cjsl_etf CHAR(6) , @bs_etf CHAR(1)
DECLARE @sec_code CHAR(6) , @stock_vol INT
DECLARE @cjsl1 CHAR(10) , @cjsl2 CHAR(10) , @cjsl3 CHAR(10)
DECLARE @cjjg1 MONEY
DECLARE @bcye1 INT , @bcye2 INT , @bcye3 INT , @bcye4 INT
DECLARE @bcye5 INT , @bcye6 INT , @bcye7 INT , @bcye8 INT

SELECT @cjbh = ISNULL(MAX(cjbh) , @offset) FROM CJHB
SELECT @bcye1 = ISNULL(MAX(BCYE) , @set1) FROM CJHB WHERE GDXM = '1'
SELECT @bcye2 = ISNULL(MAX(BCYE) , @set2) FROM CJHB WHERE GDXM = '2'
SELECT @bcye3 = ISNULL(MAX(BCYE) , @set3) FROM CJHB WHERE GDXM = '3'
SELECT @bcye4 = ISNULL(MAX(BCYE) , @set4) FROM CJHB WHERE GDXM = '4'
SELECT @bcye5 = ISNULL(MAX(BCYE) , @set5) FROM CJHB WHERE GDXM = '5'
SELECT @bcye6 = ISNULL(MAX(BCYE) , @set6) FROM CJHB WHERE GDXM = '6'
SELECT @bcye7 = ISNULL(MAX(BCYE) , @set7) FROM CJHB WHERE GDXM = '991'
SELECT @bcye8 = ISNULL(MAX(BCYE) , @set8) FROM CJHB WHERE GDXM = '20'
SELECT @reff = ISNULL(MIN(reff) , '') FROM ORDWTH WHERE status = 'P'
SELECT @reff = LEFT(@reff , 9) + CONVERT(CHAR, (CONVERT(INT , RIGHT(@reff , 1)) - 1))
SELECT @date = CONVERT(CHAR(8), GETDATE() , 112)

WHILE 0=0
BEGIN

    --未成交部分全部成交
    IF @clbz = '3'
    BEGIN
        SELECT @reff = ISNULL(MIN(reff) , '') FROM ORDWTH WHERE status='P' and reff > @reff
        IF @reff = ''
        BEGIN
            BREAK
        END
        --有撤单不处理
        IF EXISTS(SELECT * FROM ORDWTH WHERE reff = @reff AND owflag = 'WTH')
        BEGIN
            CONTINUE   
        END
        SELECT     @gddm = acc ,
            @gdxm = '' ,
            @bcrq = CONVERT(CHAR(8) , GETDATE() , 112) ,
            @gsdm = firmid ,
            @cjsl = '  ' + STR(CONVERT(INT , qty) , 8) ,
--            @cjsl = qty ,
            @bcye = STR('0' , 10),
            @zqdm = stock ,
            @sbsj = REPLACE(time , ':' , '') ,
            @cjsj =    REPLACE(CONVERT(CHAR(8) , GETDATE() , 108) , ':' , '') ,
--            @cjjg = LTRIM(price) ,
            @cjjg = STR(CONVERT(MONEY , price) , 8 , 3) ,
            @sqbh = reff ,
            @bs = bs ,
            @mjbh = '00000' ,
            @time = time ,
            @checkord = checkord ,
            @owflag = owflag ,
            @ordrec = ordrec ,
            @branchid = branchid
            FROM ORDWTH WHERE reff = @reff
            SELECT @cjsl_cj = ISNULL(SUM(CONVERT(INT , cjsl)) , 0) FROM CJHB WHERE sqbh = @reff
            SELECT @cjsl = @cjsl - @cjsl_cj
        --如果已全部成交则不处理
        IF @cjsl = 0
        BEGIN
            CONTINUE
        END
        SELECT @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
        SELECT @cjje = CASE
                           WHEN LEFT(@zqdm , 2) IN ('00' , '01' , '10' , '11' , '12')  THEN STR(ROUND(CONVERT(INT , @cjsl) * CONVERT(MONEY , @cjjg) * 10 , 12 , 2) , 12 , 2) --调整国债/转债/企债的成交金额
                               WHEN LEFT(@zqdm , 2) IN ('20') THEN STR(ROUND(@cjsl * 1000 , 12 , 2) , 12 , 2) ----调整回购的成交金额
                               ELSE STR(ROUND(CONVERT(INT , @cjsl) * CONVERT(MONEY , @cjjg) , 12 , 2) , 12 , 2)
                               END
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        CONTINUE
    END

    SELECT @reff = ISNULL(MIN(reff) , '') FROM ORDWTH WHERE status='R'
    SELECT @rec_num = ISNULL(MIN(rec_num) , '') FROM ORDWTH WHERE @reff = reff AND status='R'
    IF @reff = ''
    BEGIN
        BREAK
    END
    SELECT     @gddm = acc ,
        @gdxm = '' ,
        @bcrq = CONVERT(CHAR(8) , GETDATE() , 112) ,
        @gsdm = firmid ,
        @cjsl = STR(CONVERT(INT , qty) , 10) ,
--        @cjsl = qty,
        @bcye = STR('0' , 10),
        @zqdm = stock ,
        @sbsj = REPLACE(time , ':' , '') ,
        @cjsj =    REPLACE(CONVERT(CHAR(8) , GETDATE() , 108) , ':' , '') ,
--        @cjjg = LTRIM(price) ,
        @cjjg = STR(CONVERT(MONEY , price) , 8 , 3) ,
        @sqbh = reff ,
        @bs = bs ,
        @mjbh = '00000' ,
        @time = time ,
        @checkord = checkord ,
        @owflag = owflag ,
        @ordrec = ordrec
        FROM ORDWTH WHERE reff = @reff AND rec_num = @rec_num
    SELECT @qty2 = '' , @remark = '' , @status1 = 'R' , @teordernum = ''
--select left(@zqdm,1)
    --处理SET编号
    SELECT @gdxm = CASE
            WHEN LEFT(@zqdm , 1) = 9 THEN '20'
                     WHEN @rec_num % 7 = 0 THEN '991'
            WHEN @rec_num % 7 = 1 THEN '1'
            WHEN @rec_num % 7 = 2 THEN '2'
            WHEN @rec_num % 7 = 3 THEN '3'
            WHEN @rec_num % 7 = 4 THEN '4'
            WHEN @rec_num % 7 = 5 THEN '5'
            WHEN @rec_num % 7 = 6 THEN '6'
             END
    --ETF申购赎回只能单笔全部成交
    IF (@zqdm IN ('510051' , '510181' , '510881')) AND (@clbz IN ('1' , '2'))
    BEGIN
        SELECT @clbz = '0'
    END
    --优先处理撤单
    IF @owflag IN ('ORD' , 'NPT')
    BEGIN
        IF EXISTS(SELECT * FROM ORDWTH WHERE status='R' AND reff = @reff AND owflag = 'WTH')
        BEGIN
            SELECT @status = 'O' , @remark = ''
            SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
            INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
            UPDATE ORDWTH SET status = 'P' WHERE reff = @reff AND @rec_num = rec_num
            CONTINUE
        END
    END
    --无效单委托无法撤单
    IF EXISTS(SELECT * FROM ORDWTH2 WHERE reff = @reff AND owflag = 'ORD' AND status = 'F')
    BEGIN
        SELECT @status = 'F' , @remark = '224'
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff and rec_num = @rec_num
        CONTINUE
    END
    --无效单
    IF    (LEFT(@zqdm , 3) IN ('521' , '523' , '524' , '733' , '738' , '789' , '783' , '780' , '582') AND @bs= 'S' AND @owflag = 'ORD') --场内开放基金认购/分红/转换/投票/新股申购/行权的卖出
           OR (LEFT(@zqdm , 3) IN ('522' , '181' , '190' , '191' , '760' , '762' , '764') AND @bs= 'B' AND @owflag = 'ORD') --场内开放基金转托管/要约收购/转股/配股/的买入
       OR (LEFT(@zqdm , 3) IN ('121' , '203' , '740' , '741' , '790' , '791' , '000' , '794' , '793'))  --专项资产/申购款/配号/指数/买断式回购
           OR (@zqdm IN ('888880' , '799990' , '799988' , '510014' , '510054' , '510064' , '510184' , '510884' , '799997')) --ETF现金认购款/新标准券/市值股数/密码服务/回购登记
       OR (@zqdm IN ('510053' , '510183' , '510883')  AND @bs = 'S') --ETF现金认购卖出
       OR (@zqdm IN ('510011' , '510051' , '510061' , '510181' , '510881' , '799999' , '799998' , '799996') AND @owflag = 'WTH') --ETF申购赎回/指定交易/撤消指定交易/回购登记/撤消回购登记的撤单
           OR (@zqdm IN ('799999' , '799998' , '799996') AND @bs = 'S') --指定交易/撤消指定交易/撤消回购登记的卖出
       OR (LEFT(@zqdm , 2) = '09' AND @owflag = 'WTH') --出入库代码撤单
       OR ((LEFT(@zqdm , 3) IN ('738' , '788')) AND @owflag = 'WTH') --投票撤单
       OR (LEFT(@zqdm , 2) NOT IN ('60' , '50' , '58' , '90') AND @zqdm NOT IN ('510010' , '510050' , '510060' , '510180' , '510880') AND @owflag in ('MPT' , 'NPT')) --不能进行市价委托
           OR (@clbz = '9') --强制设为无效单
    BEGIN
        SELECT @status = 'F' , @remark = '109'
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff and rec_num = @rec_num
        CONTINUE
    END
    --有委托确认,没有回报
    IF    (LEFT(@zqdm , 3) IN ('519' , '521' , '522' , '523' , '524' , '733' , '738' , '788' , '780' , '730' , '731' , '781' , '783' , '706' , '181' , '190' , '191' , '582') AND @owflag <> 'WTH') --场内开放基金/投票/新股申购/要约收购/转股/行权
           OR (@zqdm IN ('510013' , '510053' , '510063' , '510183' , '510883')) --ETF现金认购
           OR (@clbz = '5' AND @owflag <> 'MPT')  --除M市价外强制只处理委托状态,不再进行成交
    BEGIN
        SELECT @status = 'O' , @remark = ''
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff and rec_num = @rec_num
        CONTINUE
    END
    --M市价全部撤单
    IF (@clbz = '5' AND @owflag = 'MPT')
    BEGIN
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        SELECT @status = 'W' , @qty2 = @cjsl , @remark = ''
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teordernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET STATUS = 'P' WHERE REFF = @reff and REC_NUM = @rec_num
        CONTINUE
    END
    --出入库抵押
    IF LEFT(@zqdm , 2) = '09'
    BEGIN
        SELECT @cjjg = '0.000' , @cjje = '0.00'
        --出入库代码成交
        SELECT @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        --现券代码成交
        SELECT @bs_gz = CASE
                                WHEN @bs = 'S' THEN 'B'
                                WHEN @bs = 'B' THEN 'S'
                                END
        SELECT @stock_gz = CASE
                                   WHEN SUBSTRING(@zqdm , 3 , 1) = '9' THEN '00' + RIGHT(@zqdm , 4)
                                   WHEN SUBSTRING(@zqdm , 3 , 1) = '0' THEN '01' + RIGHT(@zqdm , 4)
                                   END
        SELECT @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @stock_gz , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs_gz , @mjbh)
        --标准券代码成交
        --@clbz=1,标准券按1:0.93方式生成数量
        --@clbz=2,标准券按1:1.08方式生成数量
        --@clbz=0,标准券按1:1方式生成数量
        SELECT @cjsl_gz = CASE
                                  WHEN @clbz = '1' THEN STR(CONVERT(INT , CONVERT(INT , @cjsl) * 0.93) , 10)
                                  WHEN @clbz = '2' THEN STR(CONVERT(INT , CONVERT(INT , @cjsl) * 1.08) , 10)                   
                                  WHEN @clbz = '0' THEN @cjsl
                                  END
        SELECT @stock_gz = '888880' , @cjbh = @cjbh + 1
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl_gz , @bcye , @stock_gz , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        SELECT @status = 'O' , @remark = ''
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff
        CONTINUE
    END
    --ETF申购赎回
    IF @zqdm IN ('510011' , '510051' , '510061`' , '510181' , '510881')
    BEGIN
        SELECT @count =  CASE
                     WHEN @zqdm = '510011' THEN CONVERT(INT , @cjsl) / 1000000
                     WHEN @zqdm = '510051' THEN CONVERT(INT , @cjsl) / 1000000
                     WHEN @zqdm = '510061' THEN CONVERT(INT , @cjsl) / 1000000
                     WHEN @zqdm = '510181' THEN CONVERT(INT , @cjsl) / 300000
                     WHEN @zqdm = '510881' THEN CONVERT(INT , @cjsl) / 500000
                     END
        --基金代码成交
        SELECT @cjjg = STR(0.000 , 8, 3) , @cjje = STR(0.00 , 12 , 2) , @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END

        SELECT @zqdm_etf = CASE
                                   WHEN @zqdm = '510011' THEN '510010'
                                   WHEN @zqdm = '510051' THEN '510050'
                                   WHEN @zqdm = '510061' THEN '510060'
                                   WHEN @zqdm = '510181' THEN '510180'
                                   WHEN @zqdm = '510881' THEN '510880'
                   END
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @zqdm_etf , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        --成份股成交
        SELECT @bs_etf = CASE
                                 WHEN @bs = 'S' THEN 'B'
                                 WHEN @bs = 'B' THEN 'S'
                                 END
        DECLARE etf CURSOR FOR
        SELECT sec_code , stock_vol FROM etf WHERE sgsh_tx_code = @zqdm AND cash_repl_flag <> 2
        OPEN etf
        FETCH NEXT FROM etf INTO @sec_code , @stock_vol
        WHILE (@@FETCH_STATUS = 0)
        BEGIN
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
--            SELECT @stock_vol = STR(CONVERT(INT , @stock_vol) , 10)
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @stock_vol , @bcye , @sec_code , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs_etf , @mjbh)
            FETCH NEXT FROM etf INTO @sec_code , @stock_vol
        END
        CLOSE etf
        DEALLOCATE etf
        --现金替代成交
        SELECT @cjsl_etf = '1' , @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
        SELECT @zqdm_etf = CASE
                                   WHEN @zqdm = '510011' THEN '510010'
                                   WHEN @zqdm = '510051' THEN '510052'
                                   WHEN @zqdm = '510061' THEN '510060'
                                   WHEN @zqdm = '510181' THEN '510182'
                                   WHEN @zqdm = '510881' THEN '510882'
                   END
        SELECT @cjjg = STR(SUM(CONVERT(MONEY , cash_repl_amt)) , 8 , 3) FROM etf WHERE sgsh_tx_code = @zqdm AND cash_repl_flag = 2
        IF @cjjg IS NOT NULL
        BEGIN
            SELECT @cjje = STR(CONVERT(MONEY , @cjjg) , 12 , 2)
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl_etf , @bcye , @zqdm_etf , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        END
        --申购赎回代码成交
        SELECT @zqdm_etf = @zqdm , @cjjg = STR(0.000 , 8, 3) , @cjje = STR(0.00 , 12 , 2) , @cjbh = @cjbh + 1
        --根据set生成bcye
        IF @gdxm = '1'
        BEGIN
            SELECT @bcye1 = @bcye1 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
        END
        IF @gdxm = '2'
        BEGIN
            SELECT @bcye2 = @bcye2 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
        END
        IF @gdxm = '3'
        BEGIN
            SELECT @bcye3 = @bcye3 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
        END
        IF @gdxm = '4'
        BEGIN
            SELECT @bcye4 = @bcye4 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
        END
        IF @gdxm = '5'
        BEGIN
            SELECT @bcye5 = @bcye5 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
        END
        IF @gdxm = '6'
        BEGIN
            SELECT @bcye6 = @bcye6 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
        END
        IF @gdxm = '991'
        BEGIN
            SELECT @bcye7 = @bcye7 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
        END
        IF @gdxm = '20'
        BEGIN
            SELECT @bcye8 = @bcye8 + 1
            SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
        END
        SELECT @bcye = CASE
                WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
        INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @zqdm_etf , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
        SELECT @status = 'O' , @remark = ''
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff
        CONTINUE
    END
    --撤单处理   
    IF (@owflag='WTH') OR (@clbz = '5' AND @owflag = 'MPT') --M市价全部撤单
    BEGIN
        --已撤单成功的委托不能重复撤单
        SELECT * FROM ORDWTH2 WHERE reff = @reff AND RTRIM(LTRIM(qty2)) <> 0
        IF @@rowcount > 0
        BEGIN
            SELECT @status = 'F' , @remark = '已撤单委托不得重复撤单'
            SELECT @cjsl = RIGHT(@cjsl , 8)  --调整ORDWTH2中的cjsl长度为8位
            INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
            UPDATE ORDWTH SET status = 'P' WHERE reff = @reff AND rec_num = @rec_num and owflag = 'WTH'
            CONTINUE
        END
        --计算已成交数量
        SELECT @cjsl_cj = ISNULL(SUM(CONVERT(INT , cjsl)) , 0) FROM CJHB WHERE sqbh = @reff
        --委托已全部成交,无法撤单
        IF @cjsl_cj = CONVERT(INT , @cjsl)
        BEGIN
            SELECT @status = 'F' , @remark = '224'
        END
        ELSE
        BEGIN
            --全部撤单,撤单数量=委托数量
            IF @cjsl_cj = 0
            BEGIN
                SELECT @status = 'W' , @qty2 = STR(CONVERT(INT , @cjsl) , 8) ,@remark = ''
            END
            ELSE
            BEGIN
                --部分成交数量,撤单数量=委托数量-已成交数量
                IF (CONVERT(INT , @cjsl) > 0)
                BEGIN
                    SELECT @status = 'W' , @qty2 = STR((CONVERT(INT , @cjsl) - @cjsl_cj) , 8) , @remark = ''
                END
            END
        END
        SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
        INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)   
        UPDATE ORDWTH SET status = 'P' WHERE reff = @reff AND rec_num = @rec_num
        CONTINUE
    END
    --普通股票/基金/ETF交易/国债/转债/企债/回购/配股/出入库/权证
    IF @owflag IN ('ORD' , 'MPT' , 'NPT')
    BEGIN
        --处理市价委托的成交价
        IF @owflag IN ('MPT' , 'NPT')
        BEGIN
            SELECT @cjjg = STR(s8 , 8 , 3) FROM show2003 WHERE s1 = @zqdm
            SELECT @cjjg = STR(s3 , 8 , 3) FROM show2003 WHERE s1 = @zqdm AND s8 = 0
        END
        SELECT @cjjg1 = CONVERT(MONEY , @cjjg)
        --单笔全部成交
        IF @clbz = '0'
        BEGIN
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            SELECT @cjje = CASE
                                       WHEN LEFT(@zqdm , 2) IN ('00' , '01' , '10' , '11' , '12') THEN STR(ROUND(CONVERT(INT , @cjsl) * @cjjg1 * 10 , 12 , 2) , 12 , 2) --调整国债/转债/企债的成交金额
                                       WHEN LEFT(@zqdm , 2) IN ('20') THEN STR(ROUND(@cjsl * 1000 , 12 , 2) , 12 , 2) ----调整回购的成交金额
                                       ELSE STR(ROUND(CONVERT(INT , @cjsl) * @cjjg1 , 12 , 2) , 12 , 2)
                                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
/*
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 1 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END

            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 2 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1

            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 3 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END

            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 4 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 5 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 6 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 7 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 8 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 9 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 10 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 11 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 12 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 13 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 14 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjbh = @cjbh + 1
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                   END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , 15 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
--return
*/

            SELECT @remark = ''
            --调整M市价的status
            SELECT @status = CASE
                     WHEN @owflag = 'MPT' THEN 'W'
                     WHEN @owflag <> 'MPT' THEN 'O'
                     END
            SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
            INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
            UPDATE ORDWTH SET status = 'P' WHERE reff = @reff AND rec_num = @rec_num
            CONTINUE
        END
        --分笔成交
        IF @clbz IN ('1' , '2' , '4')
        BEGIN
            --分笔全部成交/分笔多价位全部成交,第一笔成交数量固定=1股,第二笔成交数量=委托数量*45%,第三笔成交数量=余股
            --分笔部分成交,第一笔成交数量固定=1股,第二笔成交数量=委托数量*45%,第三笔成交数量=委托数量*31%
            SELECT @cjbh = @cjbh + 1 , @cjsl1 = STR(1 , 10)
            --根据set生成bcye
            IF @gdxm = '1'
            BEGIN
                SELECT @bcye1 = @bcye1 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
            END
            IF @gdxm = '2'
            BEGIN
                SELECT @bcye2 = @bcye2 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
            END
            IF @gdxm = '3'
            BEGIN
                SELECT @bcye3 = @bcye3 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
            END
            IF @gdxm = '4'
            BEGIN
                SELECT @bcye4 = @bcye4 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
            END
            IF @gdxm = '5'
            BEGIN
                SELECT @bcye5 = @bcye5 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
            END
            IF @gdxm = '6'
            BEGIN
                SELECT @bcye6 = @bcye6 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
            END
            IF @gdxm = '991'
            BEGIN
                SELECT @bcye7 = @bcye7 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
            END
            IF @gdxm = '20'
            BEGIN
                SELECT @bcye8 = @bcye8 + 1
                SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
            END
            SELECT @bcye = CASE
                    WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                    WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                       END
            SELECT @cjje = CASE
                                       WHEN LEFT(@zqdm , 2) IN ('00' , '01' , '10' , '11' , '12') THEN STR(ROUND(CONVERT(INT , @cjsl1) * CONVERT(MONEY , @cjjg) * 10 , 12 , 2) , 12 , 2) --调整国债/转债/企债的成交金额
                                       WHEN LEFT(@zqdm , 2) IN ('20') THEN STR(ROUND(@cjsl1 * 1000 , 12 , 2) , 12 , 2) ----调整回购的成交金额
                                       ELSE STR(ROUND(CONVERT(INT , @cjsl1) * @cjjg1 , 12 , 2) , 12 , 2)
                                 END
            INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl1 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            SELECT @cjsl2 = STR(CONVERT(INT , ROUND(CONVERT(INT , @cjsl) * 0.45 , 0 , 1)) , 10)
            IF @cjsl2 <> '0'
            BEGIN
                IF (@clbz = '4') AND (@cjjg1 > 0.001)
                BEGIN
                    SELECT @cjjg = CASE
                                                WHEN @bs = 'B' THEN CONVERT(CHAR , @cjjg1 * 0.98)
                                                    WHEN @bs = 'S' THEN CONVERT(CHAR , @cjjg1 * 1.02)
                                                    END
                    --调整成交价格的小数点位数
                    IF ROUND(CONVERT(MONEY , @cjjg1) * 100 , 0 , 1) / 100 = @cjjg1
                    BEGIN
                        SELECT @cjjg = CONVERT(CHAR , ROUND(CONVERT(FLOAT , @cjjg) , 2)) + '0'
                    END
                    ELSE
                    BEGIN
                        SELECT @cjjg = CONVERT(CHAR , ROUND(CONVERT(FLOAT , @cjjg) , 3))
                    END
                END
                SELECT @cjbh = @cjbh + 1
                --根据set生成bcye
                IF @gdxm = '1'
                BEGIN
                    SELECT @bcye1 = @bcye1 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
                END
                IF @gdxm = '2'
                BEGIN
                    SELECT @bcye2 = @bcye2 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
                END
                IF @gdxm = '3'
                BEGIN
                    SELECT @bcye3 = @bcye3 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
                END
                IF @gdxm = '4'
                BEGIN
                    SELECT @bcye4 = @bcye4 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
                END
                IF @gdxm = '5'
                BEGIN
                    SELECT @bcye5 = @bcye5 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
                END
                IF @gdxm = '6'
                BEGIN
                    SELECT @bcye6 = @bcye6 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
                END
                IF @gdxm = '991'
                BEGIN
                    SELECT @bcye7 = @bcye7 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
                END
                IF @gdxm = '20'
                BEGIN
                    SELECT @bcye8 = @bcye8 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
                END
                SELECT @bcye = CASE
                        WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                        WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                           END
                SELECT @cjje = CASE
                                            WHEN LEFT(@zqdm , 2) IN ('00' , '01' , '10' , '11' , '12') THEN STR(ROUND(CONVERT(INT , @cjsl2) * @cjjg1 * 10 , 2) , 12 , 2) --调整国债/转债/企债的成交金额
                                                WHEN LEFT(@zqdm , 2) IN ('20') THEN  STR(ROUND(CONVERT(INT , @cjsl2) * 1000 , 2) , 12 , 2)--调整回购的成交金额
                                                ELSE STR(ROUND(CONVERT(INT , @cjsl2) * @cjjg1 , 2) , 12 , 2)
                                                END
                INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl2 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
            END
            SELECT @cjsl3 = CASE
                    WHEN @clbz = '2' THEN STR(CONVERT(INT , ROUND(CONVERT(INT , @cjsl) * 0.31 , 0 , 1)) , 10)
                    ELSE STR(CONVERT(INT , @cjsl) - CONVERT(INT , @cjsl1) - CONVERT(INT , @cjsl2) , 10)
                    END
            SELECT @status = 'O' , @remark = ''
            IF @cjsl3 <> '0'
            BEGIN
                --分笔多价位调整第三笔成交价格
                IF @clbz = '4' AND (@cjjg1 > 0.001)
                BEGIN
                    SELECT @cjjg = CASE
                                                  WHEN @bs = 'B' THEN CONVERT(CHAR , @cjjg1 * 0.95)
                                                      WHEN @bs = 'S' THEN CONVERT(CHAR , @cjjg1 * 1.05)
                                                   END
                    --调整成交价格的小数点位数
                    IF ROUND(CONVERT(MONEY , @cjjg1) * 100 , 0 , 1) / 100 = @cjjg1
                    BEGIN
                        SELECT @cjjg = CONVERT(CHAR , ROUND(CONVERT(FLOAT , @cjjg) , 2)) + '0'
                    END
                    ELSE
                    BEGIN
                        SELECT @cjjg = CONVERT(CHAR , ROUND(CONVERT(FLOAT , @cjjg) , 3))
                    END
                END
                SELECT @cjbh = @cjbh + 1
                --根据set生成bcye
                IF @gdxm = '1'
                BEGIN
                    SELECT @bcye1 = @bcye1 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye1)
                END
                IF @gdxm = '2'
                BEGIN
                    SELECT @bcye2 = @bcye2 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye2)
                END
                IF @gdxm = '3'
                BEGIN
                    SELECT @bcye3 = @bcye3 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye3)
                END
                IF @gdxm = '4'
                BEGIN
                    SELECT @bcye4 = @bcye4 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye4)
                END
                IF @gdxm = '5'
                BEGIN
                    SELECT @bcye5 = @bcye5 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye5)
                END
                IF @gdxm = '6'
                BEGIN
                    SELECT @bcye6 = @bcye6 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye6)
                END
                IF @gdxm = '991'
                BEGIN
                    SELECT @bcye7 = @bcye7 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye7)
                END
                IF @gdxm = '20'
                BEGIN
                    SELECT @bcye8 = @bcye8 + 1
                    SELECT @bcye = CONVERT(CHAR(10) , @bcye8)
                END
                SELECT @bcye = CASE
                        WHEN LEN(@bcye) = 9 THEN '0'  + @bcye
                        WHEN LEN(@bcye) = 8 THEN '00' + @bcye
                           END
                SELECT @cjje = CASE
                                              WHEN LEFT(@zqdm , 2) IN ('00' , '01' , '10' , '11' , '12') THEN STR(CONVERT(INT , @cjsl3) * @cjjg1 * 10 , 12 , 2) --调整国债/转债/企债的成交金额
                                           WHEN LEFT(@zqdm , 2) IN ('20') THEN STR(@cjsl3 * 1000 , 12 , 2) ----调整回购的成交金额
                                           ELSE STR(CONVERT(INT , @cjsl3) * CONVERT(MONEY , @cjjg) , 12 , 2)
                                           END
                INSERT INTO CJHB VALUES (@gddm , @gdxm , @bcrq , @cjbh , @gsdm , @cjsl3 , @bcye , @zqdm , @sbsj , @cjsj , @cjjg , @cjje , @sqbh , @bs , @mjbh)
                --调整M市价的status
                SELECT @status = CASE
                         WHEN @owflag = 'MPT' THEN 'W'
                         WHEN @owflag <> 'MPT' THEN 'O'
                         END
                --M市价,未成交部分自动撤单
                IF (@clbz = '2' AND @owflag = 'MPT')
                BEGIN
                    SELECT @qty2= STR(CONVERT(INT , @cjsl) - CONVERT(INT , @cjsl1) - CONVERT(INT , @cjsl2) - CONVERT(INT , @cjsl3), 8)
                    SELECT @owflag = 'MPT' , @ordrec = @rec_num
                END
            END
            SELECT @cjsl = STR(CONVERT(INT , @cjsl) , 8) --调整ORDWTH2中的cjsl长度为8位
            INSERT INTO ORDWTH2 VALUES (@rec_num , @date , @time , @reff , @gddm , @zqdm , @bs , @cjjg , @cjsl , @status , @qty2 , @remark , @status1 , @teORdernum , @owflag , @ordrec , @gsdm , @checkord , @branchid)
            UPDATE ORDWTH SET status = 'P' WHERE reff = @reff AND rec_num = @rec_num
            CONTINUE
        END
    END
END




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值