My dad wrote a program way back when but i can't seem to find the appropriate compiler for it to run under xp. I've tried VB 2005 express edition but that won't let me compile. Any help would be highly appreciated. Originally the files are .bas
CODE
' Programmname: MVN.BAS
' Subject: 1. Calculating of forces and deflection in simply-supported
' or cantilever beams with the most common loadtypes.
' 2. Longitudinal and shear reinforcement in concrete beam.
' CRE 95.03.26 FK
' REV 99.12.23 FK
DECLARE SUB SL (U$, I$, X, X$)
DECLARE SUB US (X, F$, X$)
DECLARE SUB VL (Skriver$, I$)
DIM XS$(10), XS(10), TB$(10), TB(10), TS$(10), TS(10), XTS(10), XTS$(10)
DIM XTB$(10), XTB(10), PL$(10), PL(10), XPL$(10), XPL(10), ML$(10), ML(10)
DIM XML$(10), XML(10), NL$(10), NL(10), XNL$(10), XNL(10)
DIM HBJ$(10), HBJ(10), XH$(10), XH(10)
DIM XU(50), Q(50), PLU(50), PLU$(50), MLU(50), MLU$(50)
DIM MQPM(50), MF(50), VF(50), NF(50), R(50), R$(50), HU(50)
DIM ASTAB(50), ASTABM(50), ASD(50), ASDM(50), ASVD(50), XI(30)
DIM AAA(30), BBB(30), CCC(30), DDD(30), NI(30), AH(30), BH(30)
DIM I1(20), I2(20), XKR(20), KR(20), KRKOR1(20), KRKOR2(20)
DIM XLT(20), NLT(20), HLT(20), UIT(20), ULT(20), U(50), XLM(100), ILM(100)
DIM MLT(20), VLT(20)
OPEN "I", #1, "GEN.MEM"
INPUT #1, SidLgd
INPUT #1, Skriver$
INPUT #1, SakNr$
INPUT #1, Tekst$
INPUT #1, Sign$
CLOSE
OPEN "I", #1, "MVN.MEM"
INPUT #1, Flag$
CLOSE
IF Flag$ = "MVNES" THEN FKS$ = "4"
IF Flag$ = "MVNBU" THEN
Flag$ = ""
OPEN "O", #1, "GEN.MEM"
PRINT #1, SidLgd
PRINT #1, Skriver$
PRINT #1, SakNr$
PRINT #1, Tekst$
PRINT #1, Sign$
CLOSE
OPEN "O", #1, "MVN.MEM"
PRINT #1, Flag$
CLOSE
OPEN "I", #1, "MVNINP.DAT"
LINE INPUT #1, FKS$
LINE INPUT #1, STSY$
INPUT #1, LBJ
LINE INPUT #1, LBJ$
INPUT #1, LBJ1
LINE INPUT #1, LBJ1$
INPUT #1, LBJ2
LINE INPUT #1, LBJ2$
LINE INPUT #1, UTBB$
LINE INPUT #1, EVU$
INPUT #1, DX
LINE INPUT #1, DX$
INPUT #1, ANTXS
FOR N = 1 TO ANTXS
INPUT #1, XS(N)
LINE INPUT #1, XS$(N)
NEXT N
INPUT #1, ANTTL
FOR N = 1 TO ANTTL
INPUT #1, TB(N)
LINE INPUT #1, TB$(N)
INPUT #1, XTB(N)
LINE INPUT #1, XTB$(N)
INPUT #1, TS(N)
LINE INPUT #1, TS$(N)
INPUT #1, XTS(N)
LINE INPUT #1, XTS$(N)
NEXT N
LINE INPUT #1, GPMN$
INPUT #1, ANTPL
FOR N = 1 TO ANTPL
INPUT #1, PL(N)
LINE INPUT #1, PL$(N)
INPUT #1, XPL(N)
LINE INPUT #1, XPL$(N)
NEXT N
LINE INPUT #1, GMN$
INPUT #1, ANTML
FOR N = 1 TO ANTML
INPUT #1, ML(N)
LINE INPUT #1, ML$(N)
INPUT #1, XML(N)
LINE INPUT #1, XML$(N)
NEXT N
LINE INPUT #1, GN$
INPUT #1, ANTNL
FOR N = 1 TO ANTNL
INPUT #1, NL(N)
LINE INPUT #1, NL$(N)
INPUT #1, XNL(N)
LINE INPUT #1, XNL$(N)
NEXT N
LINE INPUT #1, ME$
INPUT #1, EEN
LINE INPUT #1, EEN$
INPUT #1, IBJ
LINE INPUT #1, IBJ$
INPUT #1, EBJ
LINE INPUT #1, EBJ$
INPUT #1, FCK
INPUT #1, GAC
INPUT #1, FSD
INPUT #1, FI
INPUT #1, EPCS
INPUT #1, QDDQK
INPUT #1, QPDQ
INPUT #1, BT
LINE INPUT #1, BT$
INPUT #1, BW
LINE INPUT #1, BW$
INPUT #1, AB
LINE INPUT #1, AB$
INPUT #1, AM
LINE INPUT #1, AM$
INPUT #1, ANTIH
INPUT #1, ANTRH
FOR N = 1 TO ANTRH
INPUT #1, HBJ(N)
LINE INPUT #1, HBJ$(N)
INPUT #1, XH(N)
LINE INPUT #1, XH$(N)
NEXT N
INPUT #1, HMAX
INPUT #1, ASMIN
INPUT #1, ASG
INPUT #1, ASGM
INPUT #1, INFMNT
INPUT #1, UTS$
INPUT #1, FLAG1
INPUT #1, FLAG2
INPUT #1, FLAG3
INPUT #1, FLAG4
INPUT #1, FLAG5
INPUT #1, FLAG6
INPUT #1, FLAG7
INPUT #1, FLAG8
INPUT #1, FLAG9
INPUT #1, FLAG10
INPUT #1, FLAG11
CLOSE
GOTO HOME
END IF
FCK = 35: GAC = 1.5: FSD = 400: GAS = 1.15
FI = 2.5: EPCS = .45 / 1000: QPDQ = .5: QDDQK = 1.5
BT$ = " 300": AB = 50: AM = 50: LBJ$ = " 5000": XTB$(1) = " 0"
OVRF = 0: GHD = .00363
FKS$ = "1": STSY$ = "2": UTS$ = "Y": UTBB$ = "N": ME$ = "Y"
GPMN$ = "N": GMN$ = "N": GN$ = "N": FLSN$ = "N": EVU$ = "N"
HOME:
CONST PI = 3.1416, ESK = 210000, RME = 100000
LCLIN = 24
'LOCATE , , , 29, 31 ' Cursortype.
DO
CLS
PRINT " ***********"
PRINT " * MVN *"
PRINT " ***********"
PRINT
PRINT " Program for calculation of Moment, Shear and Normal force"
PRINT " in a simple supported or cantilever beam or slab."
PRINT
PRINT " The calculations are in accordance with BS 8110: 1985."
PRINT
PRINT
PRINT " Functions: 1. Beam generelly."
PRINT " 2. Longitudinal- and shear reinf. in concrete beam or slab."
PRINT " 3. Instruction for printout."
PRINT " 4. Designing of singel section."
PRINT
PRINT " Your choice: "; FKS$;
CALL SL("18.0/ 3CR/L", I$, 0, FKS$): GOSUB ESCSUB
IF FKS$ = "1" THEN EXIT DO
IF FKS$ = "2" THEN EXIT DO
IF FKS$ = "3" THEN EXIT DO
IF FKS$ = "4" THEN EXIT DO
SOUND 1400, 1
FKS$ = ""
LOOP
' Veiledning for MVN-program:
IF FKS$ = "3" THEN
UVL$ = ""
CLS
OPEN "I", #1, "MVNVL.TXT"
LOCATE 2, 70
PRINT "page 1"
LOCATE 2, 1
FOR N = 1 TO 21
LINE INPUT #1, POST$
PRINT " ";
PRINT POST$
NEXT N
LOCATE 24, 1
PRINT " Hit <Enter> for next page. "; UVL$;
CALL SL("32.0/VJNR/ ", I$, 0, UVL$)
CLS
PRINT
PRINT " Instruction for MVN-program page 2"
PRINT
PRINT
FOR N = 1 TO 16
LINE INPUT #1, POST$
PRINT " ";
PRINT POST$
NEXT N
UVL$ = ""
LOCATE 24, 1
PRINT " Hit <Enter>: "; UVL$;
CALL SL("18.0/VJNR/ ", I$, 0, UVL$)
CLOSE
IF I$ = "ESC" THEN
OPEN "O", #1, "GEN.MEM"
PRINT #1, SidLgd
PRINT #1, Skriver$
PRINT #1, SakNr$
PRINT #1, Tekst$
PRINT #1, Sign$
CLOSE
OPEN "O", #1, "MVN.MEM"
PRINT #1, Flag$
CLOSE
CLS : SYSTEM
END IF
IF I$ = "RUN" THEN RUN
FKS$ = "2"
GOTO HOME
END IF
' Dimensjonering av enkeltsnitt:
IF FKS$ = "4" THEN RUN "MVNES"
' Innmating av statisk system:
CLS
PRINT
PRINT " Type of beam"
PRINT " ------------"
PRINT
IF FLAG1 = 1 THEN CASENR = 5 ELSE CASENR = 1
DO
LOCATE 5, 1
PRINT " Choose type of beam: 1. Cantilever."
PRINT " 2. Simply supported."
PRINT " 3. Beam with 3 supports."
LOCATE 4 + VAL(STSY$), 27
COLOR 0, 7: PRINT STSY$: COLOR 7, 0
SELECT CASE CASENR
CASE 1
LOCATE 5, 27: PRINT "1"
LOCATE 6, 27: PRINT "2"
LOCATE 7, 27: PRINT "3"
LOCATE 4 + VAL(STSY$)
LOCATE 4 + VAL(STSY$), , , 0, 31
CALL SL("27.0/ 1CR/M", I$, 0, STSY$)
'LOCATE , , , 29, 31
CASE 2
IF STSY$ = "1" THEN
LOCATE 11, 1
PRINT " "
LOCATE 10, 1
PRINT USING " Cantilever length: l =\ \mm"; LBJ$;
CALL SL("39.2/H6.0/L", I$, LBJ, LBJ$)
END IF
IF STSY$ = "2" THEN
LOCATE 11, 1
PRINT " "
LOCATE 10, 1
PRINT USING " Length of span: l =\ \mm"; LBJ$;
CALL SL("39.2/H6.0/L", I$, LBJ, LBJ$)
END IF
IF STSY$ = "3" THEN
LOCATE 10, 1
PRINT USING " Length of 1. span: l1 =\ \mm"; LBJ1$;
CALL SL("39.2/H6.0/L", I$, LBJ1, LBJ1$)
PRINT USING " Length of 2. span: l2 =\ \mm"; LBJ2$;
CALL SL("39.2/H6.0/L", I$, LBJ2, LBJ2$)
LBJ = LBJ1 + LBJ2
CALL US(LBJ, "6.0", LBJ$)
END IF
IF STSY$ <> "1" AND STSY$ <> "2" AND STSY$ <> "3" THEN
CASENR = CASENR - 1: STSY$ = "2"
END IF
CASE 3
LOCATE 13, 1
PRINT " Calculation of deflection wanted ? (Y/N): "; UTBB$;
CALL SL("47.0/VJNR/L", I$, 0, UTBB$)
CASE 4
LOCATE 15, 1
PRINT " Special printout points wanted ? (Y/N): "; EVU$;
CALL SL("47.0/VJNR/ ", I$, 0, EVU$)
CASE 5
LOCATE 10, 1
LOCATE 10, 1, , 29, 31
IF STSY$ = "1" THEN
PRINT USING " Cantilever length: l =\ \mm"; LBJ$
END IF
IF STSY$ = "2" THEN
PRINT USING " Length of span: l =\ \mm"; LBJ$
END IF
IF STSY$ = "3" THEN
PRINT USING " Length of 1. span: l1 =\ \mm"; LBJ1$
PRINT USING " Length of 2. span: l2 =\ \mm"; LBJ2$
END IF
LOCATE 13, 1
PRINT " Calculation of deflection wanted ? (Y/N): "; UTBB$
LOCATE 15, 1
PRINT " Special printout points wanted ? (Y/N): "; EVU$
FLAG1 = 1: GOSUB KINS
END SELECT
IF I$ = "OPP" THEN CASENR = CASENR - 1 ELSE CASENR = CASENR + 1
IF CASENR < 1 THEN CASENR = 5
IF I$ = "INS" THEN CASENR = 1
IF I$ = "END" THEN CASENR = 5
GOSUB ESCSUB
LOOP WHILE CASENR <= 5
IF EVU$ = "N" THEN
DX = 1000000!
ELSE
' Innmating av utskriftpunkter:
IF FLAG2 = 0 THEN I$ = "INS"
IF FLAG2 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 1: EXP4 = 0
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 0: EXP4 = 1
IF EXP1 = 0 AND EXP2 = 0 AND EXP3 = 0 AND EXP4 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Printout points"
PRINT " ---------------"
PRINT
PRINT " Printout of sectional forces will automaticly be done in all"
PRINT " relevant points such as maximum points, load points etc."
PRINT
PRINT " If additional printout points are wanted, then a fixed interval"
PRINT " dx can be chosen, and/or it can be given co-ordinats for those"
PRINT " spesific points (max 9 nos) that is wanted to be printed out."
END IF
IF EXP2 = 1 THEN
EXP2 = 0
DO
FEIL = 0
LOCATE 12, 1
PRINT USING " Print out interval: dx =\ \mm"; DX$;
CALL SL("39.2/I6.0/L", I$, DX, DX$): GOSUB ESCSUB
IF DX$ = "" THEN
DX = 1000000!
LOCATE CSRLIN - 1
PRINT " "
END IF
IF DX < LBJ / 40 THEN
SOUND 1400, 1: LOCATE 24, 1
PRINT " Print out interval too litle !! ";
FEIL = 1
END IF
LOOP WHILE FEIL = 1
END IF
IF EXP3 = 1 THEN
EXP3 = 0
N = 1
LOCATE 14, 1
DO
PRINT : LOCATE CSRLIN - 1
PRINT USING " Chosen print out point no##: X# =\ \mm"; N; N; XS$(N);
CALL SL("39.2/G6.0/L", I$, XS(N), XS$(N)): GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XS$(N) = "" THEN
ANTXS = N - 1
I$ = "END"
LOCATE CSRLIN - 1
PRINT " ";
IF DX$ + XS$(1) = "" THEN
LOCATE 14, 1
PRINT " Print out interval and print out points not spesified."
DX = 1000000!
END IF
EXIT DO
END IF
IF N = 9 THEN ANTXS = N: EXP4 = 1: EXIT DO
N = N + 1
LOOP
END IF
IF EXP4 = 1 THEN
EXP4 = 0
IF DX$ <> "" THEN
LOCATE 12, 1
PRINT USING " Print out interval: dx =\ \mm"; DX$;
END IF
LOCATE 14, 1
FOR N = 1 TO ANTXS
PRINT USING " Chosen print out point no##: X# =\ \mm"; N; N; XS$(N)
NEXT N
FLAG2 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
END IF
' Innmating av trapeslaster:
IF FLAG3 = 0 THEN I$ = "INS"
IF FLAG3 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 0
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 1
IF EXP1 = 0 AND EXP2 = 0 AND EXP3 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Trapez loads"
PRINT " ------------"
IF FKS$ = "2" THEN
PRINT " Loads shall be given in ultimate limit state (ULS)."
END IF
PRINT " Self weight of beam shall be included."
PRINT " Max number of trapez loads is 9."
END IF
IF EXP2 = 1 THEN
EXP2 = 0
N = 0: XMAXT = 0
DO
IF N = 9 THEN ANTTL = N: I$ = "END": EXIT DO
N = N + 1
IF N > 1 AND FLAG3 = 0 THEN
IF XTS(N - 1) <> LBJ THEN
IF TB$(N) = "" AND XTS(N - 1) < LBJ THEN
TB$(N) = TS$(N - 1)
XTB$(N) = XTS$(N - 1)
XTS$(N) = LBJ$
END IF
ELSE
TB$(N) = ""
END IF
END IF
PRINT : PRINT : LOCATE CSRLIN - 1
PRINT USING " ##. Trapezl.: Load in startpoint=\ \kN/m,"; N; TB$(N);
CALL SL("40.2/G6.1/ ", I$, TB(N), TB$(N)): GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF TB$(N) = "" THEN
ANTTL = N - 1
I$ = "END"
LOCATE CSRLIN - 1
PRINT " ";
EXIT DO
END IF
DO
FEIL = 0
LOCATE , 52: PRINT USING " start co-ordin.=\ \mm"; XTB$(N);
CALL SL("69.2/F6.0/L", I$, XTB(N), XTB$(N)): GOSUB ESCSUB
IF STSY$ = "1" AND XTB(N) < 0 THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " All co-ordinats shall be positive on cantylever beam !! ";
LOCATE C - 1
END IF
LOOP WHILE FEIL = 1
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF TS$(N) = "" THEN TS$(N) = TB$(N)
PRINT USING " Load in endpoint =\ \kN/m,"; TS$(N);
CALL SL("40.2/F6.1/ ", I$, TS(N), TS$(N)): GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XTS$(N) = "" THEN XTS$(N) = LBJ$
DO
FEIL = 0
LOCATE , 52: PRINT USING " end co-ordinat =\ \mm"; XTS$(N);
CALL SL("69.2/F6.0/L", I$, X, X$): GOSUB ESCSUB
IF STSY$ = "1" AND X < 0 THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " All co-ordinats shall be positive on cantylever beam !! ";
LOCATE C - 1
END IF
IF XTB(N) >= X THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " End co-ordinat shall be biggger than start co-ordinat !! ";
LOCATE C - 1
END IF
IF I$ = "INS" THEN EXIT DO
LOOP WHILE FEIL = 1
XTS(N) = X: XTS$(N) = X$
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XMAXT < XTS(N) THEN XMAXT = XTS(N)
LOOP
END IF
IF EXP3 = 1 THEN
EXP3 = 0
IF ANTTL = 0 THEN
PRINT
PRINT " No trapez loads given."
ELSE
FOR N = 1 TO ANTTL
PRINT : PRINT : PRINT : PRINT : PRINT : LOCATE CSRLIN - 4
PRINT USING " ##. Trapezl.: Load in startpoint=\ \kN/m, start co-ordin.=\ \mm"; N; TB$(N); XTB$(N)
PRINT USING " Load in endpoint =\ \kN/m, end co-ordinat =\ \mm"; TS$(N); XTS$(N)
NEXT N
END IF
FLAG3 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
IF ANTTL = 0 THEN GPMN$ = "Y"
LOCATE 24, 1
PRINT USING " More load types? (Y/N): \\ "; GPMN$;
CALL SL("29.0/VJNR/ ", I$, 0, GPMN$): GOSUB ESCSUB
IF GPMN$ = "N" THEN GMN$ = "N": GN$ = "N": ANTPL = 0: ANTML = 0: ANTNL = 0
XMAX = XMAXT
IF GPMN$ = "Y" THEN ' Innmating av punktlaster:
IF FLAG4 = 0 THEN I$ = "INS"
IF FLAG4 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 0
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 1
IF EXP1 = 0 AND EXP2 = 0 AND EXP3 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Point loads"
PRINT " -----------"
IF FKS$ = "2" THEN
PRINT " Loads given in ultimate limit state."
END IF
PRINT " Max number of point loads is 9."
END IF
IF EXP2 = 1 THEN
EXP2 = 0
N = 0: XMAXP = 0
DO
IF N = 9 THEN ANTPL = N: I$ = "END": EXIT DO
N = N + 1
PRINT : PRINT : LOCATE CSRLIN - 1
PRINT USING " ##. Point load =\ \ kN,"; N; PL$(N);
CALL SL("21.2/G6.1/ ", I$, X, PL$(N)): PL(N) = X * 1000: GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF PL$(N) = "" THEN
ANTPL = N - 1
I$ = "END"
LOCATE CSRLIN - 1
PRINT " ";
EXIT DO
END IF
DO
FEIL = 0
LOCATE , 32: PRINT USING " co-ordinat=\ \ mm "; XPL$(N);
CALL SL("44.2/F6.0/L", I$, XPL(N), XPL$(N)): GOSUB ESCSUB
IF STSY$ = "1" AND XPL(N) < 0 THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " All co-ordinats shall be positive on cantylever beam !! ";
LOCATE C - 1
END IF
LOOP WHILE FEIL = 1
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XMAXP < XPL(N) THEN XMAXP = XPL(N)
LOOP
END IF
IF EXP3 = 1 THEN
EXP3 = 0
IF ANTPL = 0 THEN
PRINT
PRINT " No point loads given."
ELSE
FOR N = 1 TO ANTPL
PRINT : PRINT : PRINT : LOCATE CSRLIN - 2
PRINT USING " ##. Point load =\ \ kN, co-ordinat=\ \ mm "; N; PL$(N); XPL$(N)
NEXT N
END IF
FLAG4 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
' Addering av sammenfallende punktlaster:
DO
N = ANTPL
FOR I = 1 TO ANTPL - 1
FOR J = I + 1 TO ANTPL
IF XPL(I) = XPL(J) THEN
PL(I) = PL(I) + PL(J)
PL(J) = PL(ANTPL)
XPL(J) = XPL(ANTPL)
CALL US (PL(I)/1000, "6.1", PL$(I))
CALL US (PL(J)/1000, "6.1", PL$(J))
CALL US (XPL(J), "6.0", XPL$(J))
I = ANTPL - 1
J = ANTPL
ANTPL = ANTPL - 1
END IF
NEXT J
NEXT I
LOOP WHILE N <> ANTPL
IF ANTPL = 0 THEN GMN$ = "Y"
IF XMAX < XMAXP THEN XMAX = XMAXP
LOCATE 24, 1
PRINT USING " More load types? (Y/N): \\ "; GMN$;
CALL SL("29.0/VJNR/ ", I$, 0, GMN$): GOSUB ESCSUB
IF GMN$ = "N" THEN GN$ = "N": ANTML = 0: ANTNL = 0
END IF
IF GMN$ = "Y" THEN ' Innmating av momentlaster:
IF FLAG5 = 0 THEN I$ = "INS"
IF FLAG5 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 0
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 1
IF EXP1 = 0 AND EXP2 = 0 AND EXP3 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Moment loads"
PRINT " ------------"
IF FKS$ = "2" THEN
PRINT " Loads is given in ULS."
END IF
PRINT " Moment loads around axis perpendicular to the plane for other loads"
PRINT " are imposed in random points on the beam."
PRINT " Moment loads are positive counter clockwise."
PRINT " Max number of moment loads is 9."
END IF
IF EXP2 = 1 THEN
EXP2 = 0
N = 0: XMAXM = 0
DO
IF N = 9 THEN ANTML = N: I$ = "END": EXIT DO
N = N + 1
PRINT : PRINT : LOCATE CSRLIN - 1
PRINT USING " ##. Moment =\ \ kNm,"; N; ML$(N);
CALL SL("22.2/G6.0/ ", I$, X, ML$(N)): ML(N) = X * 1000000: GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF ML$(N) = "" THEN
ANTML = N - 1
I$ = "END"
LOCATE CSRLIN - 1
PRINT " ";
EXIT DO
END IF
DO
FEIL = 0
LOCATE , 34: PRINT USING " co-ordinat =\ \ mm "; XML$(N);
CALL SL("47.2/F6.0/L", I$, XML(N), XML$(N)): GOSUB ESCSUB
IF STSY$ = "1" AND XML(N) < 0 THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " All co-ordinats shall be positive on cantylever beam !! ";
LOCATE C - 1
END IF
LOOP WHILE FEIL = 1
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XMAXM < XML(N) THEN XMAXM = XML(N)
LOOP
END IF
IF EXP3 = 1 THEN
EXP3 = 0
IF ANTML = 0 THEN
PRINT
PRINT " No moment loads given."
ELSE
FOR N = 1 TO ANTML
PRINT : PRINT : PRINT : LOCATE CSRLIN - 2
PRINT USING " ##. Moment =\ \ kNm, co-ordinat =\ \ mm "; N; ML$(N); XML$(N)
NEXT N
END IF
FLAG5 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
' Addering av sammenfallende momentlaster:
DO
N = ANTML
FOR I = 1 TO ANTML - 1
FOR J = I + 1 TO ANTML
IF XML(I) = XML(J) THEN
ML(I) = ML(I) + ML(J): ML(J) = ML(ANTML): XML(J) = XML(ANTML)
ML$(I) = STR$(ML(I)/1000000)
ML$(ANTML) = STR$(ML(ANTML)/1000000)
XML$(ANTML) = STR$(XML(ANTML))
ANTML = ANTML - 1
END IF
NEXT J
NEXT I
LOOP WHILE N <> ANTML
IF ANTML = 0 THEN GN$ = "Y"
IF XMAX < XMAXM THEN XMAX = XMAXM
LOCATE 24, 1
PRINT USING " More load types? (Y/N): \\ "; GN$;
CALL SL("29.0/VJNR/ ", I$, 0, GN$): GOSUB ESCSUB
IF GN$ = "N" THEN ANTNL = 0
END IF
IF GN$ = "Y" THEN ' Innmating av normallaster:
IF FLAG6 = 0 THEN I$ = "INS"
IF FLAG6 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 1: EXP4 = 0
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 0: EXP4 = 1
IF EXP1 = 0 AND EXP2 = 0 AND EXP3 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Normal loads"
PRINT " ------------"
IF FKS$ = "2" THEN
PRINT " Loads is given in ULS."
END IF
PRINT " Normal loads are considered to go from target point to"
IF STSY$ = "1" THEN
PRINT " cantylever point (zero point)."
ELSEIF STSY$ = "2" THEN
PRINT " the left most point of support (zero point)."
END IF
PRINT " The positive direction is toward zero point."
PRINT " Max number of normal loads is 9 nos."
END IF
IF EXP2 = 1 THEN
EXP2 = 0
N = 0: XMAXN = 0
DO
IF N = 9 THEN ANTNL = N: I$ = "END": EXIT DO
N = N + 1
PRINT : PRINT : LOCATE CSRLIN - 1
PRINT USING " ##. Normal load=\ \ kN,"; N; NL$(N);
CALL SL("21.2/G6.0/ ", I$, X, NL$(N)): NL(N) = X * 1000: GOSUB ESCSUB
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF NL$(N) = "" THEN
I$ = "END"
ANTNL = N - 1
LOCATE CSRLIN - 1
PRINT " ";
EXIT DO
END IF
DO
IF XNL$(1) = "" THEN XNL$(1) = LBJ$
FEIL = 0
LOCATE , 32: PRINT USING " co-ordinat =\ \ mm "; XNL$(N);
CALL SL("45.2/F6.0/L", I$, XNL(N), XNL$(N)): GOSUB ESCSUB
IF STSY$ = "1" AND XNL(N) < 0 THEN
FEIL = 1: SOUND 1400, 1: C = CSRLIN: LOCATE 24, 1
PRINT " All co-ordinats shall be positive on cantylever beam !! ";
LOCATE C - 1
END IF
LOOP WHILE FEIL = 1
IF I$ = "INS" OR I$ = "END" THEN EXIT DO
IF XMAXN < XNL(N) THEN XMAXN = XNL(N)
LOOP
IF ANTNL = 0 THEN EXP3 = 0
END IF
IF EXP3 = 1 THEN
EXP3 = 0
PRINT
PRINT " Is additional moment from normal force to be considered ? (Y/N): "; ME$;
CALL SL("70.0/VJNR/L", I$, 0, ME$): GOSUB ESCSUB
IF ME$ = "N" THEN
PRINT
PRINT USING " Exentrisity of normal force: eN =\ \mm"; EEN$;
CALL SL("46.2/F5.0/L", I$, EEN, EEN$): GOSUB ESCSUB
ELSE
EEN = 0
END IF
I$ = "END"
END IF
IF EXP4 = 1 THEN
EXP4 = 0
IF ANTNL = 0 THEN
PRINT
PRINT " No normal loads given."
ELSE
FOR N = 1 TO ANTNL
PRINT : PRINT : PRINT : LOCATE CSRLIN - 2
PRINT USING " ##. Normal load=\ \ kN, co-ordinat =\ \ mm "; N; NL$(N); XNL$(N)
NEXT N
PRINT
PRINT " Is additional moment from normal force to be considered ? (Y/N): "; ME$
IF ME$ = "N" THEN
PRINT
PRINT USING " Exentrisity of normal force: eN =\ \mm"; EEN$
END IF
END IF
FLAG6 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
' Addering av sammenfallende momentlaster:
DO
N = ANTNL
FOR I = 1 TO ANTNL - 1
FOR J = I + 1 TO ANTNL
IF XNL(I) = XNL(J) THEN
NL(I) = NL(I) + NL(J): NL(J) = NL(ANTNL): XNL(J) = XNL(ANTNL)
NL$(I) = STR$(NL(I)/1000)
NL$(ANTNL) = STR$(NL(ANTNL)/1000)
XNL$(ANTNL) = STR$(XNL(ANTNL))
ANTNL = ANTNL - 1
END IF
NEXT J
NEXT I
LOOP WHILE N <> ANTNL
IF XMAX < XMAXM THEN XMAX = XMAXM
END IF
IF STSY$ = "1" THEN ' For utkraget bjelke:
INFMNT = 0
FOR N = 1 TO ANTTL
INFMNT = INFMNT - ((XTS(N) ^ 2 - XTB(N) ^ 2) / 2 * TB(N) + (XTB(N) + 2 * XTS(N)) / 6 * (XTS(N) - XTB(N)) * (TS(N) - TB(N)))
NEXT N
FOR N = 1 TO ANTPL
INFMNT = INFMNT - XPL(N) * PL(N)
NEXT N
FOR N = 1 TO ANTML
INFMNT = INFMNT + ML(N)
NEXT N
END IF
IF ANTNL > 0 AND ME$ = "Y" THEN UTBB$ = "Y"
IF EBJ$ = "" THEN EBJ = ESK
IF IBJ$ = "" THEN IBJ = 100 * 10 ^ 6
IF UTBB$ = "Y" THEN
IF FKS$ = "1" THEN ' Homogen bjelke:
IF FLAG7 = 0 THEN I$ = "INS"
IF FLAG7 = 1 THEN I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 1: EXP2 = 1: EXP3 = 1: EXP4 = 1
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 0: EXP4 = 1
IF EXP1 + EXP2 + EXP3 + EXP4 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Data for deflection"
PRINT " -------------------"
END IF
IF EXP2 = 1 THEN
EXP2 = 0
LOCATE 5, 1
PRINT USING " Moment of inertia: I = \ \*10^6 mm4"; IBJ$;
CALL SL("43.1/G6.1/L", I$, X, IBJ$): IBJ = X * 1000000: GOSUB ESCSUB
IF IBJ$ = "" THEN
UTBB$ = "N"
EXP3 = 0
LOCATE CSRLIN - 1
PRINT " Deflection will not be calculated ! "
ELSE
UTBB$ = "Y"
END IF
END IF
IF EXP3 = 1 THEN
EXP3 = 0
PRINT
PRINT USING " Module of elastisity: E = ###### N/mm2"; EBJ;
CALL SL("43.0/F6.0/L", I$, EBJ, EBJ$): GOSUB ESCSUB
END IF
IF EXP4 = 1 THEN
EXP4 = 0
LOCATE 5, 1
IF IBJ$ = "" THEN
PRINT " Deflection will not be calculated ! "
ELSE
PRINT USING " Moment of inertia: I = \ \*10^6 mm4"; IBJ$
PRINT
PRINT USING " Module of elastisity: E = ###### N/mm2"; EBJ;
END IF
FLAG7 = 1: GOSUB KINS: GOSUB ESCSUB
END IF
LOOP
END IF
END IF
IF FKS$ = "2" THEN ' Betongbjelke:
BTBJ:
I$ = "END"
DO
IF I$ = "INS" THEN EXP1 = 0: EXP2 = 1: EXP3 = 1: EXP4 = 1: EXP5 = 1
IF I$ = "END" THEN EXP1 = 1: EXP2 = 0: EXP3 = 0: EXP4 = 0: EXP5 = 1
IF EXP1 + EXP2 + EXP3 + EXP4 + EXP5 = 0 THEN EXIT DO
IF EXP1 = 1 THEN
EXP1 = 0
CLS
PRINT
PRINT " Material properties"
PRINT " -------------------"
END IF
IF EXP2 = 1 THEN
DO
EXP2 = 0
LOCATE 5, 1
PRINT USING " Cube strength of concrete: fcu =##### N/mm2"; FCK;
CALL SL("46.3/F5.0/L", I$, X, ""): GOSUB ESCSUB
IF X >= 10 THEN FCK = X
IF X >= 15 THEN FCK = X
IF X >= 25 THEN FCK = X
IF X >= 35 THEN FCK = X
IF X >= 45 THEN FCK = X
IF X >= 55 THEN FCK = X
IF X >= 65 THEN FCK = X
IF X >= 75 THEN FCK = X
IF X >= 85 THEN FCK = X
IF 10 <= X AND X <= 85 THEN EXIT DO
SOUND 1400, 1: LOCATE 24, 1
PRINT " Incorrect value of fcu ! (fcu < 10 or 85 < fcu) ";
LOOP
END IF
IF EXP3 = 1 THEN
EXP3 = 0
PRINT USING " Partial safety factor for concrete: gac =##.##"; GAC;
CALL SL("46.1/H5.2/L", I$, GAC, ""): GOSUB ESCSUB
END IF
IF EXP4 = 1 THEN
EXP4 = 0
PRINT
PRINT USING " Design strength of reinforcement: fsd =##### N/mm2"; FSD;
CALL SL("46.2/H5.0/L", I$, FSD, ""): GOSUB ESCSUB
END IF