home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / HAMRADIO / NETWORK2.LBR / NETWORK2.PZS / NETWORK2.PAS
Pascal/Delphi Source File  |  2000-06-30  |  15KB  |  446 lines

  1.  
  2. { THIS SECTION PRINTS THE TITLE AND REFERANCE INFO }
  3. LABEL 100,200,300,400,500;
  4.  
  5. BEGIN
  6.   CLRSCR;MF:=0.0;
  7.   SAME_TYPE:=FALSE;   { NOT EDITING SO SET TO FALSE }
  8.   WRITELN('                   RF NETWORK ANALYSIS PROGRAM');
  9.   WRITELN('                      by: WILLIAM L. MUNSON');
  10.   WRITELN('                  VERSION  1.1  -  OCT. 22 1987');
  11.   WRITELN;
  12.   WRITELN('NETWORK may be used for non-commercial purposes only.');
  13.   WRITELN('No commercial use of NETWORK may be made without the');
  14.   WRITELN('author',chr(39),'s express written permission.');WRITELN;
  15.   WRITELN('1)  Units are ohms, nH, pF, Mhz  and inches.');
  16.   writeln('2)  Maximum number of sections is Two Hundred.');
  17.   writeln('3)  IL(DB)= Insertion loss in dB.');
  18.   writeln('4)  RL(DB)= Return loss in dB.');
  19.   writeln('5)  VSWR  = Volatage Standing Wave Ratio.');
  20.   writeln('6)  RHO   = Reflection Coefficient.');
  21.   writeln('7)  ZIN(R)= Real part of input impedance.');
  22.   writeln('8)  ZIN(I)= Imag. part of input impedance.');writeln;
  23.   WRITELN('NOTE: The load resistance can be entered as a complex number.');
  24.   writeln;
  25.  
  26.  
  27. { THIS SECTION CHECKS FOR INPUT FROM FILE REQUEST }
  28. BEGIN
  29.  
  30. { THIS SECTION CLEARS ALL OF THE ARRAYS TO 0 }
  31.        I:=1;
  32.        REPEAT;
  33.           R[I]:=0;
  34.           C[I]:=0;
  35.           L[I]:=0;
  36.           ET[I]:=0;
  37.           I:=I+1
  38.        UNTIL I=201;
  39.  
  40.  
  41. 300: WRITE('DO YOU WANT A (N)EW OR A (S)AVED NETWORK? ');READLN(Q1);
  42.      IF (Q1='S') OR (Q1='s') THEN
  43.           BEGIN
  44.           CLRSCR;
  45.           WRITE('DO YOU WANT A DIRECTORY (Y/N)? ');READLN(FILENAME);
  46.           WRITELN;
  47.           IF (FILENAME='Y') OR (FILENAME='y') THEN FILES;
  48.           WRITELN;WRITELN;WRITE('WHAT IS THE NAME OF THE FILE? ');READLN(FILENAME);
  49.           ASSIGN(SAVEFILE,FILENAME);
  50.           RESET(SAVEFILE);
  51.           READLN(SAVEFILE,DATA);  {READ NUMBER OF SECTIONS}
  52.           REMOVEBLANKS;
  53.           VAL(DATA,NS,CODE);
  54.           READLN(SAVEFILE,DATA);  {READ SOURCE RESISTANCE}
  55.           REMOVEBLANKS;
  56.           VAL(DATA,RS,CODE);
  57.           READLN(SAVEFILE,DATA);
  58.           REMOVEBLANKS;
  59.           VAL(DATA,RL,CODE);
  60.           FOR N:=1 TO NS DO
  61.                BEGIN
  62.                READLN(SAVEFILE,DATA);
  63.                REMOVEBLANKS;
  64.                VAL(DATA,ET[N],CODE);
  65.                READLN(SAVEFILE,DATA);
  66.                REMOVEBLANKS;
  67.                VAL(DATA,R[N],CODE);
  68.                READLN(SAVEFILE,DATA);
  69.                REMOVEBLANKS;
  70.                VAL(DATA,L[N],CODE);
  71.                READLN(SAVEFILE,DATA);
  72.                REMOVEBLANKS;
  73.                VAL(DATA,C[N],CODE);
  74.                END;
  75.  
  76.           CLOSE(SAVEFILE);
  77.           END;
  78.  
  79.  
  80. { THIS SECTION INPUTS AND CHECKS THE NUMBER OF CIRCUIT ELEMENTS }
  81.  
  82.      IF (Q1<>'S') AND (Q1<>'s') THEN
  83.        BEGIN
  84.        CORRECT:=FALSE;
  85.        REPEAT;
  86.        WRITELN('HOW MANY SECTIONS  [MAX=200]');
  87.        WRITE('(DONT COUNT THE LOADS)? ');READLN(NS);
  88.        IF (NS>0) AND (NS<=200) THEN CORRECT:=TRUE
  89.        UNTIL CORRECT;
  90.        CORRECT:=FALSE;
  91.  
  92.        REPEAT;
  93.        WRITELN;WRITE('ENTER THE SOURCE RESISTANCE (OHMS)? ');
  94.        READLN(RS);IF RS>0.0 THEN CORRECT:=TRUE;
  95.        UNTIL CORRECT;
  96.        CORRECT:=FALSE;
  97.  
  98.  
  99. { THIS SECTION ENTERS THE COMPONENT VALUES INTO THE ARRAYS }
  100.  
  101.        N:=1;
  102.        REPEAT;
  103.        ENTER_ELEMENT_TYPE;
  104.        N:=N+1;
  105.        UNTIL N>NS;
  106.        CLRSCR;
  107.  
  108. { THIS SECTION ENTERS THE LOAD RESISTANCE }
  109.  
  110. 500: CORRECT:=FALSE;
  111.      BEGIN
  112.      WRITELN('TO ENTER A COMPLEX NUMBER FOR THE LOAD VALUE.');
  113.      WRITELN('USE THE SERIES EQUIVALENT FORM  EG.- (1.28+J12.45) or (1.28-J12.45)');
  114.      WRITELN;
  115.      REPEAT;
  116.        WRITELN;WRITE('LOAD RESISTANCE (OHMS)? ');READLN(DATA);
  117.      UNTIL LENGTH(DATA)>0;
  118.          CORRECT:=FALSE;
  119.          IF POS('J',DATA)>0 THEN CORRECT:=TRUE;
  120.          IF POS('j',DATA)>0 THEN CORRECT:=TRUE;
  121.          IF CORRECT THEN
  122.            BEGIN
  123.            WRITELN;WRITELN('WHAT IS THE FREQ. THAT THE COMPLEX NUMBER IS SPECIFIED AT? ');
  124.            WRITE('FREQUENCY (Mhz)? ');
  125.            READLN(FREQ);
  126.            NS:=NS+1;N:=N+1;      {MAKE ROOM FOR ONE MORE SECTION }
  127.            POSITION:=POS('+',DATA);
  128.            IF POSITION>0 THEN
  129.              BEGIN
  130.              RESIST:=COPY(DATA,1,POSITION-1);
  131.              IMAG:=COPY(DATA,POSITION+2,LENGTH(DATA)-POSITION);
  132.              INDUCT:=TRUE;
  133.              CALC_VALUES;
  134.              END;
  135.            POSITION:=POS('-',DATA);
  136.            IF POSITION>0 THEN
  137.              BEGIN
  138.              RESIST:=COPY(DATA,1,POSITION-1);
  139.              IMAG:=COPY(DATA,POSITION+2,LENGTH(DATA)-POSITION);
  140.              INDUCT:=FALSE;
  141.              CALC_VALUES;
  142.              END;
  143.            END;
  144. { THE NUMBER MUST NOT BE COMPLEX SO ASSUME IT IS JUST A SIMPLE VALUE }
  145.       IF NOT CORRECT THEN
  146.         BEGIN
  147.            REMOVEBLANKS;  {REMOVE ALL ILLEGAL CHAR FROM THE STRING}
  148.            VAL(DATA,RL,CODE);
  149.            IF CODE>0 THEN GOTO 500;
  150.         END;
  151.      END;
  152.   END;
  153. { THIS SECTION EDITS THE ELEMENT VALUES }
  154.  
  155.      WRITELN;WRITE('EDIT ELEMENTS (Y/N)? ');READLN(Q1);
  156. 200: IF (Q1='Y') OR (Q1='y') THEN
  157.      BEGIN
  158.      WRITELN('   ');
  159.      PRINT_ELEMENT_TABLE;
  160.      REPEAT;
  161.      WRITE('ENTER (S)OURCE, (L)OAD, ELEMENT #, OR (Q) TO QUIT ? ');
  162.      READLN(Q1);
  163.  
  164.      IF (Q1='S') OR (Q1='s') THEN
  165.           BEGIN
  166.           WRITE('SOURCE RESISTANCE (OHMS)? ');READLN(RS);
  167.           PRINT_ELEMENT_TABLE;
  168.           END;
  169.  
  170.      IF (Q1='L') OR (Q1='l') THEN
  171.           BEGIN
  172.            WRITE('LOAD RESISTANCE (OHMS)? ');READLN(RL);
  173.            PRINT_ELEMENT_TABLE;
  174.           END;
  175.  
  176.      VAL(Q1,N,CODE);
  177.      IF (CODE=0) AND (N>0) AND (N<=NS) THEN
  178.           BEGIN
  179.           WRITELN;WRITE('CHANGE ELEMENT TYPE (Y/N)? ');READLN(Q1);
  180.           IF (Q1='Y') OR (Q1='y') THEN SAME_TYPE:=FALSE ELSE SAME_TYPE:=TRUE;
  181.           ENTER_ELEMENT_TYPE;SAME_TYPE:=FALSE;
  182.           PRINT_ELEMENT_TABLE;
  183.           END;
  184.  
  185.      UNTIL (Q1='Q') OR (Q1='q');
  186.      END;
  187.  
  188. { THIS SECTION DEFINES OR EDITS THE FREQUENCY RANGE }
  189.  
  190.      CLRSCR;
  191. IF MF>0 THEN
  192.      BEGIN
  193.      WRITE('SAME FREQUENCY RANGE (Y/N)? ');READLN(Q1);
  194.      END;
  195.  
  196.  
  197. 100: IF (Q1='N') OR (Q1='n') OR (MF=0.0) THEN
  198.      BEGIN
  199.      WRITE('START FREQUENCY (Mhz)? ');READLN(MF);
  200.      WRITE('STEP FREQUENCY  (Mhz)? ');READLN(DF);
  201.      WRITE('NUMBER OF STEPS      ? ');READLN(NF);NF:=NF-1;
  202.      END;
  203.  
  204. WRITE('OUTPUT TO (S)CREEN OR (P)RINTER? ');READLN(Q1);
  205. IF Q1='p' THEN Q1:='P';
  206.  
  207. IF Q1='P' THEN
  208.   BEGIN
  209.   WRITELN('ENTER A DESCRIPTION OF THE NETWORK TO BE USED AS A HEADER ON THE PRINTOUT.');
  210.   WRITE('? ');READLN(DESCRIPTION);
  211.   END;
  212.  
  213. CLRSCR;
  214.  
  215. { THIS SECTION PRINTS THE HEADER INFO FOR THE SCREEN AND IF SELECTED
  216.    FOR THE PRINTER }
  217. WRITELN('   FREQ(Mhz)    IL(DB)     RL(DB)       VSWR        RHO      ZIN(R)    ZIN(I)');
  218.  
  219.  
  220. IF Q1='P' THEN
  221.      BEGIN
  222.      WRITELN(LST,'                    =================================== ');
  223.      WRITELN(LST,'                    RF NETWORK ANALYSIS PROGRAM VER 1.1');
  224.      WRITELN(LST,'                    ===================================');
  225.      WRITELN(LST,'');WRITELN(LST,DESCRIPTION);WRITELN(LST,'');
  226.      WRITELN(LST,'NETWORK LISTING.');WRITELN(LST,'');
  227.      WRITELN(LST,'ELEM  TYPE  DESCRIPTION                      R             L             C');
  228.      WRITELN(LST,'                                           (ZO)           (L)           (E)');
  229.      WRITELN(LST,'SOURCE R                           ',RS:14:3);
  230.      N:=1;REPEAT;
  231.      WRITE(LST,N:2,ET[N]:7,'   ');
  232.      PRINT_TYPE;
  233.      WRITELN(LST,R[N]:14:3,L[N]:14:3,C[N]:14:3);
  234.      N:=N+1;
  235.      UNTIL N>NS;
  236.      WRITELN(LST,'LOAD R                             ',RL:14:3);
  237.      WRITELN(LST,'');WRITELN(LST,'NOTE:   R,L,C ARE FOR ELEMENT TYPES 1-11.');
  238.      WRITELN(LST,'        ZO,L,E ARE FOR ELEMENT TYPES 12-16.');WRITELN(LST,'');
  239.      WRITELN(LST,'   FREQ(Mhz)    IL(DB)     RL(DB)       VSWR        RHO      ZIN(R)    ZIN(I)');
  240.  
  241.      END;
  242.  
  243.  
  244. { THIS SECTION SETS UP THE LOOPS WHICH CALCULATE THE GAIN AND IMPEDANCE OF
  245.    THE NETWORK.}
  246.  
  247.      CO:=MF+DF*NF*FR;K:=0.0;
  248.      WHILE K<=NF  DO  (* THIS IS THE START OF THE 'K' LOOP WHICH ENDS WHEN K>NF *)
  249.      BEGIN
  250.      F:=(MF+K*DF)*FR;W:=2.0*PI*F;
  251.      A1:=1.0;D1:=1.0;A4:=0.0;B1:=0.0;B4:=0.0;C1:=0.0;C4:=0.0;D4:=0.0;
  252.           N:=1;
  253.           WHILE N<=NS  DO  { THIS IS THE START OF THE 'N' LOOP WHICH ENDS WHEN N>NS }
  254.           BEGIN
  255.           IF ET[N]=1 THEN
  256.                BEGIN
  257.                RA:=1.0;IA:=0.0;RB:=R[N];IB:=0.0;RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  258.                END;
  259.  
  260.           IF ET[N]=2 THEN
  261.                BEGIN
  262.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RC:=1.0/R[N];IC:=0.0;RD:=1.0;ID:=0.0;
  263.                END;
  264.  
  265.           IF ET[N]=3 THEN
  266.                BEGIN
  267.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=W*L[N]*LC;RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  268.                END;
  269.  
  270.           IF ET[N]=4 THEN
  271.                BEGIN
  272.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RC:=0.0;IC:=-1.0/(W*L[N]*LC);RD:=1.0;ID:=0.0;
  273.                END;
  274.  
  275.           IF ET[N]=5 THEN
  276.                BEGIN
  277.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=-1/(W*C[N]*CC);RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  278.                END;
  279.  
  280.           IF ET[N]=6 THEN
  281.                BEGIN
  282.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RC:=0.0;IC:=W*C[N]*CC;RD:=1.0;ID:=0.0;
  283.                END;
  284.  
  285.           IF ET[N]=7 THEN
  286.                BEGIN
  287.                RA:=1.0;IA:=0.0;RB:=R[N];IB:=W*L[N]*LC-1/(W*C[N]*CC);
  288.                RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  289.                END;
  290.  
  291.           IF ET[N]=8 THEN
  292.                BEGIN
  293.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;V4:=SQR(W)*L[N]*LC*C[N]*CC-1;
  294.                RC:=W*W*SQR(C[N]*CC)*R[N]/(W*W*SQR(C[N]*CC)*SQR(R[N])+SQR(W*W*L[N]*LC*C[N]*CC-1));
  295.                IC:=-W*C[N]*CC*V4/(SQR(W)*SQR(C[N]*CC)*SQR(R[N])+SQR(V4));
  296.                RD:=1.0;ID:=0.0;
  297.                END;
  298.  
  299.           IF ET[N]=9 THEN
  300.                BEGIN
  301.                RB:=SQR(W)*R[N]*SQR(L[N]*LC)/(W*W*SQR(L[N]*LC)+SQR(R[N])*SQR(1-W*W*L[N]*LC*C[N]*CC));
  302.                RA:=1.0;IA:=0.0;T:=W*W*SQR(L[N]*LC)+SQR(R[N])*SQR(1-W*W*L[N]*LC*C[N]*CC);
  303.                IB:=W*L[N]*LC*R[N]*R[N]*(1-W*W*L[N]*LC*C[N]*CC)/T;RC:=0.0;IC:=0.0;RD:=1;ID:=0.0;
  304.                END;
  305.  
  306.           IF ET[N]=10 THEN
  307.                BEGIN
  308.                RC:=1/R[N];IC:=(-1+W*W*L[N]*LC*C[N]*CC)/(W*L[N]*LC);
  309.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RD:=1.0;ID:=0.0;
  310.                END;
  311.  
  312.           IF ET[N]=11 THEN
  313.                BEGIN
  314.                RB:=R[N]/(SQR(1-W*W*L[N]*LC*C[N]*CC)+SQR(W*C[N]*CC*R[N]));
  315.                IB:=W*(L[N]*LC*(1-W*W*L[N]*LC*C[N]*CC)-C[N]*CC*SQR(R[N]))*RB/R[N];
  316.                RA:=1.0;IA:=0.0;RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  317.                END;
  318.  
  319.           IF ET[N]=12 THEN
  320.                BEGIN
  321.                V3:=W*L[N]*CM*EXPON(C[N],0.5)/3.0E+10;RA:=COS(V3);IA:=0.0;RB:=0.0;IB:=R[N]*SIN(V3);
  322.                RC:=0.0;IC:=SIN(V3)/R[N];RD:=COS(V3);ID:=0.0;
  323.                END;
  324.  
  325.           IF ET[N]=13 THEN
  326.                BEGIN
  327.                V3:=W*L[N]*CM*EXPON(C[N],0.5)/3.0E+10;
  328.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RC:=0.0;IC:=TAN(V3)/R[N];RD:=1.0;ID:=0.0;
  329.                END;
  330.  
  331.           IF ET[N]=14 THEN
  332.                BEGIN
  333.                V3:=W*L[N]*CM*EXPON(C[N],0.5)/3.0E+10;
  334.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=0.0;RC:=0.0;IC:=-1/(TAN(V3)*R[N]);RD:=1.0;ID:=0.0;
  335.                END;
  336.  
  337.           IF ET[N]=15 THEN
  338.                BEGIN
  339.                V3:=W*L[N]*CM*EXPON(C[N],0.5)/3.0E+10;
  340.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=-R[N]/TAN(V3);RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  341.                END;
  342.  
  343.           IF ET[N]=16 THEN
  344.                BEGIN
  345.                V3:=W*L[N]*CM*EXPON(C[N],0.5)/3.0E+10;
  346.                RA:=1.0;IA:=0.0;RB:=0.0;IB:=R[N]*TAN(V3);RC:=0.0;IC:=0.0;RD:=1.0;ID:=0.0;
  347.                END;
  348.  
  349.           IF ET[N]=17 THEN
  350.                BEGIN
  351.                RA:=TR;IA:=0.0;RB:=0.0;IB:=0.0;RC:=0.0;IC:=0.0;RD:=1/TR;ID:=0.0;
  352.                END;
  353.  
  354. { THIS SECTION MULTIPLIES THE ABCD MATRICIES TOGETHER }
  355.  
  356.           A3:=A1*RA-A4*IA+B1*RC-B4*IC;A6:=A1*IA+A4*RA+B1*IC+B4*RC;
  357.           B3:=A1*RB-A4*IB+B1*RD-B4*ID;B6:=A1*IB+A4*RB+B1*ID+B4*RD;
  358.           C3:=C1*RA-C4*IA+D1*RC-D4*IC;C6:=C1*IA+C4*RA+D1*IC+D4*RC;
  359.           D3:=C1*RB-C4*IB+D1*RD-D4*ID;D6:=C1*IB+C4*RB+D4*RD+D1*ID;
  360.           A1:=A3;A4:=A6;B1:=B3;B4:=B6;C1:=C3;C4:=C6;D1:=D3;D4:=D6;
  361.           N:=N+1;
  362.  
  363.           END;  { END OF 'N' LOOP }
  364.  
  365. { THIS SECTION CALCULATES THE OUTPUT DATA }
  366.  
  367.           G:=(A3*RL+B3+C3*RS*RL+D3*RS)/RL; H:=(A6*RL+B6+C6*RS*RL+D6*RS)/RL;
  368.           II:=SQRT(SQR(G)+SQR(H));
  369.           NU[2]:=INT(-10*LN(RL*SQR(II)/(4*RS))/LN(10.0)*100.0+0.5)/100.0;
  370.           V1:=C3*RL+D3; V2:=C6*RL+D6; Q:=SQR(V1)+SQR(V2);
  371.           NU[6]:=INT(((A3*RL+B3)*V1+(A6*RL+B6)*V2)/Q*100.0+0.5)/100.0;
  372.           NU[7]:=INT(((A6*RL+B6)*V1-(A3*RL+B3)*V2)/Q*100.0+0.5)/100.0;
  373.           NU[1]:=INT(F*1000.0/(1.0E+6)+0.5)/1000.0;
  374.           R1:=SQRT(SQR(NU[6]-RS)+SQR(NU[7]));
  375.           R2:=SQRT(SQR(NU[6]+RS)+SQR(NU[7])); RO:=R1/R2;
  376.           IF RO=1.0 THEN RO:=0.999999;
  377.           NU[5]:=INT(RO*100.0+0.5)/100.0;
  378.           NU[3]:=-INT(20.0*LN(1/RO)/LN(10.0)*100.0+0.5)/100.0;
  379.           NU[4]:=INT((1.0+RO)/(1-RO)*100.0+0.5)/100.0;
  380.           I:=1;
  381.           REPEAT;
  382.                WRITE(NU[I]:11:2);
  383.                IF Q1='P' THEN WRITE(LST,NU[I]:11:2);
  384.                I:=I+1;
  385.           UNTIL I>7;
  386.           WRITELN;
  387.           IF Q1='P' THEN WRITELN(LST,'');
  388.           K:=K+1.0;
  389.      END;
  390.  
  391. { THIS SECTION HANDLES THE OPTIONS MENU SELECTIONS }
  392.  
  393.      WRITELN;
  394.      IF Q1='P' THEN WRITELN(LST,CHR(12));
  395. 400: REPEAT;
  396.      WRITE('(1)CHANGE FREQ (2)EDIT ELEMENTS (3)START OVER (4)QUIT OR (5)SAVE ? ');
  397. {$I-}
  398.      READLN(A);
  399.      UNTIL (A>0) AND (A<6) AND (IORESULT=0);
  400. {$I+}
  401.      CLRSCR;
  402.      IF A=1 THEN
  403.        BEGIN
  404.        Q1:='N';
  405.        GOTO 100;
  406.        END;
  407.      IF A=2 THEN
  408.        BEGIN
  409.        (*CLRSCR;*)
  410.        Q1:='Y';
  411.        GOTO 200;
  412.        END;
  413.      IF A=3 THEN GOTO 300;
  414.      IF A=5 THEN
  415.           BEGIN
  416.           WRITE('WHAT NAME TO SAVE THE NETWORK UNDER ? ');READLN(FILENAME);;
  417.           ASSIGN(SAVEFILE,FILENAME);
  418.           REWRITE(SAVEFILE);
  419.           STR(NS,DATA);
  420.           WRITELN(SAVEFILE,DATA);  {WRITE NUMBER OS SECTIONS TO FILE}
  421.           STR(RS,DATA);
  422.           WRITELN(SAVEFILE,DATA);  {WRITE SOURCE RESISTANCE TO FILE}
  423.           STR(RL,DATA);
  424.           WRITELN(SAVEFILE,DATA);  {WRITE LOAD RESISTANCE TO FILE}
  425.           FOR N:= 1 TO NS  DO
  426.                BEGIN
  427.                STR(ET[N],DATA);
  428.                WRITELN(SAVEFILE,DATA);  {WRITE ELEM TYPE TO FILE}
  429.                STR(R[N],DATA);
  430.                WRITELN(SAVEFILE,DATA);  {WRITE R VALUE TO FILE}
  431.                STR(L[N],DATA);
  432.                WRITELN(SAVEFILE,DATA);  {WRITE L VALUE TO FILE}
  433.                STR(C[N],DATA);
  434.                WRITELN(SAVEFILE,DATA);  {WRITE C VALUE TO FILE}
  435.                END;
  436.             CLOSE(SAVEFILE);
  437.           GOTO 400;
  438.           END;
  439.           END;
  440.  
  441. END.
  442.  
  443.  
  444.  
  445.  
  446.