QBASIC - Statements - Program - CHAIN
CHAIN filespec$

Overfører kontrollen til det basic-program som defineres med filespec$.

 

Kan fx bruges til kørsel af ad-hoc-programmer, som konstrueres af hovedprogrammet.
Her er fx et program, som kan evaluere formler indtastet af brugeren:

 

Hovedprogrammet: MAIN.BAS

- brugeren indtaster en formel med x som parameter - fx "3*x^2 + 4*x - 2"

- start, stop og step-værdier indtastes - fx 0, 10, 1

- så konstruerer programmet et basic-program EVAL.BAS, som kan evaluere den indtastede funktion

- med CHAIN udføres programmet
- som slutter med CHAIN tilbage til hovedprogrammet, så brugeren kan indtaste igen.

INPUT "Enter function: ", f$
IF f$ = "" THEN END
INPUT "Enter range: start, end, step: ", b, e, s

c$ = CHR$(34)  'anførselstegn "

OPEN "eval.bas" FOR OUTPUT AS #1
PRINT #1, "b =" + STR$(b)
PRINT #1, "e =" + STR$(e)
PRINT #1, "s =" + STR$(s)
PRINT #1, "PRINT " + c$ + "Evaluate: y = " + f$ + c$
PRINT #1, "FOR x = b TO e STEP s"
PRINT #1, "  PRINT " + c$ + "x =" + c$ + "; x, " + c$ + "y =" + c$ + ";"
PRINT #1, "  PRINT " + f$
PRINT #1, "NEXT"
PRINT #1, "CHAIN " + c$ + "main.bas" + c$
CLOSE

CHAIN "eval.bas"
 f$ : 3*x^2 + 4*x -2
  
 range : 0,10,1
  
    
 Følgende program konstrueres: 
  
 b = 0
 e = 10
 s = 1
 PRINT "Evaluate: y = 3*x^2 + 4*x -2"
 FOR x = b TO e STEP s
   PRINT "x ="; x, "y =";
   PRINT 3 * x ^ 2 + 4 * x - 2
 NEXT
 CHAIN "main.bas"

 

Variabler kan også overføres med COMMON, som skal angive de samme variabler i begge programmer:

COMMON b, e, s
INPUT "Enter function: ", f$
IF f$ = "" THEN END
INPUT "Enter range: start, end, step: ", b, e, s

c$ = CHR$(34)  'anførselstegn "

OPEN "eval.bas" FOR OUTPUT AS #1
PRINT #1, "COMMON b, e, s"
PRINT #1, "PRINT " + c$ + "Evaluate: y = " + f$ + c$
PRINT #1, "FOR x = b TO e STEP s"
PRINT #1, "  PRINT " + c$ + "x =" + c$ + "; x, " + c$ + "y =" + c$ + ";"
PRINT #1, "  PRINT " + f$
PRINT #1, "NEXT"
PRINT #1, "CHAIN " + c$ + "main.bas" + c$
CLOSE

CHAIN "eval.bas"
  
 f$ : 3*x^2 + 4*x -2
  
 range : 0,10,1
  
    
 Følgende program konstrueres: 
  
 COMMON b, e, s
 PRINT "Evaluate: y = 3*x^2 + 4*x -2"
 FOR x = b TO e STEP s
   PRINT "x ="; x, "y =";
   PRINT 3 * x ^ 2 + 4 * x - 2
 NEXT
 CHAIN "main.bas"

 

Når programmerne køres, fås fx følgende udskrift:
I MAIN.BAS indtaster brugeren en funktion og en range
EVAL.BAS udskriver "Evaluate..." og resultatlisten
MAIN.BAS er klar igen: brugeren kan indtaste en funktion - eller blot <enter>, så programmet stopper.

Enter function: 3*x^2 + 4*x -2
Enter range: start, end, step: 0,10,1
Evaluate: y = 3*x^2 + 4*x -2
x = 0         y =-2
x = 1         y = 5
x = 2         y = 18
x = 3         y = 37
x = 4         y = 62
x = 5         y = 93
x = 6         y = 130
x = 7         y = 173
x = 8         y = 222
x = 9         y = 277
x = 10        y = 338

Enter function: