VERSION 5.00 Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX" Begin VB.Form Form1 Caption = "Form1" ClientHeight = 1830 ClientLeft = 60 ClientTop = 345 ClientWidth = 4785 LinkTopic = "Form1" ScaleHeight = 1830 ScaleWidth = 4785 ShowInTaskbar = 0 'False StartUpPosition = 3 'Windows の既定値 Begin VB.TextBox Text2 Height = 270 Left = 360 TabIndex = 2 Text = "9.ラテン方格法" Top = 480 Width = 2535 End Begin MSComDlg.CommonDialog CommonDialog1 Left = 3840 Top = 1200 _ExtentX = 847 _ExtentY = 847 _Version = 393216 End Begin VB.CommandButton Command1 Caption = "0入力;学生用ファイル(*.js),その他の値;先生用ファイル(*.txt)作成 " Height = 855 Left = 1320 TabIndex = 1 Top = 960 Width = 2055 End Begin VB.TextBox Text1 Height = 495 Left = 240 TabIndex = 0 Top = 1200 Width = 735 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub command1_click() '9.ラテン方格法.0入力は学生,それ以外は教師用ファイル作成' Dim bango As Integer Dim yr, REP, HAN, num As Integer bango = Val(Text1.Text) CommonDialog1.ShowSave Open CommonDialog1.FileName For Output As #1 QQ = 0 Form1.AutoRedraw = True yr = Val(Mid$(Date$, 3, 4)) Print yr Randomize (yr + 19) Dim DUNC(2, 2), DU$(9, 9), X(20, 20) Dim m(9), MO(9), SD(9), K(9), L(9), T(2), q(9), MH(9) ' duncan data yomikomi DUNC(2, 1) = 6.085 DUNC(2, 2) = 6.085 ' t-value T(2) = 4.303 ' NH = 3: NR = 3 ' KURIKAESHI ' If bango = 0 Then GoTo NOBANGO Else For num = 1 To 9 Print #1, ""; num; " "; Next num For num = 10 To 99 Print #1, ""; num; " "; Next num Print #1, "
"
End If
NOBANGO:
 For REP = 1 To 100  'Number of students
 For HAN = 1 To 2    'Number of works per student
START:
 X(2, 1) = Int(Rnd * 4 + 1): X(1, 2) = Int(Rnd * 4 + 2): X(3, 3) = Int(Rnd * 4 + 1)
 X(1, 1) = Int(Rnd * 4 + 6): X(3, 2) = Int(Rnd * 4 + 8): X(2, 3) = Int(Rnd * 4 + 3)
 X(3, 1) = Int(Rnd * 4 + 2): X(2, 2) = Int(Rnd * 4 + 3): X(1, 3) = Int(Rnd * 4 + 1)
L810:
 GM = 0: GD = 0: TD = 0: YD = 0: HD = 0: TM = 0: YM = 0: CC = 0
 m(1) = X(2, 1) + X(1, 2) + X(3, 3)
 m(2) = X(1, 1) + X(3, 2) + X(2, 3)
 m(3) = X(3, 1) + X(2, 2) + X(1, 3)
 For i = 1 To 2: For j = 1 To 3 - i
 If m(i) = m(i + j) Then GoTo START
 Next j: Next i
 For i = 1 To NR: For j = 1 To NH: GD = GD + X(i, j) ^ 2: Next j: Next i
 GM = m(1) + m(2) + m(3): CF = GM ^ 2 / (NR * NH)
 GD = GD - CF
 For j = 1 To 3: For i = 1 To 3: TM = TM + X(i, j): Next i: TD = TD + TM ^ 2: TM = 0: Next j
 For j = 1 To 3: For i = 1 To 3: YM = YM + X(j, i): Next i: YD = YD + YM ^ 2: YM = 0: Next j
 TD = TD / 3 - CF: YD = YD / 3 - CF
 HD = (m(1) ^ 2 + m(2) ^ 2 + m(3) ^ 2) / 3 - CF
 MST = TD / 2: MSY = YD / 2: MSH = HD / 2
 ED = GD - TD - YD - HD: ER = ED / 2
 For i = 1 To 3: m(i) = m(i) / 3: Next i
 If ER < 0.01 Then GoTo START
 If MSH / ER < 20 Then GoTo START
 SXBAR = (ER / NR) ^ (1 / 2)
 DF = 2
  LSD = T(DF) * (2) ^ (1 / 2) * SXBAR
  'mean values sorting
  For i = 1 To NH - 1
  KK = i + 1
  For j = KK To NH
  If m(i) > m(j) Then GoTo L1110
  WORK = m(i): m(i) = m(j): m(j) = WORK
  Next j
L1110:
  Next i
  For i = 1 To NR - 1
  q(i) = SXBAR * DUNC(DF, i)
  Next i
  For j = 1 To NH - 1
  For i = 1 To NH - j
  Q2 = q(NH - i - j + 1)
  SA = m(j) - m(NH - i + 1)
  If SA < Q2 Then GoTo L1270
  CC = CC + 1
