Varying type doesnot interpolate

I am new to shader programming. I am trying to draw a circle with glsl. My os is Ubuntu 12.04.I used a point with a Size and tried to filter out the points outside the radius.(Altering the alpha value).
The code is as follows:

Fragment Shader:
varying vec2 textureCoordinate;
const float circleBorderWidth = 0.08;//for anti aliasing
void main() {
float d = smoothstep(circleBorderWidth,0.1, 1.0-length(textureCoordinate));
gl_FragColor = vec4(0.0, 1.0, 0.0, d);
}

Vertex Shader:

attribute vec4 coord3d;
attribute vec2 varPos;
varying highp vec2 textureCoordinate;
void
main()
{
textureCoordinate = varPos;
gl_FrontColor = gl_Color;
gl_Position = vec4(coord3d.xyz,1.);
gl_PointSize = coord3d.w;
}

Data:

float pos[] = {
-1, -1,
-1, 1,
1, 1,
1, -1,
};

float vertices[]={0.0,0.0f,0.0f,100.0f};

My Draw Scene Method:

void drawScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
program->makeCurrent();
glEnable(GL_POINT_SMOOTH);
glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

if (varPosAttrib>=0) {
    glVertexAttribPointer( varPosAttrib, 2, GL_FLOAT, GL_FALSE,
                           0, pos );-->varPos in Vertex SHader.
    glEnableVertexAttribArray( varPosAttrib );
}

if (posAttrib>=0) {
    glVertexAttribPointer(posAttrib, 4, GL_FLOAT, GL_FALSE, 0, vertices); ->coord3d in vertex shader
    glEnableVertexAttribArray(posAttrib);
    glDrawArrays(GL_POINTS, 0, 1);
}
glDisable(GL_POINT_SMOOTH);
glDisable(GL_VERTEX_PROGRAM_POINT_SIZE);
glDisable(GL_BLEND);
program->release();
glutSwapBuffers(); //Send the 3D scene to the screen

}

This results in drawing a square if I replace d with 1.0 in the following line(in fragment shader):
gl_FragColor = vec4(0.0, 1.0, 0.0, d); -> if d is replace by 1.0

I tried to replace the x and y values in gl_FragColor with textureCoordinate.x and textureCoordinate.y. Result was black(so I assume the values are 0.0). Thing which I dont understand is that if I take the length of textureCoordinate than it is always 1.0.(experimented by replacing the value in gl_fragcolor). I am unable to figure out as to what I am doing wrong here. I was expecting the textureCoordinate value to interpolate w.r.t the passed in data(varPos).
Thanks for any pointers.

Hello,

you are drawing one point which is one vertex, so there is only one attribute value and nothing to be interpolated. Maybe you want to draw a quad or trianglestip consisting of 4 vertices? then the varying from these 4 vertices will get interpolated.