Sub XAJGENERATION(IM, C, PE, MM, EM, PP, T, RB, RL, EU, EL, ED, W, WU, WL, WD, WM, UM, LM, BB)
DM = WM - UM - LM
RL = 0
EU = 0
EL = 0
ED = 0
RB = 0
If (PE <= 0) Then GoTo 30
RB = IM * PE
If (W - WM > 0) Then GoTo 80
cc = 1# / (1# + BB)
AA = MM * (1# - (1# - W / WM) ^ cc)
FR = 1 - (1 - IM) * (1 - AA / MM) ^ BB - IM
If (AA + PE >= MM) Then GoTo 80
RL = PE - WM + W + WM * (1# - (PE + AA) / MM) ^ (1# + BB)
GoTo 90
80 RL = PE - WM + W
90 T = RL - RB
EU = EM
If (WU + PE - RL < UM) Then GoTo 20
If (WU + PE + WL - RL - UM >= LM) Then GoTo 10
WL = WU + PE + WL - RL - UM
WU = UM
GoTo 70
10 WU = UM
WL = LM
WD = W + PE - RL - WU - WL
GoTo 70
20 WU = WU + PE - RL
GoTo 70
30 If (WU + PE <= 0) Then GoTo 40
EU = EM
WU = WU + PE
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
40 EU = WU + PP
WU = 0
If ((EM - EU) * WL / LM <= (EM - EU) * C) Then GoTo 50
EL = (EM - EU) * WL / LM
If WL >= EL Then
WL = WL - EL
Else
GoTo 50
End If
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
50 If (WL <= C * (EM - EU)) Then GoTo 60
EL = C * (EM - EU)
If WL > EL Then
WL = WL - EL
Else
GoTo 60
End If
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
60 EL = WL
WL = 0
ED = C * (EM - EU) - EL
If (WD <= ED) Then GoTo 65
WD = WD - ED
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
65 ED = WD
WD = 0
70 W = WU + WL + WD
End Sub
DM = WM - UM - LM
RL = 0
EU = 0
EL = 0
ED = 0
RB = 0
If (PE <= 0) Then GoTo 30
RB = IM * PE
If (W - WM > 0) Then GoTo 80
cc = 1# / (1# + BB)
AA = MM * (1# - (1# - W / WM) ^ cc)
FR = 1 - (1 - IM) * (1 - AA / MM) ^ BB - IM
If (AA + PE >= MM) Then GoTo 80
RL = PE - WM + W + WM * (1# - (PE + AA) / MM) ^ (1# + BB)
GoTo 90
80 RL = PE - WM + W
90 T = RL - RB
EU = EM
If (WU + PE - RL < UM) Then GoTo 20
If (WU + PE + WL - RL - UM >= LM) Then GoTo 10
WL = WU + PE + WL - RL - UM
WU = UM
GoTo 70
10 WU = UM
WL = LM
WD = W + PE - RL - WU - WL
GoTo 70
20 WU = WU + PE - RL
GoTo 70
30 If (WU + PE <= 0) Then GoTo 40
EU = EM
WU = WU + PE
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
40 EU = WU + PP
WU = 0
If ((EM - EU) * WL / LM <= (EM - EU) * C) Then GoTo 50
EL = (EM - EU) * WL / LM
If WL >= EL Then
WL = WL - EL
Else
GoTo 50
End If
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
50 If (WL <= C * (EM - EU)) Then GoTo 60
EL = C * (EM - EU)
If WL > EL Then
WL = WL - EL
Else
GoTo 60
End If
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
60 EL = WL
WL = 0
ED = C * (EM - EU) - EL
If (WD <= ED) Then GoTo 65
WD = WD - ED
If WD < 0 Or WL < 0 Or WU < 0 Then Stop
GoTo 70
65 ED = WD
WD = 0
70 W = WU + WL + WD
End Sub