L1270:
  Next i
  Next j
  If CC < 2 Then GoTo START
  If CC = NH * (NH - 1) / 2 Then GoTo START
' ------------------------ '
 If bango = 0 Then GoTo FILEFORSTUDENT
' FILEOUT FOR SENSEI '
  If REP < 10 And HAN = 1 Then Print #1, ""
  If REP > 9 And HAN = 1 Then Print #1, ""
 Print #1, REP; "-"; HAN
 Print #1, "  B:";
 Print #1, X(1, 1);
 Print #1, "  A:";
 Print #1, X(1, 2);
 Print #1, "  C:";
 Print #1, X(1, 3)
 Print #1, "  A:";
 Print #1, X(2, 1);
 Print #1, "  C:";
 Print #1, X(2, 2);
 Print #1, "  B:";
 Print #1, X(2, 3)
 Print #1, "  C:";
 Print #1, X(3, 1);
 Print #1, "  B:";
 Print #1, X(3, 2);
 Print #1, "  A:";
 Print #1, X(3, 3)
 Print #1, "MEAN";
 For i = 1 To 3
 Print #1, "; No."; i; m(i);
 Next i
 Print #1,
 Print #1, "Sowa, SStotal, SStr, SSgyo, SSretu = ";
 Print #1, Format(GM, "####"); Format(GD + CF, "###.####"); "-"; Format(CF, "###.####"); ", "; Format((HD + CF) * 3, "###.####"); "/3-CF, ";
 Print #1, Format((TD + CF) * 3, "###.####"); "/3-CF, "; Format((YD + CF) * 3, "###.####"); "/3-cf"
 Print #1, "ANOVA Table"
 Print #1, "FACTOR       DF       SS         MS      F"
 Print #1, "TOTAL       8   ";
 Print #1, Format(GD, "000.000")
 Print #1, "SHORI       2   ";
 Print #1, Format(HD, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MSH, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MSH / ER, "000.000")
 Print #1, "RETU         2   ";
 Print #1, Format(TD, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MST, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MST / ER, "000.000")
 Print #1, "GYOU         2   ";
 Print #1, Format(YD, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MSY, "000.000");
 Print #1, Spc(4);
 Print #1, Format(MSY / ER, "000.000")
 Print #1, "ERROR       2   ";
 Print #1, Format(ED, "000.000");
 Print #1, Spc(4);
 Print #1, Format(ER, "000.000")
 Print #1, "F_value = 19.0, 99.0"
 For i = 1 To NH
 MO(i) = m(i)
 Next i
 Print #1, "Sorted means ";
 For i = 1 To NH
 Print #1, Format(m(i), "###.###");
 Print #1, Spc(4);
 Next i
 Print #1, " SXB,lsd,Tdf= ";
  Print #1, Format(SXBAR, "###.####");
  Print #1, Spc(4);
  Print #1, Format(LSD, "###.####");
  Print #1, Spc(4);
  Print #1, Format(T(DF), "##.###")
 MDF = DF
 ' ika subeteno sano kentei
 For i = 1 To NR - 1
 q(i) = SXBAR * DUNC(MDF, i)
 Next i
 For j = 1 To NH - 1
 For i = 1 To NH - j
 Print #1, j; "-"; NH - i + 1; "; ";
 Q2 = q(NH - i - j + 1)
 Print #1, "q("; NH - i - j + 2; ")= ";
 Print #1, Format(Q2, "###.###");
 SA = m(j) - m(NH - i + 1)
 Print #1, " SA= ";
 Print #1, Format(SA, "###.###");
 If SA > Q2 Then GoTo L1790 Else GoTo L1820
L1790:
 Print #1, " *"
 DU$(NH - i, j) = "* "
 GoTo L1840
L1820:
 Print #1, " S"
 DU$(NH - i, j) = "N"
L1840:
 Next i
 Next j
 ' duncan no kigou atoha tesagyou
 For i = 1 To NH - 1
 For j = 1 To i
 Print #1, DU$(i, j); "  ";
 Next j
 Print #1,
 Next i
GoTo TOBASU
' ====================== '
FILEFORSTUDENT:
 If HAN > 1 Then GoTo TOBU3
  Print #1, "jsDB[";
  Print #1, QQ;
  Print #1, "]='";
TOBU3:
 Print #1, " No. ", HAN, "
"; Print #1, " B:"; Print #1, X(1, 1); Print #1, " A:"; Print #1, X(1, 2); Print #1, " C:"; Print #1, X(1, 3), "
"; Print #1, " A:"; Print #1, X(2, 1); Print #1, " C:"; Print #1, X(2, 2); Print #1, " B:"; Print #1, X(2, 3), "
"; Print #1, " C:"; Print #1, X(3, 1); Print #1, " B:"; Print #1, X(3, 2); Print #1, " A:"; Print #1, X(3, 3), "
"; Print #1, "LSD= ", Format(LSD, "###.####"), "
"; TOBASU: Next HAN Print #1, "'" QQ = QQ + 1 Next REP Close #1 Form1.Print Form1.Print "OK" End Sub