A field device comprising: a program execution portion configured to perform a calculation using a detected value which is detected by the field device; a memory comprising a data buffer area configured to store digital data based on the detected value, a program area (152a, 152b) configured to store a program causing the program execution portion to repeatedly perform a calculation twice using the data, a first program buffer area configured to store intermediate data when the program execution portion executes the program a first time, a second program buffer area configured to store intermediate data when the program execution portion executes the program a second time, a first calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the first time according to the program, and a second calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the second time according to the program; and a calculation result comparator configured to compare the calculation result stored in the first calculation result storage buffer with the calculation result stored in the second calculation result storage buffer by determining whether the calculation result stored in the first calculation result storage buffer matches the calculation result stored in the second calculation result storage buffer, wherein in case it is determined that the calculation result stored in the first calculation result storage buffer matches the calculation result stored in the second calculation result storage buffer, the calculation result comparator is configured to determine that the soundness of the memory is maintained. a program execution portion configured to perform a calculation using a detected value which is detected by the field device; a memory comprising a data buffer area configured to store digital data based on the detected value, a program area (152a, 152b) configured to store a program causing the program execution portion to repeatedly perform a calculation twice using the data, a first program buffer area configured to store intermediate data when the program execution portion executes the program a first time, a second program buffer area configured to store intermediate data when the program execution portion executes the program a second time, a first calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the first time according to the program, and a second calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the second time according to the program; and a data buffer area configured to store digital data based on the detected value, a program area (152a, 152b) configured to store a program causing the program execution portion to repeatedly perform a calculation twice using the data, a first program buffer area configured to store intermediate data when the program execution portion executes the program a first time, a second program buffer area configured to store intermediate data when the program execution portion executes the program a second time, a first calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the first time according to the program, and a second calculation result storage buffer configured to store a result of the calculation performed by the program execution portion the second time according to the program; and a calculation result comparator configured to compare the calculation result stored in the first calculation result storage buffer with the calculation result stored in the second calculation result storage buffer by determining whether the calculation result stored in the first calculation result storage buffer matches the calculation result stored in the second calculation result storage buffer, wherein in case it is determined that the calculation result stored in the first calculation result storage buffer matches the calculation result stored in the second calculation result storage buffer, the calculation result comparator is configured to determine that the soundness of the memory is maintained.