'SAVE "TGDTAASC.bas", A ' In order to read the result measured by Rigaku TMA ' 1993.04.27.-28.-06.05. File Converter "DTAtoASC.BAS" ' 1993.09.06- File Converter "DTAtoFPW.BAS" ' 1998.04.08- File Converter "TMA_ASC.BAS" ' 1998.04.08- File Converter "TGDTAASC.BAS" '==================================================================== ' File Converter "TGDTAASC.BAS" ' originally programmed by R.O.Suzuki 26.4.1992. ' ".DT" file in Rigaku Program --> ".DTA" ASCII Formated file ' to use >File Select Mode< 30.04.1993. ' Revised Ver.1.01 05.05.1993.-06.05.1993 ' Bug Fix Ver.1.02 07.05.1993. ' Bug Fix Ver.1.03 08.06.1993. ' ".DT" file in Rigaku Program --> ".HET"+".COL" ASCII Formated files ' Ver.2.00 06.09.1993. ' ".DM" file in Rigaku Program --> ".TMA" ASCII Formated files ' Ver.3.00 08.04.1998. ' Bug Fix Ver.3.01 08.04.1998. ' ".DGT" file in Rigaku Program --> ".GTA" ASCII Formated files ' Ver.4.00 08.04.1998. ' Bug Fix Ver.4.01 14.04.1998. '==================================================================== DECLARE SUB FileNameCheck (fil$, drive.name$, path.name$, org.fil$, extd.name$) DECLARE SUB ShowFiles (drive.name$, path.name$, ext$) DECLARE SUB GiveFileNames2 (fil$) DECLARE SUB WaitKey () DECLARE SUB OKjanein (OK$) DECLARE SUB CursolePositionNow (row%, column%) DECLARE SUB GetDirectoryName (directory$) DEFINT W CONST b = 2 '************** Main *************************************** GOSUB openning.messages: : ' Say Hallo! OK.confirm$ = "N" DO GOSUB get.filename: : ' get DGT file name GOSUB read.DGT.file: : ' Read + Show DGT file GOSUB confirm.DGT: : ' Confirm DGT file IF OK.confirm$ = "Y" THEN EXIT DO LOOP GOSUB select.ascii.type: : ' DATA file or FPW file? GOSUB set.01.files: : ' Set 0.1.file.names SELECT CASE sel% CASE 1: ' DATA file with time GOSUB read.write.01.file: : ' Read Data in 0.file CASE 2: ' FPW file (CSV type) GOSUB read.write.01.file.csv: END SELECT CLOSE ENDING: GOSUB ENDING.MESSAGES.0: END '======================= SUBROUTINES ============================= '--------------- Subroutine for DGT. files --------------------------------- select.ascii.type: DO CLS PRINT "Which file(s) do you want to write?" PRINT COLOR 2 PRINT " 1) Formated Data file with comma (compact type)" COLOR 7 PRINT PRINT " 1st line: sec, K, micro V, micro g" PRINT " 2nd line: ###.#,#####.##,#####.###,#####.###" PRINT " 3rd line: ###.#,#####.##,#####.###,#####.###" PRINT " ......................................." PRINT : COLOR 2 PRINT " 2) ASCII (CSV format) file with tab" COLOR 7 PRINT PRINT " (Temp.K) tab (micro V) tab (micro g)" PRINT " 1st line: #####.## => #####.### => #####.###" PRINT " 2nd line: #####.## => #####.### => #####.###" PRINT " ......................................." PRINT PRINT : COLOR 2 PRINT "Note; File size of 2 is smaller than that of 1." PRINT COLOR 7 INPUT " Which type "; sel% IF sel% = 1 OR sel% = 2 THEN EXIT DO LOOP RETURN read.write.01.file.csv: FOR wj = 1 TO MEASDATApoint% GET #1, wj GET #2, wj GET #4, wj e! = SAMPLINGTIME% / 10 * (wj - 1) f! = CVI(D0$) * .08 g! = CVI(D1$) * res h! = CVI(D2$) * restg ' PRINT "Nr.="; wj; PRINT USING "######.# "; e!; PRINT " sec "; PRINT USING "#####.## "; f!; PRINT " K "; PRINT USING "#######.###"; g!; PRINT " uV"; PRINT USING "#######.###"; h!; PRINT " ug" char$ = LTRIM$(STR$(INT(f! * 100 + .5) / 100)) char$ = char$ + CHR$(9) + LTRIM$(STR$(INT(g! * 1000 + .5) / 1000)) char$ = char$ + CHR$(9) + LTRIM$(STR$(INT(h! * 1000 + .5) / 1000)) PRINT #3, char$ NEXT wj RETURN read.write.01.file: PRINT #3, " sec, K, miroVolt, microGram" FOR wj = 1 TO MEASDATApoint% GET #1, wj GET #2, wj GET #4, wj e! = SAMPLINGTIME% / 10 * (wj - 1) f! = CVI(D0$) * .08 g! = CVI(D1$) * res h! = CVI(D2$) * restg PRINT "Nr.="; wj; PRINT USING "######.# "; e!; PRINT " sec "; PRINT USING "#####.## "; f!; PRINT " K "; PRINT USING "#######.###"; g!; PRINT " uV"; PRINT USING "#######.###"; h!; PRINT " ug" PRINT #3, USING "######.#"; e!; PRINT #3, ","; PRINT #3, USING "####.##"; f!; PRINT #3, ","; PRINT #3, USING "######.###"; g!; PRINT #3, ","; PRINT #3, USING "######.###"; h! NEXT wj RETURN set.01.files: ON ERROR GOTO 0 FILE.0$ = drive.name1$ + path.name1$ + org.fil1$ + ".0" FILE.1$ = drive.name1$ + path.name1$ + org.fil1$ + ".1" FILE.2$ = drive.name1$ + path.name1$ + org.fil1$ + ".2" FILE.A$ = drive.name1$ + path.name1$ + org.fil1$ + ".GTA" OPEN FILE.0$ FOR RANDOM AS #1 LEN = 2 OPEN FILE.1$ FOR RANDOM AS #2 LEN = 2 OPEN FILE.A$ FOR OUTPUT AS #3 OPEN FILE.2$ FOR RANDOM AS #4 LEN = 2 FIELD #1, 2 AS D0$ FIELD #2, 2 AS D1$ FIELD #4, 2 AS D2$ RETURN '--------------- Subroutine for DGT. files --------------------------------- confirm.DGT: PRINT : PRINT : PRINT COLOR 5 PRINT " The above listed file is that you want to convert to ASCII ?"; COLOR 7 CALL OKjanein(OK$) OK.confirm$ = OK$ PRINT RETURN read.DGT.file: OPEN DGTFILE$ FOR RANDOM AS #1 LEN = 256 CLS FIELD #1, b AS DTAMODE$, b AS DSCMODE$, b AS TGMODE$, b AS TMAMODE$, b AS CH0RECSCALE$, b AS CH1RECSCALE$, b AS CH2RECSCALE$, b AS CH3RECSCALE$, b AS TGINITIAL$, b AS SAMPLINGTIME$, b AS RECDEVTIME$, b AS HCRATE$, b AS HCRATEUNIT$, b AS TARGETTEMP$ _ , b AS HOLDTIME$, b AS HOLDTIMEUNIT$, b AS MEASDATApoint$, 6 AS MEASMODE$, 20 AS SAMPLENAME$, 4 AS SAMPLESIZE$, 16 AS SAMPLEPAN$, 16 AS ATMOSPHERE$, 4 AS HCRATENUM$, 4 AS SAMPLINGDEV$, 8 AS MEASDATE$, 8 AS MEASTIME$, 4 AS CH1EXPRANGE$, 4 AS _ CH2EXPRANGE$, 16 AS OPERATERNAME$, 12 AS MEASFILENAME$, 12 AS BLUNKFILENAME$, 12 AS STANDSAMPLENAME$, 20 AS COMMENTS$, 4 AS TMASTANDSAMPCODE$, 12 AS DATAdiskname$, 6 AS USEDSYSTEMVER$ 'FIELD #1, 2 AS TMAINITIAL$ ' ? 2*(18/1)+6+20+4+16*2+4*2+8*2+4*2+16+12*3+20+4+12+6 = 222 GET #1, 1 DTAMODE% = CVI(DTAMODE$) DSCMODE% = CVI(DSCMODE$) TGMODE% = CVI(TGMODE$) TMAMODE% = CVI(TMAMODE$) CH0RECSCALE% = CVI(CH0RECSCALE$) CH1RECSCALE% = CVI(CH1RECSCALE$) CH2RECSCALE% = CVI(CH2RECSCALE$) CH3RECSCALE% = CVI(CH3RECSCALE$) TGINITIAL% = CVI(TGINITIAL$) 'TMAINITIAL% = CVI(TMAINITIAL$) SAMPLINGTIME% = CVI(SAMPLINGTIME$) RECDEVTIME% = CVI(RECDEVTIME$) HCRATE% = CVI(HCRATE$) HCRATEUNIT% = CVI(HCRATEUNIT$) HOLDTIME% = CVI(HOLDTIME$) HOLDTIMEUNIT% = CVI(HOLDTIMEUNIT$) TARGETTEMP% = CVI(TARGETTEMP$) MEASDATApoint% = CVI(MEASDATApoint$) ' MEASMODE$ ' SAMPLENAME$ SAMPLESIZE! = CVS(SAMPLESIZE$) ' SAMPLEPAN$ ' ATMOSPHERE$ HCRATENUM! = CVS(HCRATENUM$) SAMPLINGDEV! = CVS(SAMPLINGDEV$) ' MEASDATE$ ' MEASTIME$ CH1EXPRANGE! = CVS(CH1EXPRANGE$) CH2EXPRANGE! = CVS(CH2EXPRANGE$) ' OPERATERNAME$ ' MEASFILENAME$ ' BLUNKFILENAME$ ' STANDSAMPLENAME$ ' COMMENTS$ TMASTANDSAMPCODE! = CVS(TMASTANDSAMPCODE$) ' DATAdiskname$ ' USEDSYSTEMVER$ IF DTAMODE% = 1 THEN PRINT "DTA mode = Low"; IF DTAMODE% = 2 THEN PRINT "DTA mode = High"; PRINT " Resolution="; IF DTAMODE% = 1 THEN res = .04 IF DTAMODE% = 2 THEN res = .004 PRINT res; " uV" ' PRINT " DSCmode%="; DSCMODE%; ' PRINT " TGmode%="; TGMODE%; IF TGMODE% = 1 THEN PRINT "TG mode = MACRO "; IF TGMODE% = 2 THEN PRINT "TG mode = MICRO "; PRINT " Resolution="; IF TGMODE% = 1 THEN restg = .01 IF TGMODE% = 2 THEN restg = .002 PRINT restg; " mg" ' PRINT " TMAmode%="; TMAMODE%; 'IF TMAMODE% = 1 THEN PRINT " = Low :MACRO "; 'IF TMAMODE% = 2 THEN PRINT " = High :MICRO "; ' PRINT " Resolution="; 'IF TMAMODE% = 1 THEN res = .1 'IF TMAMODE% = 2 THEN res = .002 ' PRINT res; " um" PRINT " Ch0RecSCALE="; CH0RECSCALE%; PRINT " Ch1RecSCALE="; CH1RECSCALE%; PRINT " Ch2RecSCALE="; CH2RECSCALE%; PRINT " Ch3RecSCALE="; CH3RECSCALE% PRINT " "; PRINT " Ch1ExpRange="; CH1EXPRANGE!; PRINT " Ch2ExpRange="; CH2EXPRANGE! PRINT " TG Initial mass="; TGINITIAL% / 100; "mg" ' PRINT " TMA initial length="; TMAINITIAL%; " um" PRINT " Sampling Time="; SAMPLINGTIME% / 10; "sec."; PRINT " RecorderDerivativeTime="; 2 ^ (RECDEVTIME% + 2); "sec." PRINT " Heating and Cooling Rate="; HCRATE%; IF HCRATEUNIT% = 0 THEN PRINT "ßC/min." IF HCRATEUNIT% = 1 THEN PRINT "ßC/hr." IF HCRATEUNIT% = 2 THEN PRINT "ßC/sec." PRINT " Target Temperature ="; TARGETTEMP% / 10; "K, "; TARGETTEMP% / 10 - 273.15; "ßC." PRINT " Hold Time ="; HOLDTIME%; IF HOLDTIMEUNIT% = 0 THEN PRINT " min." IF HOLDTIMEUNIT% = 1 THEN PRINT " hr." IF HOLDTIMEUNIT% = 2 THEN PRINT " sec." PRINT " MeasDataPoint="; MEASDATApoint%; "Points "; PRINT " MeasMode= "; MEASMODE$ COLOR 2 PRINT " SampleName="; SAMPLENAME$; " " COLOR 7 PRINT " SampleSize="; SAMPLESIZE! PRINT " SamplePan="; SAMPLEPAN$; " and"; PRINT " Atmosphere="; ATMOSPHERE$ PRINT " HcRateNum!="; HCRATENUM!; PRINT " Sampling Interval="; SAMPLINGDEV! PRINT " Meassured Date="; MEASDATE$; PRINT " and Measured Time="; MEASTIME$ PRINT " OperaterName="; OPERATERNAME$ COLOR 2 PRINT " Meas.File.Name="; MEASFILENAME$; COLOR 7 PRINT " Blunk.File.Name="; BLUNKFILENAME$ PRINT " Standard Sample Name="; STANDSAMPLENAME$; PRINT " comments="; COMMENTS$ PRINT " TMAstandardSampleCODE!="; TMASTANDSAMPCODE!; PRINT " Data Disk Name = "; DATAdiskname$; PRINT " UsedSystemVer$="; USEDSYSTEMVER$ CLOSE #1 RETURN '--------------- Subroutine for files --------------------------------- ' get.filename: get.directory.name: CLS GOSUB openning.titles: LOCATE 12, 1 fil$ = "" GOSUB get.dirname.from.DOSset: IF wryo$ = "" THEN org.fil$ = "" DO IF fil$ <> "" THEN EXIT DO GOSUB get.dirname: LOOP END IF DO PRINT PRINT "Your wanted TG-DTA Files are in this Directory ? "; CALL OKjanein(OK$) IF OK$ = "Y" THEN EXIT DO CLS GOSUB openning.titles: LOCATE 12, 1 GOSUB get.dirname: LOOP CALL CursolePositionNow(row%, column%) drive.name1$ = drive.name$ path.name1$ = path.name$ get.real.filename: LOCATE row% - 1, 1: PRINT SPACE$(80) LOCATE row% - 1, 1 COLOR 3 PRINT " Please tell me your file_name within the above list." PRINT " You may type only file_name without DIRECTORY and <.DGT>." COLOR 7 PRINT CALL GiveFileNames2(fil$) CALL FileNameCheck(fil$, drive.name$, path.name$, org.fil$, extd.name$) IF drive.name$ <> "" THEN GOTO get.directory.name: IF path.name$ <> "" THEN GOTO get.directory.name: IF org.fil$ = "" THEN GOTO get.directory.name: org.fil1$ = org.fil$ DGTFILE$ = drive.name1$ + path.name1$ + org.fil$ + ".DGT" RETURN ' ++++++++++++++++++++++++++++++++++ get.dirname.from.DOSset: wryo$ = "" ON ERROR GOTO e2583err: wryo$ = ENVIRON$("RYO") 2852 ON ERROR GOTO 0 IF wryo$ <> "" THEN fil$ = wryo$ CALL FileNameCheck(fil$, drive.name$, path.name$, org.fil$, extd.name$) CALL ShowFiles(drive.name$, path.name$, "DGT") wryo$ = drive.name$ + path.name$ END IF RETURN e2583err: wryo$ = "" RESUME 2852 ' +++++++++++++++++++++++++++++++++++ get.dirname: PRINT COLOR 5: PRINT "Please give me your "; COLOR 3: PRINT "directory "; : COLOR 5 PRINT "which Rigaku DATA_files exist." PRINT COLOR 7 CALL GetDirectoryName(directory$) fil$ = directory$ CALL FileNameCheck(fil$, drive.name$, path.name$, org.fil$, extd.name$) CALL ShowFiles(drive.name$, path.name$, "DGT") RETURN '---------------------------------------------------------------- '---------------------------------------------------------------------- openning.messages: CLS GOSUB openning.titles: PRINT : PRINT PRINT : PRINT : PRINT CALL WaitKey COLOR 7 RETURN openning.titles: COLOR 11 PRINT STRING$(40, "<"); STRING$(40, ">") COLOR 6 PRINT PRINT " File Converter <<"; COLOR 12 PRINT "TG_DTA_ASC"; COLOR 6 PRINT ">> Ver.4.01 14 Apr.1998.": COLOR 3 PRINT " programmed by R.O.Suzuki." PRINT : PRINT : COLOR 2 PRINT " This program works to read <.DGT>+<.0>+<.1>+<.2> file in Rigaku PROGRAM, " PRINT " and to create a new ASCII file <.GTA> in the same DIRECTORY!" PRINT COLOR 11 PRINT STRING$(40, "<"); STRING$(40, ">") COLOR 7 RETURN ' ===================================================================== ENDING.MESSAGES.0: COLOR 2: PRINT : PRINT PRINT : PRINT " All converts were completed !!" PRINT : PRINT : PRINT COLOR 7 PRINT " ======= Your ASCII file ======= "; FILE.A$ PRINT : COLOR 7 PRINT " Have a good luck ! See you again !" PRINT : PRINT : PRINT CALL WaitKey CLS RETURN '---------------------------------------------------------------------- haupterrormodule: COLOR 4: PRINT : PRINT " Sorry! Files cannot be found!": PRINT : COLOR 7 RESUME ENDING: '---------------------------------------------------------------------- ' original by Ryosuke 88/sommer "RIETVELD ANALYSIS PROGRAMM" "RDRIETAN.BAS" ' refined by Tsu.Chie 89/09/12 ' improved by Ryosuke 90/01/25 Change of file name ' improved by Ryosuke 90/09/03 for MS-DOS mashine "RD_MRD.BAS" ' improved by MAEZAWA 90/10/01 compack ' re-programmed by Ryosuke 91/07/23 for MRD->RAW "MRD_RAW" ' merged to Quick BASIC 91/07/27-91/07/31 ' common subroutines are packaged 91/08/05-09 in ETH-Zuerich ' re-programed by "READ_RAW.BAS"+"MRD_RAW.BAS" 91/10/15 -> "RAW_FIG" ' re-programed for AutoCAD + FigP 92/01/11-13. -> "RAW_ASC" ' improved for AutoCAD 3D-solid mode 92/01/15. -> "RAW_ASC2" ' improved for RAW mode 92/03/30. -> "RAW_ASC3" ' re-programmed to "Zu.BAS" Ver.1.00 92/05/12-15. -> "ZU.BAS" ' debug for AutoCAD Texts Ver.2.10.0 92/07/20 -> "ZU2.BAS" ' exported to "DTAtoASC.BAS" 93/04/30 -> "DTAtoASC.BAS" ' improved ASCII format for NGraph 93/05/06 Ver.1.01 ' bug fix for K/C & sample weight 93/06/08 Ver.1.03 ' rewrite for FigP for WINDOWS 93/09/06 -> "DTAtoFPW.BAS" ' re-programmed to for TMA Ver.3.00 98/04/08 -> "TMA_ASC.BAS" ' re-programmed to for TG-DTA Ver.4.00 98/04/08 -> "TGDTAASC.BAS" SUB CursolePositionNow (row%, column%) row% = CSRLIN column% = POS(10) END SUB DEFINT I-J SUB FileNameCheck (fil$, drive.name$, path.name$, org.fil$, extd.name$) 'FileNamesCheck: ' Ryosuke O. Suzuki 30.07.1991. ' fil$: 'INPUT Parameter of this subroutine ' drive name = drive.name$: 'OUTPUT parameters ' path name = path.name$ 'OUTPUT parameters ' file_name = org.fil$ 'OUTPUT parameters ' extension = extd.name$ 'OUTPUT parameters ' fil$ = "a:\df\123.hhh": 'for exsample AAA$ = fil$ drive.name$ = "" path.name$ = "" org.fil$ = "" extd.name$ = "" DRIVE.CHECKS: IF RIGHT$(AAA$, 1) = ":" THEN drive.name$ = AAA$ GOTO subend: END IF LLEN = LEN(AAA$) IF LLEN >= 3 THEN IF MID$(AAA$, 2, 1) = ":" THEN drive.name$ = LEFT$(AAA$, 2) AAA$ = RIGHT$(AAA$, LLEN - 2) ELSE drive.name$ = "" AAA$ = AAA$ END IF END IF PASS.CHECKS: IF RIGHT$(AAA$, 1) = "\" THEN path.name$ = AAA$ GOTO subend: END IF IF AAA$ = "\" THEN path.name$ = "\" AAA$ = "" ELSE LLEN = LEN(AAA$) IF LLEN < 2 THEN path.name$ = "" ELSE FOR I = LLEN TO 1 STEP -1 IF MID$(AAA$, I, 1) = "\" THEN IPASS = I EXIT FOR END IF NEXT I path.name$ = LEFT$(AAA$, IPASS) AAA$ = RIGHT$(AAA$, LLEN - IPASS) END IF END IF EXTEND.CHECKS: LLEN = LEN(AAA$) IF LLEN >= 2 THEN FOR I = LLEN TO 1 STEP -1 IF MID$(AAA$, I, 1) = "." THEN IEXTD = I extd.name$ = RIGHT$(AAA$, LLEN - IEXTD) AAA$ = LEFT$(AAA$, IEXTD - 1) EXIT FOR END IF NEXT I END IF IF LEN(AAA$) > 8 THEN AAA$ = LEFT$(AAA$, 8) org.fil$ = AAA$ ' PRINT "drive name "; DRIVE.NAME$: 'OUTPUT parameters ' PRINT "Path name "; PATH.NAME$ ' PRINT "File_name "; ORG.FIL$ ' PRINT "Extension "; EXTD.NAME$ 'RETURN 'END subend: END SUB DEFSNG I-J SUB GetDirectoryName (directory$) COLOR 7 PRINT " Please give me the PATH_ and/or DRIVE_name." PRINT " Because Quick_BASIC does not accept \_KEY in some MS-DOS maschine," PRINT " please use !_key as \_key." PRINT COLOR 4 PRINT " Directory.Name = "; COLOR 3: INPUT directory$ COLOR 7 ChangeMark2: work.fil$ = "" FOR I = 1 TO LEN(directory$) IF MID$(directory$, I, 1) = "!" THEN work.fil$ = work.fil$ + "\" ELSE work.fil$ = work.fil$ + MID$(directory$, I, 1) END IF NEXT I directory$ = work.fil$ END SUB DEFINT I-J SUB GiveFileNames2 (fil$) PRINT : COLOR 7 PRINT " When RETURN is given, you can change DIRECTORY." PRINT COLOR 4 PRINT " File.Name = "; COLOR 3: INPUT fil$ COLOR 7 ChangeMark: work.fil$ = "" FOR I = 1 TO LEN(fil$) IF MID$(fil$, I, 1) = "!" THEN work.fil$ = work.fil$ + "\" ELSE work.fil$ = work.fil$ + MID$(fil$, I, 1) END IF NEXT I fil$ = work.fil$ END SUB SUB OKjanein (OK$) PRINT " OK ? (Y/N) "; tausch = 1 WHILE tausch aa$ = INKEY$ IF aa$ = "Y" OR aa$ = "y" THEN tausch = 0: OK$ = "Y" IF aa$ = "N" OR aa$ = "n" THEN tausch = 0: OK$ = "N" WEND PRINT OK$ END SUB SUB ShowFiles (drive.name$, path.name$, ext$) COLOR 5: PRINT STRING$(79, "=") COLOR 4: BEEP: PRINT "Path which you gave me is "; COLOR 3: PRINT drive.name$ + path.name$ COLOR 4: PRINT "Current Path is "; COLOR 7 ON ERROR GOTO haupterrormodule: FILES drive.name$ + path.name$ + "*." + ext$ COLOR 5: PRINT STRING$(79, "="): COLOR 7 END SUB DEFSNG I-J SUB WaitKey LOCATE 23, 27 COLOR 4 PRINT "Push Any Key !! " DO a$ = INKEY$ IF a$ <> "" THEN EXIT DO LOOP LOCATE 23, 27 PRINT " " COLOR 7 END SUB