Sunspots and Jupiter:

A Graphics Program in QBASIC

By Timo Niroma


REM Author: Timo Niroma
REM Influence of Jupiter's Year on the Sunspot Number
REM 02.1762 - 04.1999 = 237 years 3 months

REM -- Dimension Arrays--
REM read 2847 data points, use 2840, leave 7
DIM pilkkuluku(2846) 
REM one Jupiter YEAR = 142.34 months; set array dimension = 142
DIM etaisyys(141)


REM -- Set screen mode and print desciption --
CLS
SCREEN 12
PRINT "Monthly sunspots"
PRINT "Wolf numbers in years 1762-1999"
PRINT "Cycle length = one Jovian year (11.86 years)"
PRINT "20 cycles monthly = 20 times 142 months"
PRINT ""
PRINT "Every third Jovian year has one month omitted"
PRINT "to keep the synchrony,"
PRINT "because 142 months are used in a cycle,"
PRINT "and one Jovian year contains 142.34 months"
PRINT ""
PRINT "Months calculated beginning in Jovian perihelion = "
PRINT "month 0 (the first being February 1762)"

REM -- Open File --
REM  Replace the file name with your own
pilkut=3
OPEN "I",#pilkut,"c:\zurich\monthly.plt"

REM -- Load data to array --
i=0
WHILE NOT (EOF(3))
 INPUT #pilkut,vuosi,kuukausi,aurinko
 REM the first observations discarded because not reliable
 IF vuosi < 1762 THEN GOTO seuraava
 pilkkuluku(i)=400-aurinko
i=i+1

REM -- Close File --
seuraava:
WEND
CLOSE #pilkut

REM -- Shift Data to omit January 1762 --
pilkkuluku(0)=pilkkuluku(1)
REM -- plot data to screen -- the first Jovian year
FOR i=1 to 141
 pilkkuluku(i)=pilkkuluku(i+1)
NEXT
FOR j=1 to 141
  LINE (4*(j-1),pilkkuluku(142*i+j-1))-(4*j,pilkkuluku(142*i+j)), 
  vari
NEXT

REM -- plot data to screen -- the following 19 years
FOR i=1 TO 19
 IF i<10 THEN vari=2 ELSE vari=3
 REM -- negative leap month, omit every 3*142th month --
 k=(i/3)+1: 
 FOR j=0 to 141
  pilkkuluku(142*i+j)=pilkkuluku(142*i+j+k)
 NEXT
 FOR j=1 to 141
  LINE (4*(j-1),pilkkuluku(142*i+j-1))-(4*j,pilkkuluku(142*i+j)), 
  vari
 NEXT
NEXT


REM -- Print Chart Headers and Grid --

vari=4

FOR i=0 to 2
 LINE (284*i,150)-(284*i,400),vari
 IF i=0 THEN LOCATE 8,2: PRINT "PERIHELION"
 IF i=1 THEN LOCATE 8,35: PRINT "APHELION"
 IF i=2 THEN LOCATE 8,70: PRINT "PERIHELION"
NEXT

FOR i=0 to 5
 LINE (568,50*i+150)-(0,50*i+150),vari
 LOCATE 26-3.2*i,73: PRINT 50*i
NEXT

END

To get to the mankind's past home page click here.

To get to the sunspots home page click here.