STROMAT is a structural engineering calculator that computes cross-sectional properties and beam-loading stresses for eleven standard section shapes: square/rectangular solid and tube, round solid and tube, I, H, C, L, V, T, and + sections. For each shape the program calculates area, section modulus, second moment of area (moment of inertia), and radius of gyration, then optionally combines those results with one of ten built-in material specifications and six beam-loading cases (supported/fixed ends, uniform/concentrated loads) to yield bending stress and deflection. Navigation between the section, material, load, and recalculate screens is handled at line 1500 via a single INPUT menu that dispatches with computed GOTO targets (N*100). The beam-loading subroutines at lines 2000–2075 use a self-referencing GOSUB/GOTO technique to redisplay the selected load diagram before prompting for parameters.
Program Analysis
Program Structure
The program is divided into clearly separated functional blocks, each associated with a shape code entered by the user. A computed GOTO N*100 at line 70 dispatches to the correct shape handler. An invalid code (greater than 11) forces N=19, targeting the non-existent line 1900, which silently falls through. The menu at line 1500 collects a single-character response and re-dispatches using IF chains to sections (line 10), materials (line 1200), loads (line 2000), recalculate (line 2055), or a print-copy routine (line 3800).
| Line range | Function |
|---|---|
| 5–70 | Shape selection menu |
| 100–168 | Square/rectangular solid |
| 200–282 | Square/rectangular tube |
| 300–350 | Round solid |
| 400–464 | Round tube |
| 500–566 | I-section |
| 600–640 | H-section |
| 700–740 | C-section |
| 800–858 | L-section |
| 900–950 | V-section |
| 1000–1052 | T-section |
| 1100–1154 | +-section |
| 1200–1415 | Material table and property lookup |
| 1500–1556 | Main navigation menu |
| 1600–1630 | Section-properties print subroutine |
| 2000–2080 | Beam load diagram display and dispatch |
| 2100–2670 | Six beam-load case handlers |
| 3000–3100 | Load/length input subroutine |
| 3500–3660 | Results display and overstress warning |
| 3800–3810 | Hardcopy via COPY |
| 9900–9999 | Save-to-tape utility |
Computed GOTO Dispatch
The central navigation idiom GOTO N*100 at line 70 acts as a jump table, routing shape code 1 to line 100, code 2 to line 200, and so on up to code 11 at line 1100. The beam-load menu uses the same pattern: GOTO 2000+(X*100) at line 2055. The subroutine at line 2070 also uses GOTO 2020+(X*100) to redisplay the selected diagram, a self-referencing trick that allows all six load diagrams to be printed in sequence before the user picks one, then jumps into the chosen handler’s entry point.
Section Property Calculations
All shape handlers populate four variables before calling the print subroutine at line 1600: area A, second moment of area I, section modulus Z=I/Y, and radius of gyration K=SQR(I/A). The neutral-axis distance Y is computed analytically for each shape.
- Rectangular solid (100):
I=(B*D^3)/12,Y=D/2 - Rectangular tube (200): parallel-axis subtraction of inner rectangle
- Round solid (300):
I=PI/64*D^4 - Round tube (400):
I=(PI/64)*(OD^4-ID^4) - I-section (500): flanges treated as full-width, web subtracted
- L-section (800): centroid found with weighted-area formula;
Ibuilt from cube terms at lines 851–853 - T-section (1000): centroid at line 1044,
Ivia the three-term expression at line 1046 - V-section (900): uses
COS(PI/4)to project the neutral axis; the moment of inertia formula at line 936 is non-trivial
Material Database
Ten materials are stored as paired constants set by IF Q=n chains (lines 1300–1395). Variable S holds tensile strength in PSI and P holds elastic modulus in millions of PSI; P is scaled to absolute units at line 1410 (P=P*1E6) for use in deflection formulae.
| Code | Material | E (×10⁶ psi) | Strength (psi) |
|---|---|---|---|
| 1 | Class 25 Cast Gray Iron | 14.2 | 25 000 |
| 2 | Ductile Cast Iron | 25 | 80 000 |
| 3 | 1020 Low Carbon Steel | 30 | 80 000 |
| 4 | 30302 Stainless Steel | 28 | 105 000 |
| 5 | 51430 Stainless Steel | 29 | 80 000 |
| 6 | 6063-T5 Aluminium | 10.3 | 29 000 |
| 7 | 6061-T6 Aluminium | 11.3 | 48 000 |
| 8 | No.2 Structural Douglas Fir | 1.3 | 1 300 |
| 9 | ABS Injection Moulded | 0.29 | 5 500 |
| 10 | Nylon 6 + 40% Glass | 1.5 | 26 000 |
Beam Loading Cases
Six classical beam formulae are implemented. Stress S2 and deflection U are calculated with standard Euler–Bernoulli expressions, then passed through the output routine at line 3500.
- Simply supported, uniform load:
S2=W*L/(8*Z),U=5*W*L³/(384*P*I) - Simply supported, centre point load:
S2=W*L/(4*Z),U=W*L³/(48*P*I) - Simply supported, off-centre load: moment and deflection computed with auxiliary variable
V - Cantilever, uniform load:
S2=W*L/(2*Z),U=W*L³/(8*P*I) - Cantilever, end point load:
S2=W*L/Z,U=W*L³/(3*P*I) - Fixed both ends, uniform load:
S2=W*L/(12*Z),U=W*L³/(384*P*I)
Overstress Warning
After printing results, line 3525 compares ABS S2 with material strength S. If overstressed, a flashing “OVERSTRESSED” message is generated by a loop (lines 3600–3630) that alternately prints a blank and an inverse-video string at screen row 14, with short FOR…NEXT delay loops providing the flash timing.
Navigation Menu and Input Validation
At line 1500, the menu prompt is displayed with PRINT AT 21,0 so it appears at the bottom of the screen without scrolling. The response N$ is checked at line 1504: CODE N$<29 AND CODE N$>33 is intended to pass only digits 1–4 (codes 49–52), but the logic uses AND as a boolean operator — any character whose code is both less than 29 and greater than 33 is impossible, so the condition is always false for printable characters, meaning the branch to 1548 (the “PARDON?” screen) is never taken. This is a bug: the intended test was likely CODE N$<49 OR CODE N$>52.
Notable Techniques and Anomalies
- The H-section handler (line 600) sets
N=6and falls through toGOTO 528to share the I-section’s input prompts, then diverges at lines 630–640 for its own formulae — but line 640 callsGOSUB 564, which is the middle of the I-section block, not a subroutine. This is a structural anomaly that would cause unpredictable behaviour. - The C-section (line 700) similarly shares entry code with I and H sections via
GOTO 528and usesGOTO 564rather thanGOSUB 1600for output. - Variable
Kis reused as both inside breadth of a rectangular tube (line 254) and radius of gyration (line 275), creating a name clash within the same section handler. - The subroutine at line 3000 caches
WandL: if they are already non-zero from a prior run, input is skipped (lines 3005, 3035), enabling the recalculate option (menu code 4) to re-use previous load values. - Line 1600 guards against division-by-zero with
IF NOT A THEN GOTO 10, resetting to the shape menu if area is zero. - The save routine at lines 9900–9960 calls
CLEARbeforeSAVEandRUNafterward, restarting the program cleanly from tape.
Content
Source Code
5 REM **STROMAT**
7 PRINT "% % % % STRENGTH OF MATERIALS % % % % % "
8 PRINT "% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "
10 PRINT "% % % % % % % % % SHAPE TABLE % % % % % % % % % % "
11 PRINT
12 PRINT
13 PRINT " 1 % SQ/RECT SOLID"
14 PRINT " 2 O SQ/RECT TUBE"
16 PRINT " 3 * ROUND SOLID"
18 PRINT " 4 O ROUND TUBE"
20 PRINT " 5 I SECTION"
22 PRINT " 6 H SECTION"
24 PRINT " 7 C SECTION"
26 PRINT " 8 L SECTION"
28 PRINT " 9 V SECTION (INVERTED)"
30 PRINT " 10 T SECTION"
32 PRINT " 11 + SECTION"
40 PRINT
45 PRINT
50 PRINT "ENTER APPROPRIATE SHAPE CODE"
55 INPUT N
60 CLS
65 IF N>11 THEN LET N=19
70 GOTO N*100
100 PRINT "% % % SQUARE/RECTANGULAR SOLID % % % "
104 PRINT
106 PRINT " ............ ----*-"
108 PRINT " :% % % % % : : LOAD"
110 PRINT " :% % % % % : : : "
112 PRINT " :% % % % % : -*- D '.:.' "
114 PRINT " :% % % % % : : : ' "
116 PRINT " :% % % % % : Y :"
118 PRINT " '''''''''''' -*--*-"
120 PRINT ": :"
122 PRINT "*--B--*"
124 PRINT
128 PRINT "B=";
130 INPUT B
132 PRINT B;" ";
136 PRINT "D=";
138 INPUT D
140 PRINT D;" ";
142 LET Y=D/2
146 PRINT "Y=";Y
148 PRINT
149 LET T=0
150 LET A=B*D
152 LET I=(B*(D**3))/12
154 LET Z=I/Y
155 LET K=SQR (I/A)
156 GOSUB 1600
168 GOTO 1500
200 PRINT "% % % % SQUARE/RECTANGULAR TUBE % % % "
202 PRINT " ............ ----*-"
204 PRINT " ::'''''''':: --*-: D=OUTSIDE DEPTH"
206 PRINT " :: :: : : B=OUTSIDE BREARDTH"
208 PRINT " :: :: H : H=INSIDE DEPTH"
210 PRINT " :: :: *-: D K=INSIDE BREARDTH"
212 PRINT " :: :: : : : T=THICKNESS (WALL)"
214 PRINT " :: :: Y : : Y=MOMENT"
216 PRINT " ::........:: :-*-:"
218 PRINT " '''''''''''' *-*-*-"
220 PRINT ":*-K-*: :"
222 PRINT ":: -**--T ENTER (IF KNOWN)"
224 PRINT "*--B--* ""0"" (IF UNKNOWN)"
226 PRINT ": :"
230 INPUT T
236 PRINT "D=";
238 INPUT D
240 PRINT D;" B=";
244 INPUT B
246 PRINT B
248 IF T<>0 THEN GOTO 262
249 PRINT "H=";
250 INPUT H
252 PRINT H;
253 PRINT " K=";
254 INPUT K
256 LET T=(B-K)/2
258 PRINT K;" T=";T
260 GOTO 270
262 LET H=D-2*T
264 LET K=B-2*T
266 PRINT "H=";H;" K=";K;" T=";T
268 LET Y=D/2
270 LET A=(D*B)-(H*K)
272 LET I=((B*D**3)-(H*K**3))/12
274 LET Z=I/Y
275 LET K=SQR (I/A)
276 GOSUB 1600
278 PRINT
280 GOTO 1500
282 STOP
300 PRINT "% % % % % % % % % ROUND SOLID % % % % % % % % % % "
301 PRINT
302 PRINT " ......-----*-"
304 PRINT " .% % % % % . :"
306 PRINT " % % % % % % % :"
308 PRINT " :% % % % % % % : D D=DIAMETER"
310 PRINT " :% % % % % % % : *-:"
312 PRINT " :% % % % % % % : : :"
314 PRINT " % % % % % % % Y : Y=DEM(NEUT FIBER)"
316 PRINT " '% % % % % ' : :"
318 PRINT " ''''''---*-*-"
320 PRINT
322 PRINT "D=";
324 INPUT D
326 LET Y=D/2
328 PRINT D;" Y=";Y
329 LET B=D
330 LET A=PI/4*(D**2)
331 LET T=0
332 LET I=PI/64*(D**4)
334 LET Z=I/Y
335 LET K=SQR (I/A)
336 GOSUB 1600
340 GOTO 1500
350 STOP
400 PRINT "% % % % % % % % % % ROUND TUBE % % % % % % % % % % "
402 PRINT " ......-------*-"
404 PRINT " .% :'''':% . ---*-:"
406 PRINT " % ' '% : :"
408 PRINT " ::' ':: ID :"
410 PRINT " :: :: *-: :"
412 PRINT " ::. .:: : :OD"
414 PRINT " % . .% Y : :"
416 PRINT " '% :....:% ' -:-*-:"
418 PRINT " ''''''---*-*-*-"
420 PRINT TAB 11;":"
422 PRINT TAB 11;"T"
424 PRINT "ENTER ""T""(IF KNOWN),""0""(IF NOT)"
426 INPUT T
432 PRINT "OD=";
434 INPUT OD
435 LET Y=OD/2
436 IF T<>0 THEN GOTO 446
438 PRINT OD,"ID=";
440 INPUT ID
442 PRINT ID,"T=";(OD-ID)/2,"Y=";OD/2
444 GOTO 451
446 LET ID=OD-(2*T)
450 PRINT OD,"ID=";ID,"T=";T,"Y=";Y
451 LET B=ID
452 LET A=PI/4*(OD**2-ID**2)
453 LET D=OD
454 LET I=(PI/64)*(OD**4-ID**4)
456 LET Z=I/Y
457 LET K=SQR (I/A)
458 GOSUB 1600
462 GOTO 1500
464 STOP
500 PRINT "% % % % % % % % % % % I-SECTION % % % % % % % % % % "
501 LET N=5
502 PRINT " .......... ---*-"
503 PRINT " ''''::'''' -*-:"
504 PRINT " :: : : LOAD"
505 PRINT "-*--- :: H : : "
506 PRINT " : :: : : '.:.' "
508 PRINT " Y :: : D ' "
516 PRINT " : ....::.... -*-:"
518 PRINT "-*- '''''''''' -*-*-"
520 PRINT " : :: : :"
522 PRINT " T--**-: F"
524 PRINT " *--B-*"
526 PRINT " : :"
530 PRINT "T=";
532 INPUT T
534 PRINT T;" F=";
536 INPUT F
538 PRINT F;" D=";
540 INPUT D
542 LET H=D-(2*F)
543 LET Y=D/2
544 PRINT D,"Y=";Y;" H=";H;" B=";
546 INPUT B
548 PRINT B
550 IF N<>5 THEN GOTO 30+(N*100)
552 LET Y=D/2
554 LET A=(B*D)-(H*(B-T))
556 LET I=((B*(D**3))-((H**3)*(B-T)))/12
558 LET Z=I/Y
561 LET K=SQR (I/A)
564 GOSUB 1600
566 GOTO 1500
600 PRINT "% % % % % % % % % % H-SECTION % % % % % % % % % % % "
601 LET N=6
602 PRINT " .. .. ---*-"
604 PRINT " :: :: T : LOAD"
606 PRINT " :: :: : : : "
608 PRINT " ::........:: -*-B '.:.' "
610 PRINT " ::'''''''':: -*-: ' "
612 PRINT " :: :: : :"
614 PRINT " :: :: Y :"
616 PRINT " '' '' -*-*-:"
618 PRINT " : ::"
620 PRINT " : -**-F"
622 PRINT " *--D--*"
624 PRINT " : :"
628 GOTO 528
630 LET Y=B/2
632 LET A=(B*D)-(H*(B-T))
634 LET I=((2*F*(B**3))+(H*(T**3)))/12
636 LET Z=I/Y
639 LET K=SQR (I/A)
640 GOSUB 564
700 PRINT "% % % % % % % % % % C-SECTION % % % % % % % % % % % "
701 LET N=7
702 PRINT " ............ -----*-"
704 PRINT " ::'''''''''' ---*-:"
706 PRINT " :: : : LOAD"
708 PRINT " :: H : :"
710 PRINT " :: ------*-: D '.:.'"
712 PRINT " :: : : : '"
714 PRINT " :: Y : :"
716 PRINT " ::.......... -:-*-:"
718 PRINT " '''''''''''' -*-*-*-"
720 PRINT " :: : :"
722 PRINT "-**-T : F"
724 PRINT " :: : :"
726 PRINT " *--B--*"
727 PRINT " : :"
728 GOTO 528
730 LET Y=D/2
732 LET A=(B*D)-(H*(B-T))
734 LET I=((B*(D**3))-((H**3)*(B-T)))/12
736 LET Z=I/Y
739 LET K=SQR (I/A)
740 GOTO 564
800 PRINT "% % % % % % % % % % L-SECTION % % % % % % % % % % % "
801 LET N=8
806 PRINT "-*- .. ------*-*-"
808 PRINT " : :: : :"
810 PRINT " : :: LOAD : :"
812 PRINT " B :: : Y :"
814 PRINT " : :: '.:.' : :"
816 PRINT " : :: ' : H"
818 PRINT " :- :: ------*-:"
820 PRINT " : :: :"
822 PRINT " : ::............ --*-"
824 PRINT "-*- '''''''''''''' --*-"
826 PRINT " : : :"
828 PRINT " *--D---* T"
830 PRINT " : :"
834 PRINT "T=";
836 INPUT T
838 PRINT T;" B=";
840 INPUT B
841 PRINT B;" D=";
842 INPUT D
845 LET H=B-T
846 LET Y=B-(T*(2*H+D)+(H**2))/(2*(H+D))
848 PRINT D,"H=";H;" Y=";Y
850 LET A=T*(D+H)
851 LET P2=(T*(Y**3))+D*((B-Y)**3)
852 LET P1=(D-T)*((B-Y-T)**3)
853 LET I=(P2-P1)/3
854 LET Z=I/Y
856 LET K=SQR (I/A)
858 GOTO 564
900 PRINT "% % % % % % % % % % V-SECTION % % % % % % % % % % % "
901 LET N=9
902 PRINT " *"
904 PRINT " / ..-----*-"
906 PRINT " / .:'':. :"
908 PRINT " B .:' ':. Y"
910 PRINT " / .:' ':. :"
912 PRINT " / .:' ----- ':.-*-N.F."
914 PRINT " * .:' ':."
916 PRINT " '' '' "
918 PRINT " //"
920 PRINT " T"
921 PRINT
922 PRINT "T=";
924 INPUT T
926 PRINT T;" B=";
927 INPUT B
928 PRINT B;
930 LET A=T*((2*B)-T)
931 LET D=B
932 LET Y=((B**2)+(B*T)-(T**2))/(2*(2*B-T)*COS (PI/4))
934 LET P1=Y*COS (PI/4)
936 LET I=(2*(P1**4)-(2*(P1-T)**4)+T*(B-(2*P1-T/2))**3)/2
938 LET Z=I/Y
940 LET K=SQR (I/A)
942 PRINT " Y=";Y,"AREA=";A,,"S.MOD.=";Z
944 GOTO 564
950 STOP
1000 PRINT "% % % % % % % % % % T-SECTION % % % % % % % % % % % "
1002 PRINT " *----B---*"
1004 PRINT " : : :"
1006 PRINT "-*--- .................. -*-"
1008 PRINT "-*-*- ''''''''::'''''''' :"
1010 PRINT " : : :: :"
1012 PRINT " F : NF-- :: --*- :"
1014 PRINT " H :: : D"
1016 PRINT " : :: Y :"
1018 PRINT " : :: : :"
1020 PRINT " -*----- '' --*--*-"
1022 PRINT " ::"
1024 PRINT " -**-T"
1025 PRINT "T=";
1026 INPUT T
1028 PRINT T;" F=";
1030 INPUT F
1032 PRINT F;" B=";
1034 INPUT B
1036 PRINT B;" D=";
1038 INPUT D
1040 PRINT D
1041 LET H=D-F
1042 LET A=B*F+H*T
1044 LET Y=D-(((D**2)*T+(F**2)*(B-T))/(2*A))
1045 PRINT "H=";H;" Y=";Y
1046 LET I=.5*(T*Y**3)+B*(D-Y)**3-(B-T)*(D-Y-F)**3
1048 LET Z=I/Y
1050 LET K=SQR (I/A)
1052 GOTO 564
1100 PRINT "% % % % % % % % % % +-SECTION % % % % % % % % % % % "
1101 LET N=11
1104 PRINT " -* *-T"
1106 PRINT " : :"
1108 PRINT " .... ------*-"
1110 PRINT " :% : :"
1112 PRINT " : :% : D"
1114 PRINT "-*- ......:% :...... :"
1116 PRINT " F :% % % % % % % : -*-:"
1118 PRINT "-*- '''''':% :'''''' : :"
1120 PRINT " : : :% : : Y :"
1122 PRINT " : :% : : : :"
1124 PRINT " : '''' ----*-*-"
1125 PRINT " : :"
1126 PRINT " *---B---*"
1128 PRINT " : :"
1130 PRINT "T=";
1132 INPUT T
1134 PRINT T," F=";
1135 INPUT F
1136 PRINT F,"D=";
1137 INPUT D
1138 PRINT D;" B=";
1140 INPUT B
1142 LET A=D*T+F*(B-T)
1144 LET Y=D/2
1146 LET I=((T*D**3)+(F**3)*(B-T))/12
1148 LET Z=I/Y
1150 LET K=SQR (I/A)
1152 PRINT B;" Y=";Y
1154 GOTO 564
1200 PRINT "% % % % % % % % MATERIAL TABLE % % % % % % % % "
1205 PRINT
1210 PRINT " 1 CLASS 25 CAST GRAY IRON"
1215 PRINT " 2 DUCTILE (NODULAR) CAST IRON"
1220 PRINT " 3 1020 LOW CARBON STEEL"
1225 PRINT " 4 30302 STAINLESS STEEL"
1230 PRINT " 5 51430 STAINLESS STEEL"
1235 PRINT " 6 6063 T5 ALUMINUM"
1240 PRINT " 7 6061 T6 ALUMINUM"
1245 PRINT " 8 NO.2 STRUCTUAL DOUGLAS FIR"
1250 PRINT " 9 ABS INJ. MOLDED OR HIS"
1255 PRINT "10 MOLDED NYLON 6+40 PCT. GLASS"
1260 PRINT
1265 PRINT "ENTER OPPROPRIATE MATERIAL CODE"
1270 INPUT Q
1275 PRINT
1280 PRINT
1300 IF Q=1 THEN LET P=14.2
1305 IF Q=1 THEN LET S=25000
1310 IF Q=2 THEN LET P=25
1315 IF Q=2 THEN LET S=80000
1320 IF Q=3 THEN LET P=30
1325 IF Q=3 THEN LET S=80000
1330 IF Q=4 THEN LET P=28
1335 IF Q=4 THEN LET S=105000
1340 IF Q=5 THEN LET P=29
1345 IF Q=5 THEN LET S=80000
1350 IF Q=6 THEN LET P=10.3
1355 IF Q=6 THEN LET S=29000
1360 IF Q=7 THEN LET P=11.3
1365 IF Q=7 THEN LET S=48000
1370 IF Q=8 THEN LET P=1.3
1375 IF Q=8 THEN LET S=1300
1380 IF Q=9 THEN LET P=.29
1385 IF Q=9 THEN LET S=5500
1390 IF Q=10 THEN LET P=1.5
1395 IF Q=10 THEN LET S=26000
1400 PRINT
1410 LET P=P*1E6
1415 PRINT "TESILE=";S;" MOD.EL.=";P
1500 PRINT AT 21,0;"ENT:(1)SEC(2)MAT(3)LOAD(4)RECALC"
1502 INPUT N$
1504 IF CODE N$<29 AND CODE N$>33 THEN GOTO 1548
1510 LET N=VAL N$
1512 IF N=5 THEN GOTO 3800
1515 CLS
1520 IF N=1 THEN GOTO 10
1530 IF N=2 THEN GOTO 1200
1540 IF N=3 THEN GOTO 2000
1545 IF N=4 THEN GOTO 2055
1548 CLS
1550 PRINT AT 11,10;"% %P%A%R%D%O%N%?% "
1552 FOR J=1 TO 30
1554 NEXT J
1556 GOTO 1500
1600 IF NOT A THEN GOTO 10
1610 PRINT "SECTION AREA= ";A
1615 PRINT "SECTION MODULUS= ";Z
1620 PRINT "MOMENT OF INERTIA= ";I
1625 PRINT "RADIUS OF GYRATION=";K
1630 RETURN
2000 CLS
2001 PRINT "% % % % % % % % BEAM LOAD TABLE % % % % % % % "
2002 LET X=0
2003 LET W=0
2004 LET L=0
2005 PRINT
2006 PRINT "WWWWWWWWW"
2007 PRINT ":'''''''''''''''': 1 SUPPORTED BOTH ENDS"
2008 PRINT ": : UNIFORM LOAD"
2009 GOSUB 2070
2010 PRINT TAB 4;"W"
2012 PRINT ":'''''''''''''''': 2 SUPPORTED BOTH ENDS"
2014 PRINT ": : LOAD AT CENTER"
2015 GOSUB 2070
2016 PRINT " W"
2018 PRINT ":'''''''''''''''': 3 SUPPORTED BOTH ENDS"
2020 PRINT ": : LOAD OFF CENTER"
2021 PRINT
2022 GOSUB 2070
2023 PRINT "% % WWWWWWW 4 FIXED ONE END"
2024 PRINT "% % '''''''''''''' UNIFORM LOAD"
2026 PRINT "''''"
2027 GOSUB 2070
2028 PRINT "% % W 5 FIXED ONE END"
2030 PRINT "% % '''''''''''''' CONCENTRATED LOAD"
2032 PRINT "''''"
2033 GOSUB 2070
2034 PRINT "% % WWWWW% % 6 FIXED BOTH ENDS"
2036 PRINT "% % ''''''''''% % UNIFORM LOAD"
2038 PRINT "'''' ''''"
2039 GOSUB 2070
2040 PRINT " **ENTER APPROPRIATE CODE**"
2045 INPUT X
2050 CLS
2055 GOTO 2000+(X*100)
2060 STOP
2070 IF X>0 THEN GOTO 2020+(X*100)
2075 RETURN
2080 STOP
2100 LET X=1
2110 GOTO 2006
2120 PRINT
2130 GOSUB 3000
2140 LET S2=-(W*L)/(8*Z)
2150 LET U=(5*(W*(L**3)))/(384*P*I)
2160 GOSUB 3500
2170 STOP
2200 LET X=2
2210 GOTO 2010
2220 PRINT
2230 GOSUB 3000
2240 LET S2=(W*L)/(4*Z)
2250 LET U=(W*(L**3))/(48*P*I)
2260 GOTO 3500
2270 STOP
2300 LET X=3
2310 GOTO 2016
2320 PRINT
2330 GOSUB 3000
2340 LET S2=(W*(X1*(L-X1)))/(Z*L)
2345 LET V=SQR (((I/3)+(2*X1))/(3*(L-X1)))*(L-X1)
2350 LET U=(W*X1*(V**3))/(3*P*I*L)
2360 GOTO 3500
2370 STOP
2400 LET X=4
2410 GOTO 2023
2420 PRINT
2430 GOSUB 3000
2440 LET S2=(W*L)/(2*Z)
2450 LET U=(W*(L**3))/(8*P*I)
2460 GOTO 3500
2470 STOP
2500 LET X=5
2510 GOTO 2028
2520 PRINT
2530 GOSUB 3000
2540 LET S2=(W*L)/Z
2550 LET U=(W*(L**3))/(3*P*I)
2560 GOTO 3500
2570 STOP
2600 LET X=6
2610 GOTO 2034
2620 PRINT
2630 GOSUB 3000
2640 LET S2=(W*L)/(12*Z)
2650 LET U=(W*(L**3))/(384*P*I)
2660 GOTO 3500
2670 STOP
3000 PRINT "W (LOAD IN LS.)=";
3005 IF W>0 THEN GOTO 3020
3010 INPUT W
3020 PRINT W
3030 PRINT "L (BEAM LENGTH-IN.)=";
3035 IF L>0 THEN GOTO 3050
3040 INPUT L
3050 PRINT L
3060 IF X<>3 THEN GOTO 3100
3070 PRINT "X (DIST-W TO NEAR SUPP)=";
3080 INPUT X1
3090 PRINT X1
3100 RETURN
3500 PRINT
3502 PRINT "LOAD=";W*L;" IN.LBS."
3503 PRINT "SECTION=";D;" X ";B;" X ";T
3504 PRINT "MATL. STRENGTH =";S;" PSI"
3505 PRINT "STRESS (CRIT.PT.)=";INT S2;" PSI"
3510 PRINT "DEFL. (CRIT. PT.)=";(INT (U*1E6))/1E6;" IN."
3520 PRINT
3525 IF ABS S2<S THEN GOTO 3650
3530 PRINT
3600 FOR N=1 TO 10
3605 PRINT AT 14,8;" "
3608 FOR J=1 TO 3
3610 NEXT J
3615 PRINT AT 14,8;"% %O%V%E%R% %S%T%R%E%S%S%E%D% "
3620 FOR J=1 TO 6
3625 NEXT J
3630 NEXT N
3650 GOSUB 1600
3655 PRINT AT 20,5;"ENTER 5 FOR COPY"
3660 GOTO 1500
3800 COPY
3810 GOTO 1500
9900 CLS
9905 CLEAR
9910 PRINT AT 11,9;"START RECORDER"
9920 PRINT AT 13,14;"PRESS ENTER"
9930 INPUT Q$
9940 SAVE "STROMA%T"
9950 CLS
9960 RUN
9999 STOP
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.



